Dies ist der AWS CDK v2-Entwicklerhandbuch. Die ältere CDK Version 1 wurde am 1. Juni 2022 in die Wartung aufgenommen und der Support wurde am 1. Juni 2023 eingestellt.
Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Sie können die AWS Cloud Development Kit (AWS CDK) Stack-Synthese anpassen, indem Sie den Standardsynthesizer ändern, andere verfügbare integrierte Synthesizer verwenden oder Ihren eigenen Synthesizer erstellen.
AWS CDK Dazu gehören die folgenden integrierten Synthesizer, mit denen Sie das Syntheseverhalten anpassen können:
-
DefaultStackSynthesizer
— Wenn Sie keinen Synthesizer angeben, wird dieser automatisch verwendet. Es unterstützt kontenübergreifende Bereitstellungen und Bereitstellungen, die das Pipelines-Konstrukt verwenden. CDK Sein Bootstrap-Vertrag erfordert einen vorhandenen Amazon S3 S3-Bucket mit einem bekannten Namen, ein vorhandenes ECR Amazon-Repository mit einem bekannten Namen und fünf bestehende IAM Rollen mit bekannten Namen. Die Standard-Bootstrapping-Vorlage erfüllt diese Anforderungen. -
CliCredentialsStackSynthesizer
— Für den Bootstrap-Vertrag dieses Synthesizers sind ein vorhandener Amazon S3 S3-Bucket und ein vorhandenes ECR Amazon-Repository erforderlich. Es sind keine Rollen erforderlich. IAM Um Bereitstellungen durchzuführen, stützt sich dieser Synthesizer auf die Berechtigungen des CDK CLI Benutzer und wird für Organisationen empfohlen, die die Anmeldeinformationen für die IAM Bereitstellung einschränken möchten. Dieser Synthesizer unterstützt keine kontenübergreifenden Bereitstellungen oder Pipelines. CDK -
LegacyStackSynthesizer
— Dieser Synthesizer emuliert das v1-Syntheseverhalten. CDK Sein Bootstrap-Vertrag erfordert einen vorhandenen Amazon S3 S3-Bucket mit einem beliebigen Namen und erwartet, dass die Standorte der Assets als CloudFormation Stack-Parameter übergeben werden. Wenn Sie diesen Synthesizer verwenden, müssen Sie den CDK CLI um die Bereitstellung durchzuführen.
Anpassen der DefaultStackSynthesizer
Der DefaultStackSynthesizer
ist der Standard-Synthesizer für den. AWS CDK Er ist so konzipiert, dass er kontenübergreifende Bereitstellungen von CDK Anwendungen sowie die Bereitstellung von CDK Apps über ein CI/CD-System ermöglicht, das zwar nicht ausdrücklich unterstützt AWS CDK, aber reguläre CloudFormation Bereitstellungen unterstützt, wie z. AWS CodePipeline Dieser Synthesizer ist für die meisten Anwendungsfälle die beste Option.
DefaultStackSynthesizer
Bootstrap-Vertrag
DefaultStackSynthesizer
erfordert den folgenden Bootstrap-Vertrag. Dies sind die Ressourcen, die beim Bootstrapping erstellt werden müssen:
Bootstrap-Ressource | Beschreibung | Standardname der erwarteten Ressource | Zweck |
---|---|---|---|
Amazon-S3-Bucket |
Staging-Bucket |
cdk-hnb659fds-Vermögenswerte- - |
Speichert Datei-Assets. |
ECRAmazon-Repository |
Bereitstellen eines Repositorys |
cdk-hnb659 - - fds-container-assets |
Speichert und verwaltet Docker Bild-Assets. |
IAM-Rolle |
Rolle bereitstellen |
cdk-hnb659 - fds-deploy-role - |
Angenommen von der CDK CLI und möglicherweise andere Rollen CodePipeline zu übernehmen und die AWS CloudFormation Bereitstellung zu starten. Die Vertrauensrichtlinie dieser Rolle legt fest, wer mit der AWS CDK in dieser AWS Umgebung arbeiten kann. |
IAM-Rolle |
AWS CloudFormation Rolle „Ausführung“ |
cdk-hnb659 - fds-cfn-exec-role - |
Diese Rolle wird von AWS CloudFormation verwendet, um die Bereitstellung durchzuführen. Die Richtlinien dieser Rolle steuern, welche Operationen die CDK Bereitstellung ausführen kann. |
IAM-Rolle |
Rolle nachschlagen |
cdk-hnb659 - fds-lookup-role - |
Diese Rolle wird verwendet, wenn CDK CLI muss nach Umgebungskontexten suchen. Die Vertrauensrichtlinie dieser Rolle bestimmt, wer in der Umgebung nach Informationen suchen kann. |
IAM-Rolle |
Rolle beim Veröffentlichen von Dateien |
cdk-hnb659 - fds-file-publishing-role - |
Diese Rolle wird verwendet, um Assets in den Amazon S3 S3-Staging-Bucket hochzuladen. Sie wird von der Bereitstellungsrolle übernommen. |
IAM-Rolle |
Rolle beim Veröffentlichen von Bildern |
cdk-hnb659 - fds-image-publishing-role - |
Diese Rolle wird zum Hochladen verwendet Docker Bilder in das ECR Amazon-Staging-Repository. Es wird von der Bereitstellungsrolle übernommen. |
SSM Parameter |
Bootstrap-Versionsparameter |
/cdk-bootstrap/hnb659fds/ |
Die Version der Bootstrap-Vorlage. Sie wird von der Bootstrap-Vorlage und der CDK CLI um Anforderungen zu validieren. |
Eine Möglichkeit, die CDK Stack-Synthese anzupassen, besteht darin, die zu ändernDefaultStackSynthesizer
. Sie können diesen Synthesizer mithilfe der synthesizer
Eigenschaft Ihrer Stack
Instanz für einen einzelnen CDK Stack anpassen. Sie können mithilfe der defaultStackSynthesizer
Eigenschaft Ihrer Instanz auch Änderungen DefaultStackSynthesizer
für alle Stacks in Ihrer CDK App
App vornehmen.
Ändern Sie den Qualifier
Der Qualifier wird dem Namen der Ressourcen hinzugefügt, die beim Bootstrapping erstellt wurden. Dieser Wert ist standardmäßig hnb659fds
. Wenn Sie den Qualifier beim Bootstrapping ändern, müssen Sie die CDK Stack-Synthese so anpassen, dass derselbe Qualifier verwendet wird.
Um den Qualifier zu ändern, konfigurieren Sie die qualifier
Eigenschaft von DefaultStackSynthesizer
oder konfigurieren Sie den Qualifier als Kontextschlüssel in der Datei Ihres Projekts. CDK cdk.json
Im Folgenden finden Sie ein Beispiel für die Konfiguration der qualifier
Eigenschaft von: DefaultStackSynthesizer
new MyStack(this, 'MyStack', {
synthesizer: new DefaultStackSynthesizer({
qualifier: 'MYQUALIFIER',
}),
});
Im Folgenden finden Sie ein Beispiel für die Konfiguration des Qualifizierers als Kontextschlüssel incdk.json
:
{
"app": "...",
"context": {
"@aws-cdk/core:bootstrapQualifier": "MYQUALIFIER"
}
}
Ressourcennamen ändern
Alle anderen DefaultStackSynthesizer
Eigenschaften beziehen sich auf die Namen der Ressourcen in der Bootstrap-Vorlage. Sie müssen diese Eigenschaften nur angeben, wenn Sie die Bootstrap-Vorlage und die Ressourcennamen oder das Benennungsschema geändert haben.
Alle Eigenschaften akzeptieren die speziellen Platzhalter${Qualifier}
, ${AWS::Partition}
${AWS::AccountId}
, und. ${AWS::Region}
Diese Platzhalter werden jeweils durch die Werte des qualifier
Parameters und der AWS Partition, die Konto-ID und die AWS-Region Werte für die Umgebung des Stacks ersetzt.
Das folgende Beispiel zeigt die am häufigsten verwendeten Eigenschaften für DefaultStackSynthesizer
zusammen mit ihren Standardwerten, als ob Sie den Synthesizer instanziieren würden. Eine vollständige Liste finden Sie unter: DefaultStackSynthesizerProps
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,
})
Verwenden von CliCredentialsStackSynthesizer
Um die Sicherheitsanmeldedaten zu ändern, die für die Bereitstellung von Berechtigungen bei CDK Bereitstellungen verwendet werden, können Sie die Synthese anpassen, indem CliCredentialsStackSynthesizer
Sie. Dieser Synthesizer arbeitet mit den AWS Standardressourcen, die beim Bootstrapping erstellt werden, um Ressourcen zu speichern, z. B. den Amazon S3 S3-Bucket und das Amazon-Repository. ECR Anstatt die CDK beim Bootstrapping erstellten IAM Standardrollen zu verwenden, verwendet er die Sicherheitsanmeldedaten des Akteurs, der die Bereitstellung initiiert. Daher müssen die Sicherheitsanmeldedaten des Akteurs über gültige Berechtigungen verfügen, um alle Bereitstellungsaktionen ausführen zu können. Das folgende Diagramm veranschaulicht den Bereitstellungsprozess bei Verwendung dieses Synthesizers:
Bei der Verwendung vonCliCredentialsStackSynthesizer
:
-
CloudFormation Führt API Anrufe in Ihrem Konto standardmäßig mit den Berechtigungen des Akteurs durch. Daher muss die aktuelle Identität über die erforderlichen Berechtigungen verfügen, um die erforderlichen Änderungen an den AWS Ressourcen im CloudFormation Stack vorzunehmen, sowie über die erforderlichen Berechtigungen zum Ausführen der erforderlichen CloudFormation Operationen wie
CreateStack
oderUpdateStack
. Die Bereitstellungsmöglichkeiten sind auf die Berechtigungen des jeweiligen Akteurs beschränkt. -
Die Veröffentlichung und CloudFormation Bereitstellung von Ressourcen erfolgt unter Verwendung der aktuellen IAM Identität. Diese Identität muss über ausreichende Berechtigungen zum Lesen und Schreiben in den Asset-Bucket und das Repository verfügen.
-
Suchvorgänge werden mit der aktuellen IAM Identität durchgeführt, und Suchvorgänge unterliegen deren Richtlinien.
Wenn Sie diesen Synthesizer verwenden, können Sie eine separate CloudFormation Ausführungsrolle verwenden, indem Sie sie mithilfe der --role-arn
Option mit einer beliebigen angeben CDK CLI Befehl.
CliCredentialsStackSynthesizer
Bootstrap-Vertrag
CliCredentialsStackSynthesizer
erfordert den folgenden Bootstrap-Vertrag. Dies sind die Ressourcen, die beim Bootstrapping erstellt werden müssen:
Bootstrap-Ressource | Beschreibung | Standardname der erwarteten Ressource | Zweck |
---|---|---|---|
Amazon-S3-Bucket |
Staging-Bucket |
cdk-hnb659fds-Vermögenswerte- - |
Speichert Datei-Assets. |
ECRAmazon-Repository |
Bereitstellen eines Repositorys |
cdk-hnb659 - - fds-container-assets |
Speichert und verwaltet Docker Bild-Assets. |
Die Zeichenfolge hnb659fds
im Ressourcennamen wird Qualifier genannt. Sein Standardwert hat keine besondere Bedeutung. Sie können mehrere Kopien der Bootstrap-Ressourcen in einer einzigen Umgebung haben, sofern sie einen anderen Qualifier haben. Das Vorhandensein mehrerer Kopien kann nützlich sein, um die Ressourcen verschiedener Anwendungen in derselben Umgebung getrennt zu halten.
Sie können die standardmäßige Bootstrap-Vorlage bereitstellen, um den CliCredentialsStackSynthesizer
Bootstrap-Vertrag zu erfüllen. Die Standard-Bootstrap-Vorlage erstellt IAM Rollen, aber dieser Synthesizer verwendet sie nicht. Sie können die Bootstrap-Vorlage auch anpassen, um die Rollen zu entfernen. IAM
Ändern von CliCredentialsStackSynthesizer
Wenn Sie beim Bootstrapping den Qualifier oder einen der Standard-Bootstrap-Ressourcennamen ändern, müssen Sie den Synthesizer so ändern, dass er dieselben Namen verwendet. Sie können den Synthesizer für einen einzelnen Stack oder für alle Stapel in Ihrer App ändern. Im Folgenden wird ein Beispiel gezeigt:
new MyStack(this, 'MyStack', {
synthesizer: new CliCredentialsStackSynthesizer({
qualifier: 'MYQUALIFIER',
}),
});
Das folgende Beispiel zeigt die am häufigsten verwendeten Eigenschaften für CliCredentialsStackSynthesizer
zusammen mit ihren Standardwerten. Eine vollständige Liste finden Sie unter CliCredentialsStackSynthesizerProps:
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: '',
})
Verwenden von LegacyStackSynthesizer
Das LegacyStackSynthesizer
emuliert das Verhalten von CDK v1-Bereitstellungen. Die Sicherheitsanmeldedaten des Akteurs, der die Bereitstellung durchführt, werden zur Einrichtung von Berechtigungen verwendet. Datei-Assets werden in einen Bucket hochgeladen, der mithilfe eines AWS CloudFormation Stacks mit dem Namen erstellt werden mussCDKToolkit
. Die CDK CLI erstellt ein nicht verwaltetes ECR Amazon-Repository mit aws-cdk/assets
dem Namen Store Docker Bild-Assets. Sie sind dafür verantwortlich, dieses Repository zu bereinigen und zu verwalten. Stacks, die mit dem synthetisiert wurden, LegacyStackSynthesizer
können nur mit dem bereitgestellt werden CDK CLI.
Sie können den verwenden, LegacyStackSynthesizer
wenn Sie von CDK Version 1 auf CDK Version 2 migrieren und Ihre Umgebungen nicht neu starten können. Für neue Projekte empfehlen wir, es nicht zu verwenden. LegacyStackSynthesizer
LegacyStackSynthesizer
Bootstrap-Vertrag
LegacyStackSynthesizer
erfordert den folgenden Bootstrap-Vertrag. Dies sind die Ressourcen, die beim Bootstrapping erstellt werden müssen:
Bootstrap-Ressource | Beschreibung | Standardname der erwarteten Ressource | Zweck |
---|---|---|---|
Amazon-S3-Bucket |
Staging-Bucket |
cdk-hnb659fds-Vermögenswerte- - |
Speichert Datei-Assets. |
CloudFormation Ausgabe |
Ausgabe des Bucket-Namens |
Stapel — Name der Ausgabe — |
Eine CloudFormation Ausgabe, die den Namen des Staging-Buckets beschreibt |
Das LegacyStackSynthesizer
geht nicht von der Existenz eines Amazon S3 S3-Buckets mit einem festen Namen aus. Stattdessen enthält die synthetisierte CloudFormation Vorlage drei CloudFormation Parameter für jedes Datei-Asset. Diese Parameter speichern den Amazon S3 S3-Bucket-Namen, den Amazon S3 S3-Objektschlüssel und den Artefakt-Hash für jedes Datei-Asset.
Docker Bild-Assets werden in einem ECR Amazon-Repository mit dem Namen veröffentlichtaws-cdk/assets
. Dieser Name kann pro Asset geändert werden. Die Repositorys werden erstellt, falls sie nicht existieren.
Es muss ein CloudFormation Stack mit dem Standardnamen CDKToolkit
existieren. Dieser Stack muss einen CloudFormation Export mit dem Namen habenBucketName
, der sich auf den Staging-Bucket bezieht.
Die Standard-Bootstrap-Vorlage erfüllt den LegacyStackSynthesizer
Bootstrap-Vertrag. Es wird jedoch nur der Amazon S3 S3-Bucket aus den Bootstrap-Ressourcen der Bootstrap-Vorlage verwendet. Sie können die Bootstrap-Vorlage anpassen, um die Amazon- ECRIAM, und SSM Bootstrap-Ressourcen zu entfernen.
LegacyStackSynthesizer
Bereitstellungsprozess
Wenn Sie diesen Synthesizer verwenden, wird während der Bereitstellung der folgende Vorgang ausgeführt:
-
Die CDK CLI sucht nach einem CloudFormation Stack mit dem Namen
CDKToolkit
in Ihrer Umgebung. Aus diesem Stapel ist der CDK CLI liest die CloudFormation angegebene AusgabeBucketName
. Sie können die--toolkit-stack-name
Option with verwendencdk deploy
, um einen anderen Stacknamen anzugeben. -
Die Sicherheitsanmeldedaten des Akteurs, der die Bereitstellung initiiert, werden verwendet, um Berechtigungen für die Bereitstellung festzulegen. Daher muss der Akteur über ausreichende Berechtigungen verfügen, um alle Bereitstellungsaktionen durchführen zu können. Dazu gehören das Lesen und Schreiben in den Amazon S3 S3-Staging-Bucket, das Erstellen und Schreiben in das ECR Amazon-Repository, das Starten und Überwachen von AWS CloudFormation Bereitstellungen sowie das Ausführen aller für die Bereitstellung erforderlichen API Aufrufe.
-
Falls erforderlich und sofern die Berechtigungen gültig sind, werden Datei-Assets im Amazon S3 S3-Staging-Bucket veröffentlicht.
-
Falls erforderlich und sofern die Berechtigungen gültig sind, Docker Bildelemente werden in dem Repository veröffentlicht, das nach der
repositoryName
Eigenschaft des Elements benannt ist. Der Standardwert ist,'aws-cdk/assets'
wenn Sie keinen Repository-Namen angeben. -
Wenn die Berechtigungen gültig sind, wird die AWS CloudFormation Bereitstellung durchgeführt. Die Speicherorte des Amazon S3 S3-Staging-Buckets und der Schlüssel werden als CloudFormation Parameter übergeben.