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 :
- Dans le compte B, ouvrez la console Gestion des identités et des accès AWS (AWS IAM).
- Dans le volet de navigation, choisissez Rôles, puis Créer un rôle.
- Choisissez le type de rôle Compte AWS.
- Dans la section Un compte AWS, choisissez Un autre compte AWS.
- Dans ID de compte, saisissez l'ID de compte du compte A.
- Sélectionnez Suivant.
- Sélectionnez la politique avec les autorisations pour exécuter les commandes de l'AWS CLI dans le compte B.
- Sélectionnez Suivant.
- Dans le champ Nom du rôle, saisissez un nom pour le rôle.
- Sélectionnez Créer un rôle.
- 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 :
- Dans le compte A, ouvrez la console CodeBuild.
- Dans le volet de navigation, choisissez Créer des projets.
- Sélectionnez le projet de création qui exécute les actions intercompte.
- Dans le projet CodeBuild, choisissez l'onglet Détails du projet.
- Dans la section Environnement, sélectionnez l'ARN du rôle de service.
- Dans la nouvelle fenêtre de console IAM, choisissez Ajouter des autorisations, puis choisissez Ajouter une politique en ligne.
- 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.
- Sélectionnez Suivant.
- Dans le champ Nom de la politique, saisissez un nom pour la politique.
- 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 :
- Ouvrez la console CodeBuild.
- Dans le volet de navigation, choisissez Créer des projets.
- Sélectionnez votre projet de création, puis choisissez Modifier.
- 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.
- 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