View a markdown version of this page

Référence des actions Amazon EC2 - AWS CodePipeline

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.

Référence des actions Amazon EC2

Vous utilisez une EC2 action Amazon EC2 pour déployer le code d'application sur votre parc de déploiement. Votre parc de déploiement peut être composé d'instances Linux Amazon EC2 ou de SSM-managed nœuds Linux. L'agent SSM doit être installé sur vos instances.

Note

Cette action ne prend en charge que les types d'instances Linux. La taille maximale de la flotte prise en charge est de 500 instances.

L'action choisira un certain nombre d'instances en fonction d'un maximum spécifié. Les instances ayant échoué des instances précédentes seront sélectionnées en premier. L'action ignorera le déploiement sur certaines instances si l'instance a déjà reçu le déploiement du même artefact d'entrée, par exemple si l'action a échoué précédemment.

Note

Cette action n'est prise en charge que pour les pipelines de type V2.

Type d'action

  • Catégorie : Deploy

  • Propriétaire : AWS

  • Fournisseur : EC2

  • Version : 1

Paramètres de configuration

InstanceTagKey

Obligatoire : oui

La clé de balise des instances que vous avez créées dans Amazon EC2, telles queName.

InstanceTagValue

Obligatoire : non

La valeur de balise des instances que vous avez créées dans Amazon EC2, telles quemy-instances.

Lorsque cette valeur n'est pas spécifiée, toutes les instances avec InstanceTagKey seront mises en correspondance.

InstanceType

Obligatoire : oui

Type d'instances ou de nœuds SSM créés dans Amazon EC2. Les valeurs valides sont EC2 et SSM_MANAGED_NODE.

Vous devez déjà avoir créé, balisé et installé l'agent SSM sur toutes les instances.

Note

Lorsque vous créez l'instance, vous créez ou utilisez un rôle d'instance EC2 existant. Pour éviter les Access Denied erreurs, vous devez ajouter des autorisations de compartiment S3 au rôle d'instance afin de donner à l'instance des autorisations d'accès au compartiment d' CodePipeline artefacts. Créez un rôle par défaut ou mettez à jour votre rôle existant avec l's3:GetObjectautorisation limitée au compartiment d'artefacts pour la région de votre pipeline.

TargetDirectory

Obligatoire : Oui (si le script est spécifié)

Le répertoire à utiliser sur votre instance Amazon EC2 pour exécuter des scripts.

DeploySpec

Obligatoire : Oui (si la spécification de déploiement est spécifiée)

Fichier à utiliser pour configurer les événements de déploiement, d'installation et de cycle de vie. Pour obtenir des descriptions et des informations sur les champs des spécifications de déploiement, consultezRéférence du fichier de spécifications du déploiement. Pour afficher une configuration d'action avec le fichier de spécifications de déploiement spécifié, consultez l'exemple dansDéclaration d'action avec exemple de spécification Deploy.

MaxBatch

Obligatoire : non

Le nombre maximum d'instances autorisées à être déployées en parallèle.

MaxError

Obligatoire : non

Le nombre maximum d'erreurs d'instance autorisées pendant le déploiement.

TargetGroupNameList

Obligatoire : non

La liste des noms des groupes cibles pour le déploiement. Vous devez déjà avoir créé les groupes cibles.

Les groupes cibles fournissent un ensemble d'instances permettant de traiter des demandes spécifiques. Si le groupe cible est spécifié, les instances seront supprimées du groupe cible avant le déploiement et rajoutées au groupe cible après le déploiement.

PreScript

Obligatoire : non

Le script à exécuter avant la phase de déploiement de l'action.

PostScript

Obligatoire : oui

Le script à exécuter après la phase de déploiement de l'action.

L'image suivante montre un exemple de la page Modifier pour l'action dans laquelle l'option Utiliser les configurations d'action est sélectionnée.

La page Modifier l'action pour un nouveau pipeline avec l'action EC2Deploy spécifiant l'utilisation de la configuration de l'action

L'image suivante montre un exemple de la page Modifier pour l'action dans laquelle l'option Utiliser un DeploySpec fichier est sélectionnée.

La page Modifier l'action pour un nouveau pipeline avec l'option d'action EC2Deploy permettant d'utiliser un fichier de spécifications

