Démarrez votre environnement pour l'utiliser avec AWS CDK - AWS Cloud Development Kit (AWS CDK) v2

Ceci est le guide du AWS CDK développeur de la version 2. L'ancienne CDK version 1 est entrée en maintenance le 1er juin 2022 et a pris fin le 1er juin 2023.

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Démarrez votre environnement pour l'utiliser avec AWS CDK

Démarrez votre AWS environnement pour le préparer aux déploiements de AWS Cloud Development Kit (AWS CDK) stack.

Comment démarrer votre environnement

Vous pouvez utiliser l'interface de ligne de AWS CDK commande (AWS CDK CLI) ou votre outil de AWS CloudFormation déploiement préféré pour démarrer votre environnement.

Utilisez le CDK CLI

Vous pouvez utiliser la CDK CLI cdk bootstrap commande pour démarrer votre environnement. C'est la méthode que nous recommandons si vous n'avez pas besoin de modifications importantes au démarrage.

Bootstrap depuis n'importe quel répertoire de travail

Pour démarrer à partir de n'importe quel répertoire de travail, fournissez l'environnement de démarrage en tant qu'argument de ligne de commande. Voici un exemple :

$ cdk bootstrap aws://123456789012/us-east-1
Astuce

Si vous n'avez pas votre numéro de AWS compte, vous pouvez l'obtenir auprès du AWS Management Console. Vous pouvez également utiliser la AWS CLI commande suivante pour afficher les informations de votre compte par défaut, y compris votre numéro de compte :

$ aws sts get-caller-identity

Si vous avez nommé des profils dans vos credentials fichiers AWS config et, utilisez l'--profileoption permettant de récupérer les informations de compte pour un profil spécifique. Voici un exemple :

$ aws sts get-caller-identity --profile prod

Pour afficher la région par défaut, utilisez la aws configure get commande :

$ aws configure get region $ aws configure get region --profile prod

Lorsque vous fournissez un argument, le aws:// préfixe est facultatif. Ce qui suit est valide :

$ cdk bootstrap 123456789012/us-east-1

Pour démarrer plusieurs environnements en même temps, fournissez plusieurs arguments :

$ cdk bootstrap aws://123456789012/us-east-1 aws://123456789012/us-east-2
Bootstrap depuis le répertoire parent d'un projet CDK

Vous pouvez exécuter cdk bootstrap depuis le répertoire parent d'un CDK projet contenant un cdk.json fichier. Si vous ne fournissez pas d'environnement comme argument, les informations relatives à l'environnement CDK CLI seront obtenues à partir de sources par défaut, telles que vos credentials fichiers config et ou toute information d'environnement spécifiée pour votre CDK pile.

Lorsque vous démarrez à partir du répertoire parent d'un CDK projet, les environnements fournis par les arguments de la ligne de commande ont priorité sur les autres sources.

Pour démarrer un environnement spécifié dans vos credentials fichiers config et, utilisez l'--profileoption :

$ cdk bootstrap --profile prod

Pour plus d'informations sur la cdk bootstrap commande et les options prises en charge, consultezcdk bootstrap.

Utilisez n'importe quel AWS CloudFormation outil

Vous pouvez copier le modèle de bootstrap depuis le GitHubréférentiel aws-cdk ou obtenir le modèle à l'aide de la commande. cdk bootstrap --show-template Utilisez ensuite n'importe quel AWS CloudFormation outil pour déployer le modèle dans votre environnement.

Avec cette méthode, vous pouvez utiliser AWS CloudFormation StackSets ou AWS Control Tower. Vous pouvez également utiliser la AWS CloudFormation console ou le AWS Command Line Interface (AWS CLI). Vous pouvez apporter des modifications à votre modèle avant de le déployer. Cette méthode peut être plus flexible et adaptée aux déploiements à grande échelle.

Voici un exemple d'utilisation de l'--show-templateoption permettant de récupérer et d'enregistrer le modèle de bootstrap sur votre machine locale :

macOS/Linux
$ cdk bootstrap --show-template > bootstrap-template.yaml
Windows

Sous Windows, PowerShell doit être utilisé pour préserver le codage du modèle.

powershell "cdk bootstrap --show-template | Out-File -encoding utf8 bootstrap-template.yaml"

Pour déployer ce modèle à l'aide de CDKCLI, vous pouvez exécuter les opérations suivantes :

$ cdk bootstrap --template bootstrap-template.yaml

Voici un exemple d'utilisation du AWS CLI pour déployer le modèle :

