Ini adalah Panduan Pengembang AWS CDK v2. CDK v1 yang lebih lama memasuki pemeliharaan pada 1 Juni 2022 dan mengakhiri dukungan pada 1 Juni 2023.
Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Gunakan AWS CloudFormation parameter dalam AWS Cloud Development Kit (AWS CDK) aplikasi untuk memasukkan nilai kustom ke dalam CloudFormation template yang disintesis saat penerapan.
Untuk pendahuluan, lihat Parameter dan AWS CDK.
Tentukan parameter di aplikasi CDK
Gunakan CfnParameter
kelas untuk menentukan parameter. Anda akan ingin menentukan setidaknya jenis dan deskripsi untuk sebagian besar parameter, meskipun keduanya secara teknis opsional. Deskripsi muncul ketika pengguna diminta untuk memasukkan nilai parameter di AWS CloudFormation konsol. Untuk informasi selengkapnya tentang jenis yang tersedia, lihat Jenis.
catatan
Anda dapat menentukan parameter dalam lingkup apa pun. Namun, kami merekomendasikan untuk menentukan parameter pada tingkat tumpukan sehingga ID logisnya tidak berubah saat Anda memfaktorkan ulang kode Anda.
const uploadBucketName = new CfnParameter(this, "uploadBucketName", {
type: "String",
description: "The name of the Amazon S3 bucket where uploaded files will be stored."});
Gunakan parameter
Sebuah CfnParameter instance mengekspos nilainya ke aplikasi CDK Anda melalui token. Seperti semua token, token parameter diselesaikan pada waktu sintesis. Tapi itu menyelesaikan referensi ke parameter yang ditentukan dalam AWS CloudFormation template (yang akan diselesaikan pada waktu penerapan), bukan ke nilai konkret.
Anda dapat mengambil token sebagai contoh dari Token
kelas, atau dalam string, daftar string, atau pengkodean numerik. Pilihan Anda tergantung pada jenis nilai yang dibutuhkan oleh kelas atau metode yang ingin Anda gunakan parameternya.
Properti | jenis nilai |
---|---|
value |
Token contoh kelas |
valueAsList |
Token direpresentasikan sebagai daftar string |
valueAsNumber |
Token direpresentasikan sebagai angka |
valueAsString |
Token direpresentasikan sebagai string |
Misalnya, untuk menggunakan parameter dalam Bucket
definisi:
const bucket = new Bucket(this, "amzn-s3-demo-bucket",
{ bucketName: uploadBucketName.valueAsString});
Terapkan aplikasi CDK yang berisi parameter
Saat Anda menerapkan AWS CloudFormation template yang dihasilkan melalui AWS CloudFormation konsol, Anda akan diminta untuk memberikan nilai untuk setiap parameter.
Anda juga dapat memberikan nilai parameter menggunakan CDK CLI cdk deploy
perintah, atau dengan menentukan nilai parameter dalam file tumpukan proyek CDK Anda.
Berikan nilai parameter dengan cdk deploy
Saat Anda menerapkan menggunakan CDK CLI cdk deploy
perintah, Anda dapat memberikan nilai parameter pada penerapan dengan --parameters
opsi.
Berikut ini adalah contoh struktur cdk deploy
perintah:
$
cdk deploy
stack-logical-id
--parametersstack-name
:parameter-name
=parameter-value
Jika aplikasi CDK Anda berisi satu tumpukan, Anda tidak perlu memberikan argumen ID logis tumpukan atau
nilai dalam stack-name
--parameters
opsi. CDK CLI akan secara otomatis menemukan dan memberikan nilai-nilai ini. Berikut ini adalah contoh yang menentukan uploadbucket
nilai untuk uploadBucketName
parameter tumpukan tunggal di aplikasi CDK kami:
$
cdk deploy --parameters
uploadBucketName
=uploadbucket
Berikan nilai parameter dengan cdk deploy untuk aplikasi multi-stack
Berikut ini adalah contoh aplikasi CDK di TypeScript yang berisi dua tumpukan CDK. Setiap tumpukan berisi instance bucket Amazon S3 dan parameter untuk menyetel nama bucket Amazon S3:
import * as cdk from 'aws-cdk-lib';
import { Construct } from 'constructs';
import * as s3 from 'aws-cdk-lib/aws-s3';
// Define the CDK app
const app = new cdk.App();
// First stack
export class MyFirstStack extends cdk.Stack {
constructor(scope: Construct, id: string, props?: cdk.StackProps) {
super(scope, id, props);
// Set a default parameter name
const bucketNameParam = new cdk.CfnParameter(this, 'bucketNameParam', {
type: 'String',
default: 'myfirststackdefaultbucketname'
});
// Define an S3 bucket
new s3.Bucket(this, 'MyFirstBucket', {
bucketName: bucketNameParam.valueAsString
});
}
}
// Second stack
export class MySecondStack extends cdk.Stack {
constructor(scope: Construct, id: string, props?: cdk.StackProps) {
super(scope, id, props);
// Set a default parameter name
const bucketNameParam = new cdk.CfnParameter(this, 'bucketNameParam', {
type: 'String',
default: 'mysecondstackdefaultbucketname'
});
// Define an S3 bucket
new s3.Bucket(this, 'MySecondBucket', {
bucketName: bucketNameParam.valueAsString
});
}
}
// Instantiate the stacks
new MyFirstStack(app, 'MyFirstStack', {
stackName: 'MyFirstDeployedStack',
});
new MySecondStack(app, 'MySecondStack', {
stackName: 'MySecondDeployedStack',
});
Untuk aplikasi CDK yang berisi banyak tumpukan, Anda dapat melakukan hal berikut:
-
Menyebarkan satu tumpukan dengan parameter — Untuk menyebarkan tumpukan tunggal dari aplikasi multi-tumpukan, berikan ID logis tumpukan sebagai argumen.
Berikut ini adalah contoh yang menyebarkan
MySecondStack
denganmynewbucketname
sebagai nilai parameter untukbucketNameParam
:$
cdk deploy
MySecondStack
--parametersbucketNameParam
='mynewbucketname'
-
Terapkan semua tumpukan dan tentukan nilai parameter untuk setiap tumpukan — Berikan
'*'
wildcard atau--all
opsi untuk menyebarkan semua tumpukan. Berikan--parameters
opsi beberapa kali dalam satu perintah untuk menentukan nilai parameter untuk setiap tumpukan. Berikut adalah contohnya:$
cdk deploy
'*'
--parametersMyFirstDeployedStack
:bucketNameParam
='mynewfirststackbucketname'
--parametersMySecondDeployedStack
:bucketNameParam
='mynewsecondstackbucketname'
-
Terapkan semua tumpukan dan tentukan nilai parameter untuk satu tumpukan — Berikan
'*'
wildcard atau--all
opsi untuk menyebarkan semua tumpukan. Kemudian, tentukan tumpukan untuk menentukan parameter untuk dalam--parameters
opsi. Berikut ini adalah contoh yang menerapkan semua tumpukan di aplikasi CDK dan menentukan nilai parameter untuk tumpukan.MySecondDeployedStack
AWS CloudFormation Semua tumpukan lain akan menyebarkan dan menggunakan nilai parameter default:$
cdk deploy
'*'
--parametersMySecondDeployedStack
:bucketNameParam
='mynewbucketname'
$
cdk deploy
--all
--parametersMySecondDeployedStack
:bucketNameParam
='mynewbucketname'
Berikan nilai parameter dengan cdk deploy untuk aplikasi dengan tumpukan bersarang
CDK CLI perilaku saat bekerja dengan aplikasi yang berisi tumpukan bersarang mirip dengan aplikasi multi-tumpukan. Perbedaan utamanya adalah, jika Anda ingin menyebarkan semua tumpukan bersarang, gunakan wildcard. '**'
'*'
Wildcard menyebarkan semua tumpukan tetapi tidak akan menyebarkan tumpukan bersarang. '**'
Wildcard menyebarkan semua tumpukan, termasuk tumpukan bersarang.
Berikut ini adalah contoh yang menyebarkan tumpukan bersarang sambil menentukan nilai parameter untuk satu tumpukan bersarang:
$
cdk deploy
'**'
--parametersMultiStackCdkApp/SecondStack
:bucketNameParam
='mysecondstackbucketname'
Untuk informasi selengkapnya tentang opsi cdk deploy
perintah, lihatcdk deploy.