Artefacts d'entrée

  • Nombre d'objets : 1

  • Description : fichiers fournis, le cas échéant, pour prendre en charge les actions de script pendant le déploiement.

Artefacts de sortie

  • Nombre d'objets : 0

  • Description : Les artefacts de sortie ne s'appliquent pas à ce type d'action.

Autorisations relatives à la politique de rôle de service pour l'action de déploiement d'EC2

Lors de l' CodePipeline exécution de l'action, le rôle de CodePipeline service nécessite les autorisations suivantes, définies de manière appropriée pour un accès avec le moins de privilèges.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "StatementWithAllResource", "Effect": "Allow", "Action": [ "ec2:DescribeInstances", "elasticloadbalancing:DescribeTargetGroupAttributes", "elasticloadbalancing:DescribeTargetGroups", "elasticloadbalancing:DescribeTargetHealth", "ssm:CancelCommand", "ssm:DescribeInstanceInformation", "ssm:ListCommandInvocations" ], "Resource": [ "*" ] }, { "Sid": "StatementForLogs", "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:us-east-1:111122223333:log-group:/aws/codepipeline/{{pipelineName}}:*" ] }, { "Sid": "StatementForElasticloadbalancing", "Effect": "Allow", "Action": [ "elasticloadbalancing:DeregisterTargets", "elasticloadbalancing:RegisterTargets" ], "Resource": [ "arn:aws:elasticloadbalancing:us-east-1:111122223333:targetgroup/[[targetGroupName]]/*" ] }, { "Sid": "StatementForSsmOnTaggedInstances", "Effect": "Allow", "Action": [ "ssm:SendCommand" ], "Resource": [ "arn:aws:ec2:us-east-1:111122223333:instance/*" ], "Condition": { "StringEquals": { "aws:ResourceTag/{{tagKey}}": "{{tagValue}}" } } }, { "Sid": "StatementForSsmApprovedDocuments", "Effect": "Allow", "Action": [ "ssm:SendCommand" ], "Resource": [ "arn:aws:ssm:us-east-1::document/AWS-RunPowerShellScript", "arn:aws:ssm:us-east-1::document/AWS-RunShellScript" ] } ] }

Consignez les groupes pour votre pipeline dans CloudWatch les journaux

Lorsque l'action est CodePipeline exécutée, CodePipeline crée un groupe de journaux en utilisant le nom du pipeline comme suit. Cela vous permet de limiter les autorisations d'enregistrement des ressources à l'aide du nom du pipeline.

/aws/codepipeline/MyPipelineName

Les autorisations de journalisation suivantes sont incluses dans les mises à jour ci-dessus pour le rôle de service.

  • journaux : CreateLogGroup

  • journaux : CreateLogStream

  • journaux : PutLogEvents

Pour afficher les journaux dans la console à l'aide de la page de dialogue des détails des actions, l'autorisation d'affichage des journaux doit être ajoutée au rôle de console. Pour plus d'informations, consultez l'exemple de politique d'autorisations de console dansAutorisations requises pour afficher les journaux de calcul dans la console.

Autorisations relatives à la politique de rôle de service pour les CloudWatch journaux

Lorsque l'action est CodePipeline exécutée, CodePipeline crée un groupe de journaux en utilisant le nom du pipeline comme suit. Cela vous permet de limiter les autorisations d'enregistrement des ressources à l'aide du nom du pipeline.

/aws/codepipeline/MyPipelineName

Pour afficher les journaux dans la console à l'aide de la page de dialogue des détails des actions, l'autorisation d'affichage des journaux doit être ajoutée au rôle de console. Pour plus d'informations, consultez l'exemple de politique d'autorisations de console dansAutorisations requises pour afficher les journaux de calcul dans la console.

Référence du fichier de spécifications du déploiement

Lorsque l'action est CodePipeline exécutée, vous pouvez spécifier un fichier de spécifications pour configurer le déploiement sur vos instances. Le fichier de spécifications de déploiement spécifie les éléments à installer et les hooks d'événements du cycle de vie à exécuter en réponse aux événements du cycle de vie du déploiement. Le fichier de spécifications de déploiement est toujours YAML-formatted. Le fichier de spécifications de déploiement est utilisé pour :

  • mapper les fichiers sources figurant dans votre révision d'application vers leurs destinations sur l'instance ;

  • spécifier des autorisations personnalisées pour les fichiers déployés ;

  • spécifier les scripts à exécuter sur chaque instance à diverses étapes du processus de déploiement.

