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.
Sesuaikan AWS CDK bootstrap
Anda dapat menyesuaikan AWS Cloud Development Kit (AWS CDK) bootstrap dengan menggunakan Antarmuka Baris AWS CDK Perintah (AWS CDK CLI) atau dengan memodifikasi dan menerapkan template AWS CloudFormation bootstrap.
Untuk pengantar bootstrap, lihat. AWS CDK bootstrap
Topik
Gunakan CDK CLI untuk menyesuaikan bootstrap
Berikut ini adalah beberapa contoh bagaimana Anda dapat menyesuaikan bootstrap dengan menggunakan CDK CLI. Untuk daftar semua cdk bootstrap
opsi, lihatcdk bootstrap.
- Ganti nama bucket Amazon S3
-
Gunakan
--bootstrap-bucket-name
opsi untuk mengganti nama bucket Amazon S3 default. Ini mungkin mengharuskan Anda memodifikasi sintesis template. Untuk informasi selengkapnya, lihat Sesuaikan sintesis tumpukan CDK. - Ubah kunci enkripsi sisi server untuk bucket Amazon S3
-
Secara default, bucket Amazon S3 di stack bootstrap dikonfigurasi untuk menggunakan kunci AWS terkelola untuk enkripsi sisi server. Untuk menggunakan kunci terkelola pelanggan yang sudah ada, gunakan
--bootstrap-kms-key-id
opsi dan berikan nilai untuk kunci AWS Key Management Service (AWS KMS) yang akan digunakan. Jika Anda ingin lebih mengontrol kunci enkripsi, sediakan--bootstrap-customer-key
untuk menggunakan kunci yang dikelola pelanggan. - Lampirkan kebijakan terkelola ke peran penerapan yang diasumsikan oleh AWS CloudFormation
-
Secara default, tumpukan disebarkan dengan izin administrator penuh menggunakan kebijakan.
AdministratorAccess
Untuk menggunakan kebijakan terkelola Anda sendiri, gunakan--cloudformation-execution-policies
opsi dan berikan kebijakan ARNs terkelola untuk dilampirkan ke peran penerapan.Untuk memberikan beberapa kebijakan, berikan satu string, dipisahkan dengan koma:
$
cdk bootstrap --cloudformation-execution-policies
"arn:aws:iam::aws:policy/AWSLambda_FullAccess,arn:aws:iam::aws:policy/AWSCodeDeployFullAccess"
Untuk menghindari kegagalan penerapan, pastikan bahwa kebijakan yang Anda tentukan cukup untuk penerapan apa pun yang akan Anda lakukan ke lingkungan yang di-bootstrapped.
- Ubah kualifikasi yang ditambahkan ke nama sumber daya di tumpukan bootstrap Anda
-
Secara default,
hnb659fds
qualifier ditambahkan ke ID fisik sumber daya di tumpukan bootstrap Anda. Untuk mengubah nilai ini, gunakan--qualifier
opsi.Modifikasi ini berguna saat menyediakan beberapa tumpukan bootstrap di lingkungan yang sama untuk menghindari bentrokan nama.
Mengubah kualifikasi dimaksudkan untuk isolasi nama antara pengujian otomatis CDK itu sendiri. Kecuali Anda dapat dengan tepat mencakup izin IAM yang diberikan ke peran CloudFormation eksekusi, tidak ada manfaat isolasi izin untuk memiliki dua tumpukan bootstrap yang berbeda dalam satu akun. Oleh karena itu, biasanya tidak perlu mengubah nilai ini.
Saat Anda mengubah qualifier, aplikasi CDK Anda harus meneruskan nilai yang diubah ke stack synthesizer. Untuk informasi selengkapnya, lihat Sesuaikan sintesis tumpukan CDK.
-
Gunakan
--tags
opsi dalam formatKEY=VALUE
untuk menambahkan CloudFormation tag ke tumpukan bootstrap Anda. - Tentukan tambahan Akun AWS yang dapat diterapkan ke lingkungan yang sedang di-bootstrap
-
Gunakan
--trust
opsi untuk memberikan tambahan Akun AWS yang diizinkan untuk diterapkan ke lingkungan yang sedang di-bootstrap. Secara default, akun yang melakukan bootstrap akan selalu dipercaya.Opsi ini berguna ketika Anda melakukan bootstrap lingkungan yang CDK Pipeline dari lingkungan lain akan disebarkan ke.
Ketika Anda menggunakan opsi ini, Anda juga harus menyediakan
--cloudformation-execution-policies
.Untuk menambahkan akun tepercaya ke tumpukan bootstrap yang ada, Anda harus menentukan semua akun yang akan dipercaya, termasuk yang mungkin telah Anda sediakan sebelumnya. Jika Anda hanya memberikan akun baru untuk dipercaya, akun tepercaya sebelumnya akan dihapus.
Berikut ini adalah contoh yang mempercayai dua akun:
$
cdk bootstrap
⏳ Bootstrapping environment aws://123456789012/us-west-2... Trusted accounts for deployment: 234567890123, 987654321098 Trusted accounts for lookup: (none) Execution policies: arn:aws:iam::aws:policy/AdministratorAccess CDKToolkit: creating CloudFormation changeset... ✅ Environment aws://123456789012/us-west-2 bootstrapped.aws://123456789012/us-west-2
--trust234567890123
--trust987654321098
--cloudformation-execution-policiesarn:aws:iam::aws:policy/AdministratorAccess
- Tentukan tambahan Akun AWS yang dapat mencari informasi di lingkungan yang sedang di-bootstrap
-
Gunakan
--trust-for-lookup
opsi untuk menentukan Akun AWS yang diizinkan untuk mencari informasi konteks dari lingkungan yang di-bootstrap. Opsi ini berguna untuk memberikan izin akun untuk mensintesis tumpukan yang akan diterapkan ke lingkungan, tanpa benar-benar memberi mereka izin untuk menyebarkan tumpukan tersebut secara langsung. - Aktifkan perlindungan terminasi untuk tumpukan bootstrap
-
Jika tumpukan bootstrap dihapus, AWS sumber daya yang awalnya disediakan di lingkungan juga akan dihapus. Setelah lingkungan Anda di-bootstrap, kami menyarankan Anda untuk tidak menghapus dan membuat ulang tumpukan bootstrap lingkungan, kecuali jika Anda sengaja melakukannya. Sebagai gantinya, coba perbarui tumpukan bootstrap ke versi baru dengan menjalankan
cdk bootstrap
perintah lagi.Gunakan
--termination-protection
opsi untuk mengelola pengaturan perlindungan terminasi untuk tumpukan bootstrap. Dengan mengaktifkan perlindungan terminasi, Anda mencegah tumpukan bootstrap dan sumber dayanya terhapus secara tidak sengaja. Ini sangat penting jika Anda menggunakan CDK Pipelines karena tidak ada opsi pemulihan umum jika Anda secara tidak sengaja menghapus tumpukan bootstrap.Setelah mengaktifkan perlindungan penghentian, Anda dapat menggunakan AWS CloudFormation konsol AWS CLI atau untuk memverifikasi.
Untuk mengaktifkan perlindungan terminasi
-
Jalankan perintah berikut untuk mengaktifkan perlindungan terminasi pada tumpukan bootstrap baru atau yang sudah ada:
$
cdk bootstrap --termination-protection
-
Gunakan CloudFormation konsol AWS CLI atau untuk memverifikasi. Berikut ini adalah contoh, menggunakan AWS CLI. Jika Anda memodifikasi nama stack bootstrap Anda, ganti
CDKToolkit
dengan nama tumpukan Anda:$
aws cloudformation describe-stacks --stack-name
" trueCDKToolkit
--query "Stacks[0].EnableTerminationProtection
-
Ubah template bootstrap default
Ketika Anda membutuhkan lebih banyak kustomisasi daripada CDK CLI dapat menyediakan, Anda dapat memodifikasi template bootstrap sesuai kebutuhan. Kemudian, gunakan template untuk bootstrap lingkungan Anda.
Untuk memodifikasi dan menyebarkan template bootstrap default
-
Dapatkan template bootstrap default menggunakan
--show-template
opsi. Secara default, CDK CLI akan menampilkan template di jendela terminal Anda. Anda dapat memodifikasi CDK CLI perintah untuk menyimpan template ke mesin lokal Anda. Berikut adalah contohnya:$
cdk bootstrap --show-template
> my-bootstrap-template.yaml
-
Ubah template bootstrap sesuai kebutuhan. Setiap perubahan yang Anda buat harus mematuhi kontrak template bootstrap. Untuk informasi lebih lanjut tentang kontrak template bootstrap, lihat. Ikuti kontrak bootstrap
Untuk memastikan bahwa kustomisasi Anda tidak sengaja ditimpa nantinya oleh seseorang yang menjalankan
cdk bootstrap
menggunakan templat default, ubah nilai default parameter template.BootstrapVariant
CDK CLI hanya akan mengizinkan penimpaan tumpukan bootstrap dengan template yang memiliki versi yang samaBootstrapVariant
dan sama atau lebih tinggi dari template yang saat ini digunakan. -
Terapkan templat yang dimodifikasi menggunakan metode AWS CloudFormation penerapan pilihan Anda. Berikut ini adalah contoh yang menggunakan CDK CLI:
$
cdk bootstrap --template
my-bootstrap-template.yaml
Ikuti kontrak bootstrap
Agar aplikasi CDK Anda dapat diterapkan dengan benar, CloudFormation templat yang dihasilkan selama sintesis harus menentukan sumber daya yang dibuat dengan benar selama bootstrap. Sumber daya ini biasanya disebut sebagai sumber daya bootstrap. Bootstrapping menciptakan sumber daya di AWS lingkungan Anda yang digunakan oleh AWS CDK untuk melakukan penerapan dan mengelola aset aplikasi. Sintesis menghasilkan CloudFormation template dari setiap tumpukan CDK dalam aplikasi Anda. Template ini tidak hanya menentukan AWS sumber daya yang akan disediakan dari aplikasi Anda. Mereka juga menentukan sumber daya bootstrap untuk digunakan selama penerapan.
Selama sintesis, CDK CLI tidak tahu secara spesifik bagaimana AWS lingkungan Anda telah di-bootstrap. Sebaliknya, CDK CLI menghasilkan CloudFormation template berdasarkan synthesizer yang Anda konfigurasikan. Oleh karena itu, ketika Anda menyesuaikan bootstrap, Anda mungkin perlu menyesuaikan sintesis. Untuk petunjuk tentang menyesuaikan sintesis, lihatSesuaikan sintesis tumpukan CDK. Tujuannya adalah untuk memastikan bahwa CloudFormation template yang disintesis Anda kompatibel dengan lingkungan bootstrap Anda. Kompatibilitas ini disebut sebagai kontrak bootstrap.
Metode paling sederhana untuk menyesuaikan sintesis tumpukan adalah dengan memodifikasi DefaultStackSynthesizer
kelas dalam Stack
instance Anda. Jika Anda memerlukan penyesuaian di luar apa yang dapat ditawarkan kelas ini, Anda dapat menulis synthesizer Anda sendiri sebagai kelas yang mengimplementasikan IStackSynthesizer
(mungkin berasal dari). DefaultStackSynthesizer
Saat Anda menyesuaikan bootstrap, ikuti kontrak template bootstrap agar tetap kompatibel dengannya. DefaultStackSynthesizer
Jika Anda memodifikasi bootstrap di luar kontrak template bootstrap, Anda harus menulis synthesizer Anda sendiri.
Penentuan Versi
Template bootstrap harus berisi sumber daya untuk membuat parameter Amazon EC2 Systems Manager (SSM) dengan nama terkenal dan output untuk mencerminkan versi template:
Resources: CdkBootstrapVersion: Type: AWS::SSM::Parameter Properties: Type: String Name: Fn::Sub: '/cdk-bootstrap/${Qualifier}/version' Value: 4 Outputs: BootstrapVersion: Value: Fn::GetAtt: [CdkBootstrapVersion, Value]
Peran
DefaultStackSynthesizer
Dibutuhkan lima peran IAM untuk lima tujuan berbeda. Jika Anda tidak menggunakan peran default, Anda harus menentukan peran IAM Anda ARNs dalam DefaultStackSynthesizer
objek Anda. Perannya adalah sebagai berikut:
-
Peran penyebaran diasumsikan oleh CDK CLI dan dengan menyebarkan AWS CodePipeline ke lingkungan.
AssumeRolePolicy
Kontrolnya yang dapat menyebarkan ke lingkungan. Di template, Anda dapat melihat izin yang dibutuhkan peran ini. -
Peran pencarian diasumsikan oleh CDK CLI untuk melakukan pencarian konteks di suatu lingkungan.
AssumeRolePolicy
Kontrolnya yang dapat menyebarkan ke lingkungan. Izin yang dibutuhkan peran ini dapat dilihat di template. -
Peran penerbitan file dan peran penerbitan gambar diasumsikan oleh CDK CLI dan oleh AWS CodeBuild proyek untuk mempublikasikan aset ke dalam lingkungan. Mereka digunakan untuk menulis ke bucket Amazon S3 dan repositori Amazon ECR, masing-masing. Peran ini memerlukan akses tulis ke sumber daya ini.
-
Peran AWS CloudFormation eksekusi diteruskan ke AWS CloudFormation untuk melakukan penyebaran yang sebenarnya. Izinnya adalah izin yang akan dijalankan oleh penerapan. Izin diteruskan ke tumpukan sebagai parameter yang mencantumkan kebijakan ARNs terkelola.
Output
CDK CLI mengharuskan CloudFormation output berikut ada di tumpukan bootstrap:
-
BucketName
— Nama ember aset file. -
BucketDomainName
— Bucket aset file dalam format nama domain. -
BootstrapVersion
— Versi saat ini dari tumpukan bootstrap.
Riwayat template
Template bootstrap berversi dan berkembang seiring waktu dengan dirinya sendiri. AWS CDK Jika Anda menyediakan template bootstrap Anda sendiri, tetap up to date dengan template default kanonik. Anda ingin memastikan bahwa template Anda terus bekerja dengan semua fitur CDK. Untuk informasi selengkapnya, lihat Riwayat versi template bootstrap.