Sesuaikan AWS CDK bootstrap - AWS Cloud Development Kit (AWS CDK) v2

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

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.

Tambahkan tag ke tumpukan bootstrap

Gunakan --tags opsi dalam format KEY=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 aws://123456789012/us-west-2 --trust 234567890123 --trust 987654321098 --cloudformation-execution-policies arn:aws:iam::aws:policy/AdministratorAccess ⏳ 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.
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
  1. Jalankan perintah berikut untuk mengaktifkan perlindungan terminasi pada tumpukan bootstrap baru atau yang sudah ada:

    $ cdk bootstrap --termination-protection
  2. 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 CDKToolkit --query "Stacks[0].EnableTerminationProtection" true

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
  1. 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
  2. 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 sama BootstrapVariant dan sama atau lebih tinggi dari template yang saat ini digunakan.

  3. 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

DefaultStackSynthesizerDibutuhkan 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. AssumeRolePolicyKontrolnya 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. AssumeRolePolicyKontrolnya 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.