Le fichier de spécifications de déploiement prend en charge les paramètres de configuration de déploiement spécifiques pris CodeDeploy en charge par le AppSpec fichier. Vous pouvez utiliser directement votre AppSpec fichier existant, et tous les paramètres non pris en charge seront ignorés. Pour plus d'informations sur le AppSpec fichier dans CodeDeploy, reportez-vous à la référence du fichier de spécification de l'application dans le Guide de CodeDeploy l'utilisateur.

Les paramètres de déploiement des fichiers sont spécifiés comme suit.

  • files- Le fichier de spécifications de déploiement désigne le source: et destination: pour les fichiers de déploiement.

  • scripts- Les événements scénarisés pour le déploiement. Deux événements sont pris en charge : BeforeDeploy etAfterDeploy.

  • hooks- Le cycle de vie dépend de l'événement. Les crochets suivants sont pris en charge : ApplicationStop BeforeInstallAfterInstall,ApplicationStart, etValidateService.

    Note

    Le paramètre hooks est disponible pour des raisons de AppSpec compatibilité avec CodeDeploy et n'est disponible que dans la version 0.0 (AppSpec format). Pour ce format, CodePipeline effectuera de son mieux pour cartographier les événements.

Un espacement YAML correct doit être utilisé dans le fichier de spécifications ; sinon, une erreur est générée si les emplacements et le nombre d'espaces dans un fichier de spécifications de déploiement ne sont pas corrects. Pour plus d'informations sur l'espacement, consultez la spécification YAML.

Vous trouverez ci-dessous un exemple de fichier de spécifications de déploiement.

version: 0.1 files: - source: /index.html destination: /var/www/html/ scripts: BeforeDeploy: - location: scripts/install_dependencies timeout: 300 runas: myuser AfterDeploy: - location: scripts/start_server timeout: 300 runas: myuser

Pour afficher une configuration d'action avec le fichier de spécifications de déploiement spécifié, consultez l'exemple dansDéclaration d'action avec exemple de spécification Deploy.

Déclaration d'action

YAML
name: DeployEC2 actions: - name: EC2 actionTypeId: category: Deploy owner: AWS provider: EC2 version: '1' runOrder: 1 configuration: InstanceTagKey: Name InstanceTagValue: my-instances InstanceType: EC2 PostScript: "test/script.sh", TargetDirectory: "/home/ec2-user/deploy" outputArtifacts: [] inputArtifacts: - name: SourceArtifact region: us-east-1
JSON
{ "name": "DeployEC2", "actions": [ { "name": "EC2Deploy", "actionTypeId": { "category": "Deploy", "owner": "AWS", "provider": "EC2", "version": "1" }, "runOrder": 1, "configuration": { "InstanceTagKey": "Name", "InstanceTagValue": "my-instances", "InstanceType": "EC2", "PostScript": "test/script.sh", "TargetDirectory": "/home/ec2-user/deploy" }, "outputArtifacts": [], "inputArtifacts": [ { "name": "SourceArtifact" } ], "region": "us-east-1" } ] },

Déclaration d'action avec exemple de spécification Deploy

YAML
name: DeployEC2 actions: - name: EC2 actionTypeId: category: Deploy owner: AWS provider: EC2 version: '1' runOrder: 1 configuration: DeploySpec: "deployspec.yaml" InstanceTagKey: Name InstanceTagValue: my-instances InstanceType: EC2 outputArtifacts: [] inputArtifacts: - name: SourceArtifact region: us-east-1
JSON
{ "name": "DeployEC2", "actions": [ { "name": "EC2Deploy", "actionTypeId": { "category": "Deploy", "owner": "AWS", "provider": "EC2", "version": "1" }, "runOrder": 1, "configuration": { "DeploySpec": "deployspec.yaml", "InstanceTagKey": "Name", "InstanceTagValue": "my-instances", "InstanceType": "EC2" }, "outputArtifacts": [], "inputArtifacts": [ { "name": "SourceArtifact" } ], "region": "us-east-1" } ] },

Les ressources connexes suivantes peuvent s'avérer utiles dans le cadre de l'utilisation de cette action.