Afficher une version en cours d'exécution dans le Gestionnaire de session - AWS CodeBuild

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.

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 :

    1. 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.

    2. 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 :

  1. Ouvrez la AWS CodeBuild console sur https://console.aws.amazon.com/codesuite/codebuild/home.

  2. 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.

  3. Choisissez Advanced build overrides (Remplacements avancés de génération).

  4. 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.

  5. Apportez les autres modifications souhaitées, puis choisissez Démarrer la construction.

  6. 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.

  1. 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
  2. Copiez la valeur sessionTarget de la propriété. Le nom de la sessionTarget propriété peut varier en fonction du type de sortie de la aws commande. C'est pourquoi --output json il est ajouté à la commande à l'étape précédente.

  3. 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