Ongoing service disruptions
For the most recent update on ongoing service disruptions affecting the AWS Middle East (UAE) Region (ME-CENTRAL-1), refer to the AWS Health Dashboard. For information on AWS Service migration, see How do I migrate my services to another region?
Comment puis-je déployer des artefacts sur Amazon S3 dans un autre compte AWS à l'aide de CodePipeline ?
Je souhaite déployer des artefacts dans un compartiment Amazon Simple Storage Service (Amazon S3) d'un autre compte. Je souhaite également définir le compte de destination en tant que propriétaire de l'objet à l'aide d'AWS CodePipeline avec un fournisseur d'action de déploiement Amazon S3.
Résolution
Remarque : L'exemple de procédure suivant suppose ce qui suit :
- Vous disposez de deux comptes : un compte de développement et un compte de production.
- Le compartiment d'entrée du compte de développement s’appelle codepipeline-input-bucket (avec la gestion des versions activée).
- Le compartiment d'artefacts par défaut du compte de développement s’appelle codepipeline-us-east-1-0123456789.
- Le compartiment de sortie du compte de production s’appelle codepipeline-output-bucket.
- Vous déployez des artefacts depuis le compte de développement vers un compartiment S3 du compte de production.
- Vous endossez un rôle intercompte créé dans le compte de production pour déployer les artefacts. Ce rôle fait du compte de production le propriétaire de l'objet au lieu du compte de développement. Pour permettre au propriétaire du compartiment du compte de production d'accéder aux objets détenus par le compte de développement, consultez l'article suivant : Comment déployer des artefacts sur Amazon S3 dans un autre compte AWS à l'aide de CodePipeline et d'une ACL prédéfinie ?
Créer une clé AWS KMS à utiliser avec CodePipeline dans le compte de développement
Important : Vous devez utiliser la clé gérée par le client AWS Key Management Service (AWS KMS) pour les déploiements intercomptes. Si la clé n'est pas configurée, CodePipeline chiffre les objets avec le chiffrement par défaut, qui ne peut pas être déchiffré par le rôle dans le compte de destination.
1. Ouvrez la console AWS KMS dans le compte de développement.
2. Dans le volet de navigation, choisissez Clés gérées par le client.
3. Sélectionnez Créer une clé.
4. Pour Type de clé, sélectionnez Clé symétrique.
5. Développez Options avancées.
6. Pour Origine des clés, sélectionnez KMS. Puis, sélectionnez Suivant.
7. Pour Alias, saisissez l'alias de votre clé. Par exemple : s3deploykey.
8. Sélectionnez Suivant. La page Définir des autorisations d’administration de clé s'ouvre.
9. Dans la section Administrateurs de clé, sélectionnez un utilisateur ou un rôle AWS Identity and Access Management (IAM) en tant qu'administrateur de clé.
10. Sélectionnez Suivant. La page Définir des autorisations d'utilisation de clé s'ouvre.
11. Dans la section Autres comptes AWS, sélectionnez Ajouter un autre compte AWS.
12. Dans la zone de texte qui apparaît, ajoutez l'ID du compte de production. Puis, sélectionnez Suivant.
Remarque : Vous pouvez également sélectionner un rôle de service existant dans la section Ce compte. Si vous sélectionnez un rôle de service existant, ignorez les étapes décrites dans la section Mettre à jour la stratégie d'utilisation de KMS dans le compte de développement.
13. Examinez la stratégie de clé. Puis, sélectionnez Terminer.
Créer un CodePipeline dans le compte de développement
1. Ouvrez la console CodePipeline. Puis, sélectionnez Créer un pipeline.
2. Pour Nom du pipeline, saisissez un nom pour votre pipeline. Par exemple : crossaccountdeploy.
Remarque : La zone de texte Nom du rôle est automatiquement renseignée avec le nom du rôle de service AWSCodePipelineServiceRole-us-east-1-crossaccountdeploy. Vous pouvez également choisir un autre rôle de service existant avec accès à la clé KMS.
3. Développez la section Paramètres avancés.
4. Pour Magasin d’artefacts, sélectionnez Emplacement par défaut.
Remarque : Vous pouvez sélectionner Emplacement personnalisé si cela est nécessaire pour votre cas d'utilisation.
5. Pour Clé de chiffrement, sélectionnez Clé gérée par le client.
- Pour Clé gérée par le client KMS, sélectionnez l'alias de votre clé dans la liste (s3deploykey, pour cet exemple). Puis, sélectionnez Suivant. La page Ajouter une étape source s'ouvre.
7. Pour Fournisseur de source, sélectionnez ** Amazon S3**.
8. Pour Compartiment, saisissez le nom de votre compartiment S3 d'entrée de développement. Par exemple : codepipeline-input-bucket.
Important : La gestion des versions du compartiment d'entrée doit être activée pour que ce dernier fonctionne avec CodePipeline.
9. Pour Clé d'objet S3, saisissez sample-website.zip.
Important : Pour utiliser un exemple de site Web AWS au lieu de votre propre site Web, consultez le didacticiel : Créer un pipeline qui utilise Amazon S3 comme fournisseur de déploiement. Puis, recherchez « exemple de site Web statique » dans les Prérequis de la section 1 : Déployer des fichiers de site Web statiques dans Amazon S3.
10. Pour Options de détection de modifications, sélectionnez Amazon CloudWatch Events (recommandé). Puis, sélectionnez Suivant.
11. Sur la page Ajouter une étape de génération, sélectionnez Ignorer l'étape de génération. Puis, sélectionnez Enregistrer.
12. Sur la page Ajouter une phase de déploiement, pour Fournisseur de déploiement, sélectionnez Amazon S3.
- Pour Région, choisissez la région AWS dans laquelle se trouve votre compartiment S3 de sortie de production. Exemple : USA Est (Virginie du Nord).
Important : Si la région du compartiment de production et de sortie est différente de celle de votre pipeline, vous devez également vérifier les points suivants :
- Vous utilisez une clé multi-région AWS KMS avec plusieurs réplicas.
- Votre pipeline possède des magasins d'artefacts dans les deux régions.
14. Pour Compartiment, saisissez le nom de votre compartiment S3 de sortie de production. Par exemple : codepipeline-output-bucket.
15. Cochez la case Veuillez extraire le fichier avant le déploiement.
Remarque : Si nécessaire, saisissez un chemin de déploiement.
16. Sélectionnez Suivant.
17. Sélectionnez Créer un pipeline. Le pipeline fonctionne, mais l'étape source échoue. L'erreur suivante s'affiche : « The object with key 'sample-website.zip' does not exist. »
La section Charger l'exemple de site Web dans le compartiment d'entrée de cet article explique comment résoudre cette erreur.
Mettre à jour la stratégie d'utilisation de KMS dans le compte de développement
Important : Ignorez cette section si vous utilisez un rôle de service CodePipeline existant.
1. Ouvrez la console AWS KMS dans le compte de développement.
- Sélectionnez l'alias de votre clé (s3deploykey, pour cet exemple).
3. Dans la section Utilisateurs de clé, choisissez Ajouter.
4. Dans la zone de recherche, saisissez le rôle de service AWSCodePipelineServiceRole-us-east-1-crossaccountdeploy.
5. Sélectionnez Ajouter.
Configurer un rôle intercompte dans le compte de production
Créez une stratégie IAM pour le rôle qui accorde des autorisations Amazon S3 à votre compartiment S3 de sortie de production
1. Ouvrez la console IAM dans le compte de production.
2. Dans le volet de navigation, sélectionnez Stratégies. Puis, sélectionnez Créer une stratégie.
3. Sélectionnez l’onglet JSON. Puis, saisissez la stratégie suivante dans l'éditeur JSON :
Important : Remplacez codepipeline-output-bucket par le nom de votre compartiment S3 de sortie de production.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:Put*" ], "Resource": [ "arn:aws:s3:::codepipeline-output-bucket/*" ] }, { "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::codepipeline-output-bucket" ] } ] }
4. Choisissez Vérifier une politique.
5. Pour Nom, saisissez le nom de la stratégie. Par exemple : outputbucketdeployaccess.
6. Sélectionnez Créer une stratégie.
Créez une stratégie IAM pour le rôle qui accorde les autorisations KMS requises
- Dans la console IAM, sélectionnez Créer une stratégie.
2. Sélectionnez l’onglet JSON. Puis, saisissez la stratégie suivante dans l'éditeur JSON :
Remarque : Remplacez l'ARN de la clé KMS que vous avez créée. Remplacez codepipeline-us-east-1-0123456789 par le nom du compartiment d'artefacts dans le compte de développement.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:DescribeKey", "kms:GenerateDataKey*", "kms:Encrypt", "kms:ReEncrypt*", "kms:Decrypt" ], "Resource": [ "arn:aws:kms:us-east-1:<dev-account-id>:key/<key id>" ] }, { "Effect": "Allow", "Action": [ "s3:Get*" ], "Resource": [ "arn:aws:s3:::codepipeline-us-east-1-0123456789/*" ] }, { "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::codepipeline-us-east-1-0123456789" ] } ] }
3. Sélectionnez Examiner une stratégie.
4. Pour Nom, saisissez le nom de la stratégie. Par exemple : devkmss3access.
5. Sélectionnez Créer une stratégie.
** Créez un rôle intercompte que le compte de développement peut endosser pour déployer les artefacts**
1. Ouvrez la console IAM dans le compte de production.
2. Dans le volet de navigation, choisissez Rôles. Choisissez Créer Rôle.
3. Sélectionnez Autre compte AWS.
4. Pour ID de compte, saisissez l'ID de compte AWS du compte de développement.
5. Choisissez Suivant : Autorisations.
6. Dans la liste des stratégies, sélectionnez outputbucketdeployaccess et devkmss3access.
7. Choisissez Suivant : Balises.
8. (Facultatif) Ajoutez des balises, puis sélectionnez Suivant : Vérifier.
9. Pour Nom du rôle, saisissez prods3role.
10. Sélectionnez Créer un rôle.
11. Dans la liste de rôles, sélectionnez prods3role.
12. Sélectionnez Relation d’approbation. Puis, sélectionnez Modifier la relation d'approbation.
13. Dans l'éditeur de document de stratégie, saisissez la stratégie suivante :
Important : Remplacez dev-account-id par l'ID de compte AWS de votre compte de développement. Remplacez AWSCodePipelineServiceRole-us-east-1-crossaccountdeploy par le nom du rôle de service pour votre pipeline.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::<dev-account-id>:role/service-role/AWSCodePipelineServiceRole-us-east-1-crossaccountdeploy" ] }, "Action": "sts:AssumeRole", "Condition": {} } ] }
14. Sélectionnez Mettre à jour la stratégie de confiance.
Mettre à jour de la stratégie de compartiment pour le compartiment d’artefacts CodePipeline dans le compte de développement
1. Ouvrez la console Amazon S3 dans le compte de développement.
2. Dans la liste Nom du compartiment, choisissez le nom de votre compartiment d'artefacts dans votre compte de développement (pour cet exemple, codepipeline-us-east-1-0123456789).
3. Sélectionnez Autorisations. Puis, sélectionnez Stratégie de compartiment.
4. Dans l’éditeur de texte, mettez à jour votre stratégie pour inclure les documents de stratégie suivants :
Important : Pour vous aligner sur le format JSON approprié, ajoutez une virgule après les instructions existantes. Remplacez prod-account-id par l'ID de compte AWS de votre compte de production. Remplacez codepipeline-us-east-1-0123456789 par le nom de votre compartiment d'artefacts.
{ "Sid": "", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::<prod-account-id>:root" }, "Action": [ "s3:Get*", "s3:Put*" ], "Resource": "arn:aws:s3:::codepipeline-us-east-1-0123456789/*" }, { "Sid": "", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::<prod-account-id>:root" }, "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::codepipeline-us-east-1-0123456789" }
5. Sélectionnez Enregistrer.
Associer une stratégie à votre rôle de service CodePipeline dans le compte de développement qui lui permet d'assumer le rôle intercompte que vous avez créé
1. Ouvrez la console IAM dans le compte de développement.
2. Dans le volet de navigation, sélectionnez Stratégies. Puis, sélectionnez Créer une stratégie.
3. Sélectionnez l’onglet JSON. Puis, saisissez la stratégie suivante dans l'éditeur JSON :
Important : Remplacez prod-account-id par l'ID de compte AWS de votre compte de production.
{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": [ "arn:aws:iam::<prod-account-id>:role/prods3role" ] } }
4. Choisissez Vérifier une politique.
5. Pour Nom, saisissez assumeprods3role.
6. Sélectionnez Créer une stratégie.
7. Dans le volet de navigation, choisissez Rôles. Puis, choisissez le nom du rôle de service pour votre pipeline (dans cet exemple, AWSCodePipelineServiceRole-us-east-1-crossaccountdeploy).
8. Sélectionnez Attacher des stratégies. Puis, sélectionnez assumeprods3role.
9. Sélectionnez Attacher la stratégie.
Mettre à jour votre pipeline pour utiliser le rôle intercompte dans le compte de développement
Remarque : Si vous recevez des erreurs lors de l'exécution des commandes de l'interface de la ligne de commande AWS (AWS CLI), assurez-vous que vous utilisez la version la plus récente de l'interface de la ligne de commande AWS.
1. Récupérez la définition du pipeline sous la forme d'un fichier nommé codepipeline.json en exécutant la commande de l’interface de ligne de commande (CLI) suivante :
Important : Remplacez crossaccountdeploy par le nom de votre pipeline.
aws codepipeline get-pipeline --name crossaccountdeploy > codepipeline.json
2. Ajoutez l'ARN du rôle IAM intercompte (roleArn) à la section action de déploiement du fichier codepipeline.json. Pour plus d'informations, consultez la référence à la structure du pipeline CodePipeline dans le Guide de l'utilisateur de CodePipeline.
Exemple d’ARN de rôle IAM intercompte
"roleArn": "arn:aws:iam::your-prod-account id:role/prods3role",
Exemple d'action de déploiement incluant un rôle IAM intercompte (ARN)
Important : Remplacez le prod-account-id par l'ID de compte AWS de votre compte de production.
{ "name": "Deploy", "actions": [ { "name": "Deploy", "actionTypeId": { "category": "Deploy", "owner": "AWS", "provider": "S3", "version": "1" }, "runOrder": 1, "configuration": { "BucketName": "codepipeline-output-bucket", "Extract": "true" }, "outputArtifacts": [], "inputArtifacts": [ { "name": "SourceArtifact" } ], "roleArn": "arn:aws:iam::<prod-account-id>:role/prods3role", "region": "us-east-1", "namespace": "DeployVariables" } ] }
3. Supprimez la section de métadonnées située à la fin du fichier codepipeline.json.
Important : Assurez-vous de supprimer également la virgule qui précède la section des métadonnées.
Exemple de section de métadonnées
"metadata": { "pipelineArn": "arn:aws:codepipeline:us-east-1:<dev-account-id>:crossaccountdeploy", "created": 1587527378.629, "updated": 1587534327.983 }
4. Mettez à jour le pipeline en exécutant la commande suivante :
aws codepipeline update-pipeline --cli-input-json file://codepipeline.json
Charger l'exemple de site Web dans le compartiment d'entrée
1. Ouvrez la console Amazon S3 dans le compte de développement.
2. Dans la liste Nom du compartiment, choisissez votre compartiment S3 d'entrée de développement. Par exemple : codepipeline-input-bucket.
3. Sélectionnez Charger. Puis, sélectionnez Ajouter des fichiers.
4. Sélectionnez le fichier sample-website.zip que vous avez téléchargé précédemment.
5. Sélectionnez Charger pour exécuter le pipeline. Lorsque le pipeline fonctionne, les événements suivants se produisent :
- L'action source sélectionne le fichier sample-website.zip dans le compartiment S3 d'entrée de développement (codepipeline-input-bucket). L'action source place ensuite le fichier zip en tant qu'artefact source dans le compartiment d'artefacts par défaut du compte de développement (codepipeline-us-east-1-0123456789).
- Dans l'action de déploiement, le rôle de service CodePipeline (AWSCodePipelineServiceRole-us-east-1-crossaccountdeploy) endosse le rôle intercompte (prods3role) dans le compte de production.
- CodePipeline utilise le rôle intercompte (prods3role) pour accéder à la clé KMS et au compartiment d'artefacts du compte de développement. CodePipeline déploie ensuite les fichiers extraits dans le compartiment S3 de sortie de production (codepipeline-output-bucket) du compte de production.
Remarque : Le compte de production est le propriétaire des objets extraits dans le compartiment S3 de sortie de production (codepipeline-output-bucket).
- Sujets
- Developer Tools
- Balises
- AWS CodePipeline
- Langue
- Français

Contenus pertinents
- demandé il y a 10 mois
- demandé il y a 2 ans
- demandé il y a 10 mois
- demandé il y a 3 ans
- demandé il y a un an
AWS OFFICIELA mis à jour il y a 3 ans