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.
Parameter
Parameter adalah nilai khusus yang disediakan pada waktu penerapan. Parameter adalah fitur dari AWS CloudFormation. Karena AWS CloudFormation template AWS Cloud Development Kit (AWS CDK) mensintesis, ia juga menawarkan dukungan untuk parameter waktu penerapan.
Tentang parameter
Dengan menggunakan AWS CDK, Anda dapat menentukan parameter, yang kemudian dapat digunakan dalam properti konstruksi yang Anda buat. Anda juga dapat menerapkan tumpukan yang berisi parameter.
Saat menerapkan AWS CloudFormation template menggunakan AWS CDK Toolkit, Anda memberikan nilai parameter pada baris perintah. Jika Anda menerapkan template melalui AWS CloudFormation konsol, Anda akan diminta untuk nilai parameter.
Secara umum, kami merekomendasikan untuk tidak menggunakan AWS CloudFormation parameter dengan AWS CDK. Cara biasa untuk meneruskan nilai ke dalam AWS CDK aplikasi adalah nilai konteks dan variabel lingkungan. Karena tidak tersedia pada waktu sintesis, nilai parameter tidak dapat dengan mudah digunakan untuk kontrol aliran dan tujuan lain di aplikasi CDK Anda.
catatan
Untuk melakukan aliran kontrol dengan parameter, Anda dapat menggunakan CfnCondition
konstruksi, meskipun ini canggung dibandingkan dengan pernyataan asli. if
Menggunakan parameter mengharuskan Anda untuk memperhatikan bagaimana kode yang Anda tulis berperilaku pada waktu penerapan, dan juga pada waktu sintesis. Hal ini membuat lebih sulit untuk memahami dan bernalar tentang AWS CDK aplikasi Anda, dalam banyak kasus untuk sedikit manfaat.
Secara umum, lebih baik meminta aplikasi CDK Anda menerima informasi yang diperlukan dengan cara yang terdefinisi dengan baik dan menggunakannya langsung untuk mendeklarasikan konstruksi di aplikasi CDK Anda. AWS CloudFormation Template AWS CDK yang dihasilkan ideal adalah konkret, tanpa nilai yang tersisa untuk ditentukan pada waktu penerapan.
Namun, ada kasus penggunaan yang AWS CloudFormation parameternya cocok secara unik. Jika Anda memiliki tim terpisah yang mendefinisikan dan menerapkan infrastruktur, misalnya, Anda dapat menggunakan parameter untuk membuat templat yang dihasilkan lebih berguna secara luas. Juga, karena AWS CDK mendukung AWS CloudFormation parameter, Anda dapat menggunakan AWS CDK dengan AWS layanan yang menggunakan AWS CloudFormation template (seperti Service Catalog). AWS Layanan ini menggunakan parameter untuk mengonfigurasi template yang sedang digunakan.
Mendefinisikan parameter
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.
Menggunakan parameter
Sebuah CfnParameter
instance mengekspos nilainya ke AWS CDK aplikasi 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.
Misalnya, untuk menggunakan parameter dalam Bucket
definisi:
Menyebarkan dengan 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 CLI cdk deploy
perintah CDK, atau dengan menentukan nilai parameter dalam file tumpukan proyek CDK Anda.
Memberikan nilai parameter dengan cdk deploy
Saat Anda menerapkan menggunakan CLI cdk deploy
perintah CDK, Anda dapat memberikan nilai parameter saat penerapan dengan opsi. --parameters
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
Memberikan nilai parameter dengan cdk deploy untuk aplikasi multi-stack
Berikut ini adalah contoh aplikasi CDK 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 dalam 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'
Menyediakan nilai parameter dengan cdk deploy untuk aplikasi dengan tumpukan bersarang
CLIPerilaku CDK 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.