

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 sintesis tumpukan CDK
<a name="customize-synth"></a>

Anda dapat menyesuaikan sintesis tumpukan AWS Cloud Development Kit (AWS CDK) dengan memodifikasi synthesizer default, menggunakan synthesizer bawaan lain yang tersedia, atau membuat synthesizer Anda sendiri.

 AWS CDK menyertakan synthesizer bawaan berikut yang dapat Anda gunakan untuk menyesuaikan perilaku sintesis:
+  [https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.DefaultStackSynthesizer.html](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.DefaultStackSynthesizer.html)— Jika Anda tidak menentukan synthesizer, yang ini digunakan secara otomatis. [Ini mendukung penyebaran dan penerapan lintas akun menggunakan konstruksi CDK Pipelines.](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.pipelines-readme.html) Kontrak bootstrap memerlukan bucket Amazon S3 yang ada dengan nama yang dikenal, repositori Amazon ECR yang ada dengan nama yang dikenal, dan lima peran IAM yang ada dengan nama yang dikenal. Template bootstrap default memenuhi persyaratan ini.
+  [https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.CliCredentialsStackSynthesizer.html](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.CliCredentialsStackSynthesizer.html)- Kontrak bootstrap synthesizer ini memerlukan bucket Amazon S3 yang ada dan repositori Amazon ECR yang ada. Itu tidak memerlukan peran IAM apa pun. Untuk melakukan penerapan, synthesizer ini bergantung pada izin pengguna CDK CLI dan direkomendasikan untuk organisasi yang ingin membatasi kredenal penerapan IAM. Synthesizer ini tidak mendukung penerapan lintas akun atau CDK Pipelines.
+  [https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.LegacyStackSynthesizer.html](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.LegacyStackSynthesizer.html)— Synthesizer ini mengemulasi perilaku sintesis CDK v1. Kontrak bootstrap memerlukan bucket Amazon S3 yang ada dengan nama arbitrer dan mengharapkan lokasi aset diteruskan sebagai parameter tumpukan. CloudFormation Jika Anda menggunakan synthesizer ini, Anda harus menggunakan CDK CLI untuk melakukan penyebaran.