macOS/Linux
aws cloudformation create-stack \ --stack-name CDKToolkit \ --template-body file://path/to/bootstrap-template.yaml \ --capabilities CAPABILITY_NAMED_IAM \ --region us-west-1
Windows
aws cloudformation create-stack ^ --stack-name CDKToolkit ^ --template-body file://path/to/bootstrap-template.yaml ^ --capabilities CAPABILITY_NAMED_IAM ^ --region us-west-1

Pour plus d'informations sur l'utilisation CloudFormation StackSets pour démarrer plusieurs environnements, consultez la section Bootstrapping multiple Comptes AWS for AWS CDK using CloudFormation StackSets dans le blog AWSCloud Operations & Migrations.

Quand démarrer votre environnement

Vous devez amorcer chaque AWS environnement avant de le déployer dans l'environnement. Nous vous recommandons de démarrer de manière proactive chaque environnement que vous prévoyez d'utiliser. Vous pouvez le faire avant de planifier le déploiement d'CDKapplications dans l'environnement. En démarrant vos environnements de manière proactive, vous évitez les problèmes futurs potentiels tels que les conflits de noms de compartiment Amazon S3 ou le déploiement d'CDKapplications dans des environnements qui n'ont pas été démarrés.

Vous pouvez démarrer un environnement plusieurs fois. Si un environnement a déjà été amorcé, la pile de bootstrap sera mise à niveau si nécessaire. Dans le cas contraire, il ne se passera rien.

Si vous tentez de déployer une CDK pile dans un environnement qui n'a pas été amorcé, une erreur semblable à la suivante s'affichera :

