Passer au contenu

Comment utiliser CodeBuild pour exécuter des commandes de l'AWS CLI sur plusieurs comptes ?

Lecture de 3 minute(s)
0

Je souhaite utiliser AWS CodeBuild pour exécuter des commandes de l'interface de la ligne de commande AWS (AWS CLI) sur plusieurs comptes AWS.

Résolution

Remarque : si des erreurs surviennent lorsque vous exécutez des commandes de l’interface de la ligne de commande AWS (AWS CLI), consultez la section Résoudre les erreurs liées à l’AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l'AWS CLI.

La résolution suivante configure un projet CodeBuild dans le compte A pour exécuter les commandes de l'AWS CLI dans le compte B.

Prérequis :Créez un projet de génération dans le compte A.

Créer un rôle IAM dans le compte B pour exécuter les commandes de l'AWS CLI

Procédez comme suit :

  1. Dans le compte B, ouvrez la console Gestion des identités et des accès AWS (AWS IAM).
  2. Dans le volet de navigation, choisissez Rôles, puis Créer un rôle.
  3. Choisissez le type de rôle Compte AWS.
  4. Dans la section Un compte AWS, choisissez Un autre compte AWS.
  5. Dans ID de compte, saisissez l'ID de compte du compte A.
  6. Sélectionnez Suivant.
  7. Sélectionnez la politique avec les autorisations pour exécuter les commandes de l'AWS CLI dans le compte B.
  8. Sélectionnez Suivant.
  9. Dans le champ Nom du rôle, saisissez un nom pour le rôle.
  10. Sélectionnez Créer un rôle.
  11. Notez l’Amazon Resource Name (ARN) du rôle IAM.

Associer une politique IAM au rôle de service CodeBuild pour assumer le rôle

Procédez comme suit :

  1. Dans le compte A, ouvrez la console CodeBuild.
  2. Dans le volet de navigation, choisissez Créer des projets.
  3. Sélectionnez le projet de création qui exécute les actions intercompte.
  4. Dans le projet CodeBuild, choisissez l'onglet Détails du projet.
  5. Dans la section Environnement, sélectionnez l'ARN du rôle de service.
  6. Dans la nouvelle fenêtre de console IAM, choisissez Ajouter des autorisations, puis choisissez Ajouter une politique en ligne.
  7. Saisissez la politique suivante dans l’onglet JSON :
    {
            "Version": "2012-10-17",
            "Statement": [
                {
                    "Sid": "AllowCrossAccountAccess",
                    "Effect": "Allow",
                    "Action": "sts:AssumeRole",
                    "Resource": "ACCOUNT_B_ROLE_ARN"
                }
            ]
        }
    Remarque : remplacez ACCOUNT_B_ROLE_ARN par l'ARN du rôle IAM.
  8. Sélectionnez Suivant.
  9. Dans le champ Nom de la politique, saisissez un nom pour la politique.
  10. Sélectionnez Créer une politique.

Modifier le fichier buildspec du projet CodeBuild

Si le fichier buildspec se trouve dans le projet CodeBuild, procédez comme suit :

  1. Ouvrez la console CodeBuild.
  2. Dans le volet de navigation, choisissez Créer des projets.
  3. Sélectionnez votre projet de création, puis choisissez Modifier.
  4. Dans la section Buildspec, ajoutez la commande assume-role de l'AWS CLI et les commandes intercompte dans l'ordre suivant :
    - CREDS=$(aws sts assume-role \
      --role-arn $ACCOUNT_B_ROLE_ARN \
      --role-session-name "session")
    - export AWS_ACCESS_KEY_ID=$(echo $CREDS | jq -r '.Credentials.AccessKeyId')
    - export AWS_SECRET_ACCESS_KEY=$(echo $CREDS | jq -r '.Credentials.SecretAccessKey')
    - export AWS_SESSION_TOKEN=$(echo $CREDS | jq -r '.Credentials.SessionToken')
    Remarque : remplacez ACCOUNT_B_ROLE_ARN par l'ARN du rôle IAM. Si le fichier buildspec se trouve dans votre code source, ajoutez la commande assume-role de l'AWS CLI avant les commandes intercompte dans le fichier buildspec.
  5. Choisissez Mettre à jour le projet.

Pour exécuter une commande AWS CLI dans le compte B, exécutez la commande CLI après les commandes assume-role et export.

Pour revenir à vos autorisations de rôle de service CodeBuild précédentes, exécutez les commandes unset suivantes :

- unset AWS_ACCESS_KEY_ID
- unset AWS_SECRET_ACCESS_KEY
- unset AWS_SESSION_TOKEN
AWS OFFICIELA mis à jour il y a 5 mois