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.
Afficher une version en cours d'exécution dans le Gestionnaire de session
Dans AWS CodeBuild, vous pouvez suspendre une compilation en cours, puis utiliser le gestionnaire de AWS Systems Manager session pour vous connecter au conteneur de génération et afficher l'état du conteneur.
Note
Cette fonctionnalité n'est pas disponible dans les environnements Windows.
Rubriques
Prérequis
Pour autoriser l'utilisation du gestionnaire de session avec la session de génération, vous devez activer la connexion à la session pour la génération. Il y a deux prérequis :
-
CodeBuild L'SSMagent est déjà installé et ContainerMode activé sur les images sélectionnées standard de SSM Linux.
Si vous utilisez une image personnalisée pour votre build, procédez comme suit :
-
Installez l'SSMagent. Pour plus d'informations, consultez la section Installation manuelle de SSM l'agent sur les EC2 instances pour Linux dans le Guide de AWS Systems Manager l'utilisateur. La version de SSM l'agent doit être 3.0.1295.0 ou ultérieure.
-
Copiez le fichier https://github.com/aws/aws-codebuild-docker-images/blob/master/ubuntu/standard/5.0/amazon-ssm-agent.json
dans le /etc/amazon/ssm/
répertoire de votre image. Cela active le mode conteneur dans l'SSMagent.
Note
Les images personnalisées nécessiteraient la mise à jour de SSM l'agent le plus récent pour que cette fonctionnalité fonctionne comme prévu.
-
-
Le rôle CodeBuild de service doit respecter la SSM politique suivante :
{ "Effect": "Allow", "Action": [ "ssmmessages:CreateControlChannel", "ssmmessages:CreateDataChannel", "ssmmessages:OpenControlChannel", "ssmmessages:OpenDataChannel" ], "Resource": "*" }
Vous pouvez demander à la CodeBuild console d'associer automatiquement cette politique à votre rôle de service lorsque vous démarrez la génération. Vous pouvez également associer cette politique à votre rôle de service manuellement.
-
Si l'audit et la journalisation de l'activité des sessions sont activés dans les préférences de Systems Manager, le rôle de CodeBuild service doit également disposer d'autorisations supplémentaires. Les autorisations sont différentes en fonction de l'endroit où les journaux sont stockés.
- CloudWatch Journaux
-
Si vous utilisez CloudWatch Logs pour stocker vos journaux, ajoutez l'autorisation suivante au rôle CodeBuild de service :
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "logs:DescribeLogGroups", "Resource": "arn:aws:logs:
<region-id>
:<account-id>
:log-group:*:*" }, { "Effect": "Allow", "Action": [ "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "arn:aws:logs:<region-id>
:<account-id>
:log-group:<log-group-name>
:*" } ] } - Amazon S3
-
Si vous utilisez Amazon S3 pour stocker vos journaux, ajoutez l'autorisation suivante au rôle CodeBuild de service :
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetEncryptionConfiguration", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::
<bucket-name>
", "arn:aws:s3:::<bucket-name>
/*" ] } ] }
Pour plus d'informations, consultez la section Audit et journalisation de l'activité des sessions dans le guide de AWS Systems Manager l'utilisateur.
Suspendre le build
Pour suspendre la génération, insérez la codebuild-breakpoint commande dans l'une des phases de construction de votre fichier buildspec. La construction sera suspendue à ce stade, ce qui vous permettra de vous connecter au conteneur de construction et de visualiser le conteneur dans son état actuel.
Par exemple, ajoutez ce qui suit aux phases de construction dans votre fichier buildspec.
phases: pre_build: commands: - echo Entered the pre_build phase... - echo "Hello World" > /tmp/hello-world - codebuild-breakpoint
Ce code crée le /tmp/hello-world
fichier, puis interrompt la compilation à ce stade.
Démarrez la construction
Pour autoriser l'utilisation du gestionnaire de session avec la session de génération, vous devez activer les connexions de session pour la génération. Pour ce faire, lors du démarrage de la compilation, procédez comme suit :
Ouvrez la AWS CodeBuild console sur https://console.aws.amazon.com/codesuite/codebuild/home
. -
Dans le volet de navigation, choisissez Projets de génération. Choisissez le projet de construction, puis choisissez Démarrer la construction avec des remplacements.
-
Choisissez Advanced build overrides (Remplacements avancés de génération).
-
Dans la section Environnement, choisissez l'option Activer la connexion à la session. Si cette option n'est pas sélectionnée, toutes les codebuild-resume commandes codebuild-breakpoint et sont ignorées.
-
Apportez les autres modifications souhaitées, puis choisissez Démarrer la construction.
-
Surveillez l'état de construction dans la console. Lorsque la session est disponible, le lien du gestionnaire de AWS session apparaît dans la section État de la création.
Connectez-vous au conteneur de construction
Vous pouvez vous connecter au conteneur de construction de deux manières :
- CodeBuild console
-
Dans un navigateur Web, ouvrez le lien du gestionnaire de AWS session pour vous connecter au conteneur de construction. Une session de terminal s'ouvre pour vous permettre de parcourir et de contrôler le conteneur de construction.
- AWS CLI
-
Note
Le plug-in Session Manager doit être installé sur votre machine locale pour cette procédure. Pour plus d'informations, voir Installer le plug-in du gestionnaire de session AWS CLI dans le guide de AWS Systems Manager l'utilisateur.
-
Appelez l'batch-get-buildsAPI avec l'ID de build pour obtenir des informations sur le build, y compris l'identifiant cible de session. Le nom de propriété de l'identifiant cible de session varie en fonction du type de sortie de la
aws
commande. C'est pourquoi--output json
il est ajouté à la commande.aws codebuild batch-get-builds --ids
<buildID>
--region<region>
--output json -
Copiez la valeur
sessionTarget
de la propriété. Le nom de lasessionTarget
propriété peut varier en fonction du type de sortie de laaws
commande. C'est pourquoi--output json
il est ajouté à la commande à l'étape précédente. -
Utilisez la commande suivante pour vous connecter au conteneur de construction.
aws ssm start-session --target
<sessionTarget>
--region<region>
-
Pour cet exemple, vérifiez que le /tmp/hello-world
fichier existe et contient le texteHello World
.
Reprendre le build
Une fois que vous avez terminé d'examiner le conteneur de construction, émettez la codebuild-resume commande depuis le shell du conteneur.
$
codebuild-resume