$ cdk deploy ✨ Synthesis time: 2.02s ❌ Deployment failed: Error: BootstrapExampleStack: SSM parameter /cdk-bootstrap/hnb659fds/version not found. Has the environment been bootstrapped? Please run 'cdk bootstrap' (see https://docs.aws.amazon.com/cdk/latest/guide/bootstrapping.html)

Mettez à jour votre stack bootstrap

Régulièrement, l'CDKéquipe mettra à jour le modèle bootstrap vers une nouvelle version. Dans ce cas, nous vous recommandons de mettre à jour votre stack bootstrap. Si vous n'avez pas personnalisé le processus d'amorçage, vous pouvez mettre à jour votre pile de bootstrap en suivant les mêmes étapes que lors du démarrage initial de votre environnement. Pour de plus amples informations, veuillez consulter Historique des versions du modèle Bootstrap.

Ressources par défaut créées lors de l'amorçage

IAMrôles créés lors du démarrage

Par défaut, le bootstrap fournit les AWS Identity and Access Management (IAM) rôles suivants dans votre environnement :

  • CloudFormationExecutionRole

  • DeploymentActionRole

  • FilePublishingRole

  • ImagePublishingRole

  • LookupRole

CloudFormationExecutionRole

Ce IAM rôle est un rôle CloudFormation de service qui accorde CloudFormation l'autorisation d'effectuer des déploiements de stack en votre nom. Ce rôle donne CloudFormation l'autorisation d'effectuer des AWS API appels dans votre compte, y compris de déployer des stacks.

En utilisant un rôle de service, les autorisations accordées pour le rôle de service déterminent les actions qui peuvent être effectuées sur vos CloudFormation ressources. Sans ce rôle de service, les informations d'identification de sécurité que vous fournissez CDK CLI détermineraient ce qui CloudFormation est autorisé à faire.

DeploymentActionRole

Ce IAM rôle donne l'autorisation d'effectuer des déploiements dans votre environnement. Il est assumé par le CDK CLI pendant les déploiements.

En utilisant un rôle pour les déploiements, vous pouvez effectuer des déploiements entre comptes, car le rôle peut être assumé par AWS des identités d'un autre compte.

FilePublishingRole

Ce IAM rôle autorise l'exécution d'actions sur le compartiment Amazon Simple Storage Service (Amazon S3) amorcé, notamment le téléchargement et la suppression d'actifs. Il est assumé par le CDK CLI pendant les déploiements.

ImagePublishingRole

Ce IAM rôle autorise l'exécution d'actions sur le référentiel Amazon Elastic Container Registry ECR (Amazon) amorcé. Il est assumé par le CDK CLI pendant les déploiements.

LookupRole

Ce IAM rôle readOnly autorise la recherche de valeurs de contexte dans l' AWS environnement. Il est assumé par le CDK CLI lors de l'exécution de tâches telles que la synthèse de modèles et les déploiements.

Ressource IDs créée lors du bootstrap

Lorsque vous déployez le modèle de bootstrap par défaut, les ressources physiques IDs pour le bootstrap sont créées à l'aide de la structure suivante : cdk-qualifier-description-account-ID-Region

  • Qualificateur : valeur de chaîne unique de neuf caractères dehnb659fds. La valeur réelle n'a aucune importance.

  • Description — Brève description de la ressource. Par exemple, container-assets.

  • ID de compte : Compte AWS identifiant de l'environnement.

  • Région — Région AWS L'environnement.

Voici un exemple d'identifiant physique du compartiment intermédiaire Amazon S3 créé lors du démarrage :. cdk-hnb659fds-assets-012345678910-us-west-1

Autorisations à utiliser lors du démarrage de votre environnement

Lors du démarrage d'un AWS environnement, l'IAMidentité effectuant le démarrage doit disposer au moins des autorisations suivantes :

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudformation:*", "ecr:*", "ssm:*", "s3:*", "iam:*" ], "Resource": "*" } ] }

Au fil du temps, la pile bootstrap, y compris les ressources créées et les autorisations requises, peut changer. Lors des modifications futures, vous devrez peut-être modifier les autorisations requises pour démarrer un environnement.

Personnaliser le bootstrap

Si le modèle de bootstrap par défaut ne répond pas à vos besoins, vous pouvez personnaliser l'amorçage des ressources dans votre environnement de la manière suivante :

  • Utiliser les options de ligne de commande avec la cdk bootstrap commande : cette méthode est idéale pour apporter de petites modifications spécifiques prises en charge par les options de ligne de commande.

  • Modifiez le modèle de bootstrap par défaut et déployez-le : cette méthode est idéale pour apporter des modifications complexes ou si vous souhaitez contrôler totalement la configuration des ressources provisionnées pendant le démarrage.

Pour plus d'informations sur la personnalisation du bootstrap, consultez. Personnaliser le AWS CDK bootstrap

Démarrage avec des pipelines CDK

Si vous utilisez des CDK pipelines pour effectuer un déploiement dans l'environnement d'un autre compte et que vous recevez un message comme celui-ci :

Policy contains a statement with one or more invalid principals

Ce message d'erreur signifie que les IAM rôles appropriés n'existent pas dans l'autre environnement. La cause la plus probable est que l'environnement n'a pas été amorcé. Démarrez l'environnement et réessayez.

Protéger votre stack bootstrap contre la suppression

Si une pile bootstrap est supprimée, les AWS ressources initialement provisionnées dans l'environnement pour prendre en charge les CDK déploiements seront également supprimées. Cela empêchera le pipeline de fonctionner. Dans ce cas, il n'existe pas de solution générale pour le rétablissement.

Une fois votre environnement amorcé, ne supprimez pas et ne recréez pas la pile d'amorçage de l'environnement. Essayez plutôt de mettre à jour la pile bootstrap vers une nouvelle version en exécutant à nouveau la cdk bootstrap commande.

Pour vous protéger contre la suppression accidentelle de votre stack bootstrap, nous vous recommandons de fournir l'--termination-protectionoption avec la cdk bootstrap commande permettant d'activer la protection contre la résiliation. Vous pouvez activer la protection contre la résiliation sur les piles de bootstrap nouvelles ou existantes. Pour obtenir des instructions sur l'activation de la protection contre la résiliation, voir Activer la protection contre la résiliation pour la pile bootstrap.

Historique des versions du modèle Bootstrap

Le modèle bootstrap est versionné et évolue au fil du temps avec lui-même. AWS CDK Si vous fournissez votre propre modèle de bootstrap, maintenez-le à jour avec le modèle canonique par défaut. Vous devez vous assurer que votre modèle continue de fonctionner avec toutes les CDK fonctionnalités.

Note

Les versions antérieures du modèle bootstrap créaient un environnement AWS KMS key dans chaque environnement bootstrap par défaut. Pour éviter de payer la KMS clé, redémarrez ces environnements à l'aide de. --no-bootstrap-customer-key La valeur par défaut actuelle est l'absence de KMS clé, ce qui permet d'éviter ces frais.

Cette section contient une liste des modifications apportées dans chaque version.

Version du modèle AWS CDK version Modifications
1 1.40.0 Version initiale du modèle avec compartiment, clé, référentiel et rôles.
2 1,45,0 Divisez le rôle de publication de ressources en rôles de publication de fichiers et d'images distincts.
3 1.46,0 Ajoutez FileAssetKeyArn l'exportation pour pouvoir ajouter des autorisations de déchiffrement aux consommateurs d'actifs.
4 1,61,0 AWS KMS les autorisations sont désormais implicites via Amazon S3 et ne sont plus nécessairesFileAsetKeyArn. Ajoutez un CdkBootstrapVersion SSM paramètre pour que la version de la pile bootstrap puisse être vérifiée sans connaître le nom de la pile.
5 1,87,0 Le rôle de déploiement peut lire SSM le paramètre.
6 1,108,0 Ajoutez un rôle de recherche distinct du rôle de déploiement.
6 1,109,0 Attachez une aws-cdk:bootstrap-role balise aux rôles de déploiement, de publication de fichiers et de publication d'images.
7 1,110,0 Le rôle de déploiement ne peut plus lire directement les buckets dans le compte cible. (Cependant, ce rôle est en fait un administrateur et peut toujours utiliser ses AWS CloudFormation autorisations pour rendre le bucket lisible de toute façon).
8 1,114,0 Le rôle de recherche dispose d'autorisations complètes en lecture seule sur l'environnement cible et possède également une aws-cdk:bootstrap-role balise.
9 2.1.0 Empêche les téléchargements de ressources Amazon S3 d'être rejetés par le chiffrement SCP couramment référencé.
10 2.4.0 Amazon ECR ScanOnPush est désormais activé par défaut.
11 2.18.0 Ajoute une politique permettant à Lambda d'effectuer des extractions depuis les ECR dépôts Amazon afin de survivre au redémarrage.
12 2.20.0 Ajoute le support pour les expériencescdk import.
13 2.25.0 Rend les images de conteneur dans les référentiels Amazon ECR créés par Bootstrap immuables.
14 2.34.0 Désactive la numérisation ECR d'images Amazon au niveau du référentiel par défaut pour permettre le démarrage des régions qui ne prennent pas en charge la numérisation d'images.
15 2,60,0 KMSles clés ne peuvent pas être étiquetées.
16 2,69,0 Répond à la constatation KMS1.2 du Security Hub.
17 2,72,0 Corrige la constatation ECR1.3 du Security Hub.
18 2,80,0 Les modifications apportées à la version 16 ont été annulées car elles ne fonctionnent pas dans toutes les partitions et ne sont donc pas recommandées.
19 2,106,1 Annulation des modifications apportées à la version 18 où AccessControl la propriété avait été supprimée du modèle. (#27964)
20 2,119,0 Ajoutez ssm:GetParameters une action au IAM rôle de AWS CloudFormation déploiement. Pour plus d'informations, voir #28336.
21 2,149,0 Ajoutez une condition au rôle de publication de fichiers.

Passez d'un ancien modèle Bootstrap à un modèle moderne

La AWS CDK v1 supportait deux modèles d'amorçage, anciens et modernes. CDKv2 ne prend en charge que le modèle moderne. À titre de référence, voici les principales différences entre ces deux modèles.

Fonctionnalité Legacy (v1 uniquement) Moderne (v1 et v2)
Déploiements entre comptes Non autorisée Autorisé
AWS CloudFormation Autorisations Déploie en utilisant les autorisations de l'utilisateur actuel (déterminées par le AWS profil, les variables d'environnement, etc.) Déploie en utilisant les autorisations spécifiées lors du provisionnement de la pile bootstrap (par exemple, en utilisant) --trust
Contrôle de version Une seule version de bootstrap stack est disponible La pile Bootstrap est versionnée ; de nouvelles ressources peuvent être ajoutées dans les versions futures, et les AWS CDK applications peuvent nécessiter une version minimale
Ressources* Compartiment Amazon S3 Compartiment Amazon S3
AWS KMS key
IAMrôles
ECRRéférentiel Amazon
SSMparamètre pour le versionnement
Désignation des ressources Généré automatiquement Déterministe
Chiffrement des compartiments Clé par défaut AWS clé gérée par défaut. Vous pouvez le personnaliser pour utiliser une clé gérée par le client.

* Nous ajouterons des ressources supplémentaires au modèle de bootstrap selon les besoins.

Un environnement qui a été amorcé à l'aide de l'ancien modèle doit être mis à niveau pour utiliser le modèle moderne de la version CDK 2 en redémarrant. Redéployez toutes les AWS CDK applications de l'environnement au moins une fois avant de supprimer l'ancien compartiment.

Conclusions du Address Security Hub

Si vous utilisez AWS Security Hub, vous pouvez voir des résultats publiés sur certaines des ressources créées par le processus d' AWS CDK amorçage. Les résultats du Security Hub vous aident à trouver des configurations de ressources dont vous devez vérifier l'exactitude et la sécurité. Nous avons examiné ces configurations de ressources spécifiques avec AWS Security et nous sommes convaincus qu'elles ne constituent pas un problème de sécurité.

[KMS.2] IAM les principaux ne devraient pas avoir de politiques IAM intégrées autorisant les actions de déchiffrement sur toutes les clés KMS

Le rôle de déploiement (DeploymentActionRole) autorise la lecture des données chiffrées, ce qui est nécessaire pour les déploiements entre comptes avec CDK des pipelines. Les politiques associées à ce rôle n'accordent pas d'autorisation à toutes les données. Il n'autorise la lecture des données chiffrées depuis Amazon S3 que lorsque ces ressources l'autorisent par le biais de leur politique de compartiment ou de clé. AWS KMS

Voici un extrait de ces deux instructions dans le rôle de déploiement à partir du modèle bootstrap :

DeploymentActionRole: Type: AWS::IAM::Role Properties: ... Policies: - PolicyDocument: Statement: ... - Sid: PipelineCrossAccountArtifactsBucket Effect: Allow Action: - s3:GetObject* - s3:GetBucket* - s3:List* - s3:Abort* - s3:DeleteObject* - s3:PutObject* Resource: "*" Condition: StringNotEquals: s3:ResourceAccount: Ref: AWS::AccountId - Sid: PipelineCrossAccountArtifactsKey Effect: Allow Action: - kms:Decrypt - kms:DescribeKey - kms:Encrypt - kms:ReEncrypt* - kms:GenerateDataKey* Resource: "*" Condition: StringEquals: kms:ViaService: Fn::Sub: s3.${AWS::Region}.amazonaws.com ...

Pourquoi Security Hub signale-t-il cela ?

Les politiques contiennent une Condition clause Resource: * combinée. Security Hub signale le * joker. Ce caractère générique est utilisé car au moment du démarrage du compte, la AWS KMS clé créée par CDK Pipelines pour le bucket d' CodePipeline artefacts n'existe pas encore et ne peut donc pas être référencée sur le modèle bootstrap par. ARN En outre, Security Hub ne tient pas compte de cette Condition clause lorsqu'il lève ce drapeau. Cela Condition se limite Resource: * aux demandes effectuées à partir de la même Compte AWS AWS KMS clé. Ces demandes doivent provenir d'Amazon S3 en même temps Région AWS que la AWS KMS clé.

Dois-je corriger cette constatation ?

Tant que vous n'avez pas modifié la AWS KMS clé de votre modèle de bootstrap pour qu'elle soit trop permissive, le rôle de déploiement n'autorise pas un accès supérieur à ce dont il a besoin. Il n'est donc pas nécessaire de corriger cette constatation.

Et si je voulais corriger ce résultat ?

La manière de corriger ce problème dépend de l'utilisation ou non de CDK pipelines pour les déploiements entre comptes.

Pour corriger la situation dans laquelle Security Hub trouve et utilise des CDK pipelines pour les déploiements entre comptes
  1. Si vous ne l'avez pas encore fait, déployez la pile CDK bootstrap à l'aide de la cdk bootstrap commande.

  2. Si vous ne l'avez pas encore fait, créez et déployez votre CDKPipeline. Pour obtenir des instructions, consultez Intégration et livraison continues (CI/CD) à l'aide de CDK Pipelines.

  3. Obtenez la AWS KMS clé ARN du seau d' CodePipeline artefacts. Cette ressource est créée lors de la création du pipeline.

  4. Procurez-vous une copie du modèle de CDK bootstrap pour le modifier. Voici un exemple utilisant AWS CDK CLI :

    $ cdk bootstrap --show-template > bootstrap-template.yaml
  5. Modifiez le modèle en remplaçant Resource: * l'PipelineCrossAccountArtifactsKeyinstruction par votre ARN valeur.

  6. Déployez le modèle pour mettre à jour votre stack bootstrap. Voici un exemple utilisant CDK CLI :

    $ cdk bootstrap aws://account-id/region --template bootstrap-template.yaml
Pour corriger le problème rencontré par Security Hub si vous n'utilisez pas de CDK pipelines pour les déploiements entre comptes
  1. Procurez-vous une copie du modèle de CDK bootstrap pour le modifier. Voici un exemple utilisant CDK CLI :

    $ cdk bootstrap --show-template > bootstrap-template.yaml
  2. Supprimez les PipelineCrossAccountArtifactsKey instructions PipelineCrossAccountArtifactsBucket et du modèle.

  3. Déployez le modèle pour mettre à jour votre stack bootstrap. Voici un exemple utilisant CDK CLI :

    $ cdk bootstrap aws://account-id/region --template bootstrap-template.yaml

Considérations

Étant donné que le démarrage fournit des ressources dans votre environnement, des AWS frais peuvent vous être facturés lorsque ces ressources sont utilisées avec le. AWS CDK