Jika tidak satu pun dari synthesizer bawaan ini sesuai untuk kasus penggunaan Anda, Anda dapat menulis synthesizer Anda sendiri sebagai kelas yang mengimplementasikan `IStackSynthesizer` atau melihat [synthesizer](https://constructs.dev/search?q=synthesizer&cdk=aws-cdk) dari Construct Hub.

## Sesuaikan `DefaultStackSynthesizer`
<a name="bootstrapping-custom-synth-default"></a>

`DefaultStackSynthesizer`Ini adalah synthesizer default untuk CDK AWS . Ini dirancang untuk memungkinkan penyebaran lintas akun aplikasi CDK, serta menyebarkan aplikasi CDK dari sistem CI/CD yang tidak memiliki dukungan eksplisit untuk CDK, tetapi mendukung penerapan reguler, seperti. AWS CloudFormation AWS CodePipeline Synthesizer ini adalah pilihan terbaik untuk sebagian besar kasus penggunaan.

### `DefaultStackSynthesizer`kontrak bootstrap
<a name="bootstrapping-custom-synth-default-contract"></a>

 `DefaultStackSynthesizer`membutuhkan kontrak bootstrap berikut. Ini adalah sumber daya yang harus dibuat selama bootstrap:


| Sumber daya Bootstrap | Deskripsi | Nama sumber daya default yang diharapkan | Tujuan | 
| --- | --- | --- | --- | 
|  Bucket Amazon S3  |  Ember pementasan  |  <ACCOUNT>cdk-hnb659fds-aset- - <REGION>  |  Menyimpan aset file.  | 
|  Repositori Amazon ECR  |  Repositori pementasan  |  <ACCOUNT>cdk-hnb659 - fds-container-assets - <REGION>  |  Menyimpan dan mengelola aset image Docker.  | 
|  Peran IAM  |  Menyebarkan peran  |  <ACCOUNT>cdk-hnb659 - fds-deploy-role - <REGION>  |  Diasumsikan oleh CDK CLI dan CodePipeline berpotensi untuk mengambil peran lain dan memulai AWS CloudFormation penerapan. Kebijakan kepercayaan peran ini mengontrol siapa yang dapat menyebarkan dengan AWS CDK di lingkungan ini AWS .  | 
|  Peran IAM  |   AWS CloudFormation peran eksekusi  |  <ACCOUNT>cdk-hnb659 - fds-cfn-exec-role - <REGION>  |  Peran ini digunakan oleh AWS CloudFormation untuk melakukan penyebaran. Kebijakan peran ini mengontrol operasi apa yang dapat dilakukan penyebaran CDK.  | 
|  Peran IAM  |  Peran pencarian  |  <ACCOUNT>cdk-hnb659 - fds-lookup-role - <REGION>  |  Peran ini digunakan ketika CDK CLI perlu melakukan pencarian konteks lingkungan. Kebijakan kepercayaan dari peran ini mengontrol siapa yang dapat mencari informasi di lingkungan.  | 
|  Peran IAM  |  Peran penerbitan file  |  <ACCOUNT>cdk-hnb659 - fds-file-publishing-role - <REGION>  |  Peran ini digunakan untuk mengunggah aset ke bucket pementasan Amazon S3. Diasumsikan dari peran penyebaran.  | 
|  Peran IAM  |  Peran penerbitan gambar  |  <ACCOUNT>cdk-hnb659 - fds-image-publishing-role - <REGION>  |  Peran ini digunakan untuk mengunggah gambar Docker ke repositori pementasan Amazon ECR. Diasumsikan dari peran penyebaran.  | 
|  Parameter SSM  |  Parameter versi bootstrap  |  /cdk-bootstrap/hnb659fds/ <version>  |  Versi template bootstrap. Ini digunakan oleh template bootstrap dan CDK CLI untuk memvalidasi persyaratan.  | 

Salah satu cara untuk menyesuaikan sintesis tumpukan CDK, adalah dengan memodifikasi file. [https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.DefaultStackSynthesizer.html](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.DefaultStackSynthesizer.html) Anda dapat menyesuaikan synthesizer ini untuk satu tumpukan CDK menggunakan `synthesizer` properti instance Anda. `Stack` Anda juga dapat memodifikasi `DefaultStackSynthesizer` semua tumpukan di aplikasi CDK menggunakan `defaultStackSynthesizer` properti instans Anda`App`.

### Ubah kualifikasi
<a name="bootstrapping-custom-synth-qualifiers"></a>

*Kualifikasi* ditambahkan ke nama sumber daya yang dibuat selama bootstrap. Secara default, nilainya adalah `hnb659fds`. Saat Anda memodifikasi qualifier selama bootstrap, Anda perlu menyesuaikan sintesis tumpukan CDK untuk menggunakan kualifikasi yang sama.

Untuk mengubah qualifier, konfigurasikan `qualifier` properti `DefaultStackSynthesizer` atau konfigurasikan qualifier sebagai kunci konteks dalam file proyek CDK Anda. `cdk.json`

Berikut ini adalah contoh konfigurasi `qualifier` properti dari: `DefaultStackSynthesizer`

**Example**  

```
new MyStack(this, 'MyStack', {
  synthesizer: new DefaultStackSynthesizer({
    qualifier: 'MYQUALIFIER',
  }),
});
```

```
new MyStack(this, 'MyStack', {
  synthesizer: new DefaultStackSynthesizer({
    qualifier: 'MYQUALIFIER',
  }),
})
```

```
MyStack(self, "MyStack",
    synthesizer=DefaultStackSynthesizer(
        qualifier="MYQUALIFIER"
))
```

```
new MyStack(app, "MyStack", StackProps.builder()
  .synthesizer(DefaultStackSynthesizer.Builder.create()
    .qualifier("MYQUALIFIER")
    .build())
  .build();
)
```

```
new MyStack(app, "MyStack", new StackProps
{
    Synthesizer = new DefaultStackSynthesizer(new DefaultStackSynthesizerProps
    {
        Qualifier = "MYQUALIFIER"
    })
});
```

```
func NewMyStack(scope constructs.Construct, id string, props *MyStackProps) awscdk.Stack {
	var sprops awscdk.StackProps
	if props != nil {
		sprops = props.StackProps
	}
	stack := awscdk.NewStack(scope, &id, &sprops)

	synth := awscdk.NewDefaultStackSynthesizer(&awscdk.DefaultStackSynthesizerProps{
		Qualifier: jsii.String("MYQUALIFIER"),
	})

	stack.SetSynthesizer(synth)

	return stack
}
```

Berikut ini adalah contoh konfigurasi qualifier sebagai kunci konteks di: `cdk.json`

```
{
  "app": "...",
  "context": {
    "@aws-cdk/core:bootstrapQualifier": "MYQUALIFIER"
  }
}
```

### Ubah nama sumber daya
<a name="bootstrapping-custom-synth-names"></a>

Semua `DefaultStackSynthesizer` properti lainnya berhubungan dengan nama-nama sumber daya dalam template bootstrap. Anda hanya perlu menyediakan salah satu properti ini jika Anda memodifikasi template bootstrap dan mengubah nama sumber daya atau skema penamaan.

Semua properti menerima placeholder khusus`${Qualifier}`,, `${AWS::Partition}``${AWS::AccountId}`, dan. `${AWS::Region}` Placeholder ini diganti dengan nilai `qualifier` parameter dan AWS partisi, ID akun, dan nilai AWS Region untuk lingkungan tumpukan, masing-masing.

Contoh berikut menunjukkan properti yang paling umum digunakan `DefaultStackSynthesizer` bersama dengan nilai defaultnya, seolah-olah Anda membuat instance synthesizer. Untuk daftar lengkapnya, lihat [https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.DefaultStackSynthesizerProps.html#properties](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.DefaultStackSynthesizerProps.html#properties):

**Example**  

```
new DefaultStackSynthesizer({
  // Name of the S3 bucket for file assets
  fileAssetsBucketName: 'cdk-${Qualifier}-assets-${AWS::AccountId}-${AWS::Region}',
  bucketPrefix: '',

  // Name of the ECR repository for Docker image assets
  imageAssetsRepositoryName: 'cdk-${Qualifier}-container-assets-${AWS::AccountId}-${AWS::Region}',
  dockerTagPrefix: '',

  // ARN of the role assumed by the CLI and Pipeline to deploy here
  deployRoleArn: 'arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-deploy-role-${AWS::AccountId}-${AWS::Region}',
  deployRoleExternalId: '',

  // ARN of the role used for file asset publishing (assumed from the CLI role)
  fileAssetPublishingRoleArn: 'arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-file-publishing-role-${AWS::AccountId}-${AWS::Region}',
  fileAssetPublishingExternalId: '',

  // ARN of the role used for Docker asset publishing (assumed from the CLI role)
  imageAssetPublishingRoleArn: 'arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-image-publishing-role-${AWS::AccountId}-${AWS::Region}',
  imageAssetPublishingExternalId: '',

  // ARN of the role passed to CloudFormation to execute the deployments
  cloudFormationExecutionRole: 'arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-cfn-exec-role-${AWS::AccountId}-${AWS::Region}',

  // ARN of the role used to look up context information in an environment
  lookupRoleArn: 'arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-lookup-role-${AWS::AccountId}-${AWS::Region}',
  lookupRoleExternalId: '',

  // Name of the SSM parameter which describes the bootstrap stack version number
  bootstrapStackVersionSsmParameter: '/cdk-bootstrap/${Qualifier}/version',

  // Add a rule to every template which verifies the required bootstrap stack version
  generateBootstrapVersionRule: true,

})
```

```
new DefaultStackSynthesizer({
  // Name of the S3 bucket for file assets
  fileAssetsBucketName: 'cdk-${Qualifier}-assets-${AWS::AccountId}-${AWS::Region}',
  bucketPrefix: '',

  // Name of the ECR repository for Docker image assets
  imageAssetsRepositoryName: 'cdk-${Qualifier}-container-assets-${AWS::AccountId}-${AWS::Region}',
  dockerTagPrefix: '',

  // ARN of the role assumed by the CLI and Pipeline to deploy here
  deployRoleArn: 'arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-deploy-role-${AWS::AccountId}-${AWS::Region}',
  deployRoleExternalId: '',

  // ARN of the role used for file asset publishing (assumed from the CLI role)
  fileAssetPublishingRoleArn: 'arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-file-publishing-role-${AWS::AccountId}-${AWS::Region}',
  fileAssetPublishingExternalId: '',

  // ARN of the role used for Docker asset publishing (assumed from the CLI role)
  imageAssetPublishingRoleArn: 'arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-image-publishing-role-${AWS::AccountId}-${AWS::Region}',
  imageAssetPublishingExternalId: '',

  // ARN of the role passed to CloudFormation to execute the deployments
  cloudFormationExecutionRole: 'arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-cfn-exec-role-${AWS::AccountId}-${AWS::Region}',

  // ARN of the role used to look up context information in an environment
  lookupRoleArn: 'arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-lookup-role-${AWS::AccountId}-${AWS::Region}',
  lookupRoleExternalId: '',

  // Name of the SSM parameter which describes the bootstrap stack version number
  bootstrapStackVersionSsmParameter: '/cdk-bootstrap/${Qualifier}/version',

  // Add a rule to every template which verifies the required bootstrap stack version
  generateBootstrapVersionRule: true,
})
```

```
DefaultStackSynthesizer(
  # Name of the S3 bucket for file assets
  file_assets_bucket_name="cdk-${Qualifier}-assets-${AWS::AccountId}-${AWS::Region}",
  bucket_prefix="",

  # Name of the ECR repository for Docker image assets
  image_assets_repository_name="cdk-${Qualifier}-container-assets-${AWS::AccountId}-${AWS::Region}",
  docker_tag_prefix="",

  # ARN of the role assumed by the CLI and Pipeline to deploy here
  deploy_role_arn="arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-deploy-role-${AWS::AccountId}-${AWS::Region}",
  deploy_role_external_id="",

  # ARN of the role used for file asset publishing (assumed from the CLI role)
  file_asset_publishing_role_arn="arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-file-publishing-role-${AWS::AccountId}-${AWS::Region}",
  file_asset_publishing_external_id="",

  # ARN of the role used for Docker asset publishing (assumed from the CLI role)
  image_asset_publishing_role_arn="arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-image-publishing-role-${AWS::AccountId}-${AWS::Region}",
  image_asset_publishing_external_id="",

  # ARN of the role passed to CloudFormation to execute the deployments
  cloud_formation_execution_role="arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-cfn-exec-role-${AWS::AccountId}-${AWS::Region}",

  # ARN of the role used to look up context information in an environment
  lookup_role_arn="arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-lookup-role-${AWS::AccountId}-${AWS::Region}",
  lookup_role_external_id="",

  # Name of the SSM parameter which describes the bootstrap stack version number
  bootstrap_stack_version_ssm_parameter="/cdk-bootstrap/${Qualifier}/version",

  # Add a rule to every template which verifies the required bootstrap stack version
  generate_bootstrap_version_rule=True,
)
```

```
DefaultStackSynthesizer.Builder.create()
  // Name of the S3 bucket for file assets
  .fileAssetsBucketName("cdk-${Qualifier}-assets-${AWS::AccountId}-${AWS::Region}")
  .bucketPrefix('')

  // Name of the ECR repository for Docker image assets
  .imageAssetsRepositoryName("cdk-${Qualifier}-container-assets-${AWS::AccountId}-${AWS::Region}")
  .dockerTagPrefix('')

  // ARN of the role assumed by the CLI and Pipeline to deploy here
  .deployRoleArn("arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-deploy-role-${AWS::AccountId}-${AWS::Region}")
  .deployRoleExternalId("")

  // ARN of the role used for file asset publishing (assumed from the CLI role)
  .fileAssetPublishingRoleArn("arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-file-publishing-role-${AWS::AccountId}-${AWS::Region}")
  .fileAssetPublishingExternalId("")

  // ARN of the role used for Docker asset publishing (assumed from the CLI role)
  .imageAssetPublishingRoleArn("arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-image-publishing-role-${AWS::AccountId}-${AWS::Region}")
  .imageAssetPublishingExternalId("")

  // ARN of the role passed to CloudFormation to execute the deployments
  .cloudFormationExecutionRole("arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-cfn-exec-role-${AWS::AccountId}-${AWS::Region}")

  .lookupRoleArn("arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-lookup-role-${AWS::AccountId}-${AWS::Region}")
  .lookupRoleExternalId("")

  // Name of the SSM parameter which describes the bootstrap stack version number
  .bootstrapStackVersionSsmParameter("/cdk-bootstrap/${Qualifier}/version")

  // Add a rule to every template which verifies the required bootstrap stack version
  .generateBootstrapVersionRule(true)
.build()
```

```
new DefaultStackSynthesizer(new DefaultStackSynthesizerProps
{
    // Name of the S3 bucket for file assets
    FileAssetsBucketName = "cdk-${Qualifier}-assets-${AWS::AccountId}-${AWS::Region}",
    BucketPrefix = "",

    // Name of the ECR repository for Docker image assets
    ImageAssetsRepositoryName = "cdk-${Qualifier}-container-assets-${AWS::AccountId}-${AWS::Region}",
    DockerTagPrefix = "",

    // ARN of the role assumed by the CLI and Pipeline to deploy here
    DeployRoleArn = "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-deploy-role-${AWS::AccountId}-${AWS::Region}",
    DeployRoleExternalId = "",

    // ARN of the role used for file asset publishing (assumed from the CLI role)
    FileAssetPublishingRoleArn = "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-file-publishing-role-${AWS::AccountId}-${AWS::Region}",
    FileAssetPublishingExternalId = "",

    // ARN of the role used for Docker asset publishing (assumed from the CLI role)
    ImageAssetPublishingRoleArn = "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-image-publishing-role-${AWS::AccountId}-${AWS::Region}",
    ImageAssetPublishingExternalId = "",

    // ARN of the role passed to CloudFormation to execute the deployments
    CloudFormationExecutionRole = "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-cfn-exec-role-${AWS::AccountId}-${AWS::Region}",

    LookupRoleArn = "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-lookup-role-${AWS::AccountId}-${AWS::Region}",
    LookupRoleExternalId = "",

    // Name of the SSM parameter which describes the bootstrap stack version number
    BootstrapStackVersionSsmParameter = "/cdk-bootstrap/${Qualifier}/version",

    // Add a rule to every template which verifies the required bootstrap stack version
    GenerateBootstrapVersionRule = true,
})
```

## Gunakan `CliCredentialsStackSynthesizer`
<a name="bootstrapping-custom-synth-cli"></a>

Untuk memodifikasi kredenal keamanan yang digunakan untuk memberikan izin selama penerapan CDK, Anda dapat menyesuaikan sintesis dengan menggunakan. [https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.CliCredentialsStackSynthesizer.html](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.CliCredentialsStackSynthesizer.html) Synthesizer ini bekerja dengan AWS sumber daya default yang dibuat selama bootstrap untuk menyimpan aset, seperti bucket Amazon S3 dan repositori Amazon ECR. Alih-alih menggunakan peran IAM default yang dibuat oleh CDK selama bootstrap, ia menggunakan kredensil keamanan aktor yang memulai penerapan. Oleh karena itu, kredensi keamanan aktor harus memiliki izin yang valid untuk melakukan semua tindakan penerapan. Diagram berikut menggambarkan proses penyebaran saat menggunakan synthesizer ini:

![\[Proses penyebaran menggunakan. CLICredentials StackSynthesizer\]](http://docs.aws.amazon.com/id_id/cdk/v2/guide/images/CliCredentialsStackSynthesizer-deploy-process_cdk_flowchart.png)


Saat menggunakan`CliCredentialsStackSynthesizer`:
+ Secara default, CloudFormation melakukan panggilan API di akun Anda menggunakan izin aktor. Oleh karena itu, identitas saat ini harus memiliki izin untuk membuat perubahan yang diperlukan pada AWS sumber daya di CloudFormation tumpukan, bersama dengan izin untuk melakukan CloudFormation operasi yang diperlukan, seperti `CreateStack` atau`UpdateStack`. Kemampuan penyebaran akan terbatas pada izin aktor.
+ Penerbitan dan CloudFormation penerapan aset akan dilakukan dengan menggunakan identitas IAM saat ini. Identitas ini harus memiliki izin yang cukup untuk membaca dari dan menulis ke bucket aset dan repositori.
+ Pencarian dilakukan menggunakan identitas IAM saat ini, dan pencarian tunduk pada kebijakannya.

Saat menggunakan synthesizer ini, Anda dapat menggunakan peran CloudFormation eksekusi terpisah dengan menentukannya menggunakan [`--role-arn`](ref-cli-cmd.md#ref-cli-cmd-options-role-arn)opsi dengan perintah CDK CLI apa pun.

### `CliCredentialsStackSynthesizer`kontrak bootstrap
<a name="bootstrapping-custom-synth-cli-contract"></a>

 `CliCredentialsStackSynthesizer`membutuhkan kontrak bootstrap berikut. Ini adalah sumber daya yang harus dibuat selama bootstrap:


| Sumber daya Bootstrap | Deskripsi | Nama sumber daya default yang diharapkan | Tujuan | 
| --- | --- | --- | --- | 
|  Bucket Amazon S3  |  Ember pementasan  |  <ACCOUNT>cdk-hnb659fds-aset- - <REGION>  |  Menyimpan aset file.  | 
|  Repositori Amazon ECR  |  Repositori pementasan  |  <ACCOUNT>cdk-hnb659 - fds-container-assets - <REGION>  |  Menyimpan dan mengelola aset image Docker.  | 

String `hnb659fds` dalam nama sumber daya disebut *qualifier*. Nilai defaultnya tidak memiliki signifikansi khusus. Anda dapat memiliki banyak salinan sumber daya bootstrap dalam satu lingkungan selama mereka memiliki kualifikasi yang berbeda. Memiliki banyak salinan dapat berguna untuk menjaga aset aplikasi yang berbeda di lingkungan yang sama terpisah.

Anda dapat menerapkan template bootstrap default untuk memenuhi `CliCredentialsStackSynthesizer` kontrak bootstrap. Template bootstrap default akan membuat peran IAM, tetapi synthesizer ini tidak akan menggunakannya. Anda juga dapat menyesuaikan template bootstrap untuk menghapus peran IAM.

### Memodifikasi `CliCredentialsStackSynthesizer`
<a name="bootstrapping-custom-synth-cli-modify"></a>

Jika Anda mengubah qualifier atau salah satu nama sumber daya bootstrap default selama bootstrap, Anda harus memodifikasi synthesizer untuk menggunakan nama yang sama. Anda dapat memodifikasi synthesizer untuk satu tumpukan atau untuk semua tumpukan di aplikasi Anda. Berikut ini adalah contohnya:

**Example**  

```
new MyStack(this, 'MyStack', {
  synthesizer: new CliCredentialsStackSynthesizer({
    qualifier: 'MYQUALIFIER',
  }),
});
```

```
new MyStack(this, 'MyStack', {
  synthesizer: new CliCredentialsStackSynthesizer({
    qualifier: 'MYQUALIFIER',
  }),
})
```

```
MyStack(self, "MyStack",
    synthesizer=CliCredentialsStackSynthesizer(
        qualifier="MYQUALIFIER"
))
```

```
new MyStack(app, "MyStack", StackProps.builder()
  .synthesizer(CliCredentialsStackSynthesizer.Builder.create()
    .qualifier("MYQUALIFIER")
    .build())
  .build();
)
```

```
new MyStack(app, "MyStack", new StackProps
{
    Synthesizer = new CliCredentialsStackSynthesizer(new CliCredentialsStackSynthesizerProps
    {
        Qualifier = "MYQUALIFIER"
    })
});
```

Contoh berikut menunjukkan properti yang paling umum digunakan `CliCredentialsStackSynthesizer` bersama dengan nilai defaultnya. Untuk daftar lengkapnya, lihat [https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.CliCredentialsStackSynthesizerProps.html](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.CliCredentialsStackSynthesizerProps.html):

**Example**  

```
new CliCredentialsStackSynthesizer({
  // Value for '${Qualifier}' in the resource names
  qualifier: 'hnb659fds',

  // Name of the S3 bucket for file assets
  fileAssetsBucketName: 'cdk-${Qualifier}-assets-${AWS::AccountId}-${AWS::Region}',
  bucketPrefix: '',

  // Name of the ECR repository for Docker image assets
  imageAssetsRepositoryName: 'cdk-${Qualifier}-container-assets-${AWS::AccountId}-${AWS::Region}',
  dockerTagPrefix: '',
})
```

```
new CliCredentialsStackSynthesizer({
  // Value for '${Qualifier}' in the resource names
  qualifier: 'hnb659fds',

  // Name of the S3 bucket for file assets
  fileAssetsBucketName: 'cdk-${Qualifier}-assets-${AWS::AccountId}-${AWS::Region}',
  bucketPrefix: '',

  // Name of the ECR repository for Docker image assets
  imageAssetsRepositoryName: 'cdk-${Qualifier}-container-assets-${AWS::AccountId}-${AWS::Region}',
  dockerTagPrefix: '',
})
```

```
CliCredentialsStackSynthesizer(
  # Value for '${Qualifier}' in the resource names
  qualifier="hnb659fds",

  # Name of the S3 bucket for file assets
  file_assets_bucket_name="cdk-${Qualifier}-assets-${AWS::AccountId}-${AWS::Region}",
  bucket_prefix="",

  # Name of the ECR repository for Docker image assets
  image_assets_repository_name="cdk-${Qualifier}-container-assets-${AWS::AccountId}-${AWS::Region}",
  docker_tag_prefix="",
)
```

```
CliCredentialsStackSynthesizer.Builder.create()
  // Value for '${Qualifier}' in the resource names
  .qualifier("hnb659fds")

  // Name of the S3 bucket for file assets
  .fileAssetsBucketName("cdk-${Qualifier}-assets-${AWS::AccountId}-${AWS::Region}")
  .bucketPrefix('')

  // Name of the ECR repository for Docker image assets
  .imageAssetsRepositoryName("cdk-${Qualifier}-container-assets-${AWS::AccountId}-${AWS::Region}")
  .dockerTagPrefix('')
.build()
```

```
new CliCredentialsStackSynthesizer(new CliCredentialsStackSynthesizerProps
{

    // Value for '${Qualifier}' in the resource names
    Qualifier = "hnb659fds",

    // Name of the S3 bucket for file assets
    FileAssetsBucketName = "cdk-${Qualifier}-assets-${AWS::AccountId}-${AWS::Region}",
    BucketPrefix = "",

    // Name of the ECR repository for Docker image assets
    ImageAssetsRepositoryName = "cdk-${Qualifier}-container-assets-${AWS::AccountId}-${AWS::Region}",
    DockerTagPrefix = "",
})
```

## Gunakan `LegacyStackSynthesizer`
<a name="bootstrapping-custom-synth-legacy"></a>

`LegacyStackSynthesizer`Mengemulasi perilaku penerapan CDK v1. Kredensi keamanan aktor yang melakukan penyebaran akan digunakan untuk menetapkan izin. Aset file akan diunggah ke bucket yang harus dibuat menggunakan AWS CloudFormation tumpukan bernama`CDKToolkit`. CDK CLI akan membuat repositori `aws-cdk/assets` ECR Amazon yang tidak dikelola bernama untuk menyimpan aset gambar Docker. Anda akan bertanggung jawab untuk membersihkan dan mengelola repositori ini. Tumpukan yang disintesis menggunakan hanya `LegacyStackSynthesizer` dapat digunakan menggunakan CDK CLI.

Anda dapat menggunakan `LegacyStackSynthesizer` jika Anda bermigrasi dari CDK v1 ke CDK v2, dan tidak dapat mem-bootstrap ulang lingkungan Anda. Untuk proyek baru, kami sarankan Anda tidak menggunakannya`LegacyStackSynthesizer`.

### `LegacyStackSynthesizer`kontrak bootstrap
<a name="bootstrapping-custom-synth-legacy-contract"></a>

 `LegacyStackSynthesizer`membutuhkan kontrak bootstrap berikut. Ini adalah sumber daya yang harus dibuat selama bootstrap:


| Sumber daya Bootstrap | Deskripsi | Nama sumber daya default yang diharapkan | Tujuan | 
| --- | --- | --- | --- | 
|  Bucket Amazon S3  |  Ember pementasan  |  <ACCOUNT>cdk-hnb659fds-aset- - <REGION>  |  Menyimpan aset file.  | 
|  CloudFormation keluaran  |  Keluaran nama ember  |  Tumpukan — `CDKToolkit`  Nama keluaran — `BucketName`   |   CloudFormation Output yang menjelaskan nama ember pementasan  | 

`LegacyStackSynthesizer`Itu tidak mengasumsikan keberadaan bucket Amazon S3 dengan nama tetap. Sebagai gantinya, CloudFormation template yang disintesis akan berisi tiga CloudFormation parameter untuk setiap aset file. Parameter ini akan menyimpan nama bucket Amazon S3, kunci objek Amazon S3, dan hash artefak untuk setiap aset file.

 Docker aset gambar akan dipublikasikan ke repositori Amazon ECR bernama. `aws-cdk/assets` Nama ini dapat diubah per aset. Repositori akan dibuat jika tidak ada.

 CloudFormation Tumpukan harus ada dengan nama default`CDKToolkit`. Tumpukan ini harus memiliki nama CloudFormation ekspor `BucketName` yang mengacu pada bucket pementasan.

Template bootstrap default memenuhi kontrak `LegacyStackSynthesizer` bootstrap. Namun, hanya bucket Amazon S3 dari sumber daya bootstrap template bootstrap yang akan digunakan. Anda dapat menyesuaikan template bootstrap untuk menghapus sumber daya bootstrap Amazon ECR, IAM, dan SSM.

### `LegacyStackSynthesizer`proses penyebaran
<a name="bootstrapping-custom-synth-legacy-deploy"></a>

Saat Anda menggunakan synthesizer ini, proses berikut dilakukan selama penerapan:
+ CDK CLI mencari CloudFormation tumpukan bernama `CDKToolkit` di lingkungan Anda. Dari tumpukan ini, CDK CLI membaca CloudFormation output bernama`BucketName`. Anda dapat menggunakan `--toolkit-stack-name` opsi dengan `cdk deploy` untuk menentukan nama tumpukan yang berbeda.
+ Kredensi keamanan aktor yang memulai penerapan akan digunakan untuk menetapkan izin untuk penerapan. Oleh karena itu, aktor harus memiliki izin yang cukup untuk melakukan semua tindakan penerapan. Ini termasuk membaca dan menulis ke bucket staging Amazon S3, membuat dan menulis ke repositori Amazon ECR, memulai dan memantau AWS CloudFormation penerapan, dan melakukan panggilan API apa pun yang diperlukan untuk penerapan.
+ Jika perlu, dan jika izin valid, aset file akan dipublikasikan ke bucket pementasan Amazon S3.
+ Jika perlu, dan jika izin valid, Docker aset gambar dipublikasikan ke repositori yang dinamai oleh `repositoryName` properti aset. Nilai defaultnya adalah `'aws-cdk/assets'` jika Anda tidak memberikan nama repositori.
+ Jika izin valid, AWS CloudFormation penerapan dilakukan. Lokasi bucket dan kunci pementasan Amazon S3 diteruskan sebagai parameter. CloudFormation 