

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 d'action Amazon EC2
<a name="action-reference-EC2Deploy"></a>

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

**Note**  
Cette action prend uniquement en charge les types d'instances Linux. La taille de flotte maximale prise en charge est de 500 instances.

L'action choisira un nombre d'instances en fonction d'un maximum spécifié. Les instances défaillantes 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 dans le cas où l'action a échoué précédemment.

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

**Topics**
+ [Type d'action](#action-reference-EC2Deploy-type)
+ [Paramètres de configuration](#action-reference-EC2Deploy-parameters)
+ [Artefacts d'entrée](#action-reference-EC2Deploy-input)
+ [Artefacts de sortie](#action-reference-EC2Deploy-output)
+ [Autorisations de politique de rôle de service pour l'action de déploiement EC2](#action-reference-EC2Deploy-permissions-action)
+ [Référence du fichier de spécifications du déploiement](#action-reference-EC2Deploy-spec-reference)
+ [Déclaration d'action](#action-reference-EC2Deploy-example)
+ [Déclaration d'action avec exemple de spécification de déploiement](#action-reference-EC2Deploy-example-spec)
+ [Consultez aussi](#action-reference-EC2Deploy-links)

## Type d'action
<a name="action-reference-EC2Deploy-type"></a>
+ Catégorie : `Deploy`
+ Propriétaire : `AWS`
+ Fournisseur : `EC2`
+ Version : `1`

## Paramètres de configuration
<a name="action-reference-EC2Deploy-parameters"></a>

**InstanceTagKey**  
Obligatoire : oui  
La clé de balise des instances que vous avez créées dans Amazon EC2, telles que. `Name`

**InstanceTagValue**  
Obligatoire : non  
La valeur de balise des instances que vous avez créées dans Amazon EC2, telles que. `my-instances`  
Lorsque cette valeur n'est pas spécifiée, toutes les instances associées **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 avoir déjà créé, balisé et installé l'agent SSM sur toutes les instances.  
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:GetObject`autorisation limitée au compartiment d'artefacts correspondant à 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)  
Le 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 de spécification de déploiement, consultez[Référence du fichier de spécifications du déploiement](#action-reference-EC2Deploy-spec-reference). Pour afficher une configuration d'action avec le fichier de spécifications de déploiement spécifié, consultez l'exemple dans[Déclaration d'action avec exemple de spécification de déploiement](#action-reference-EC2Deploy-example-spec).

**MaxBatch**  
Obligatoire : non  
Le nombre maximum d'instances autorisées à être déployées en parallèle.

**MaxError**  
Obligatoire : non  
Le nombre maximal d'erreurs d'instance autorisées pendant le déploiement.

**TargetGroupNameList**  
Obligatoire : non  
Liste des noms de groupes cibles pour le déploiement. Vous devez déjà avoir créé les groupes cibles.  
Les groupes cibles fournissent un ensemble d'instances pour 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 réajouté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 page d'**édition** pour l'action dans laquelle l'option **Utiliser les configurations d'action** est sélectionnée.

![\[La page d'action Modifier pour un nouveau pipeline avec l'action EC2 Déployer spécifiée à l'aide de la configuration de l'action\]](http://docs.aws.amazon.com/fr_fr/codepipeline/latest/userguide/images/ec2deploy-action.png)


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

![\[La page d'action Modifier pour un nouveau pipeline avec l'option d'action EC2 Déployer pour utiliser un fichier de spécifications\]](http://docs.aws.amazon.com/fr_fr/codepipeline/latest/userguide/images/ec2deploy-action-spec.png)


## Artefacts d'entrée
<a name="action-reference-EC2Deploy-input"></a>
+ **Nombre d'objets :** `1`
+ **Description :** les fichiers fournis, le cas échéant, pour prendre en charge les actions du script lors du déploiement.

## Artefacts de sortie
<a name="action-reference-EC2Deploy-output"></a>
+ **Nombre d'objets :** `0` 
+ **Description :** les artefacts de sortie ne s'appliquent pas à ce type d'action.

## Autorisations de politique de rôle de service pour l'action de déploiement EC2
<a name="action-reference-EC2Deploy-permissions-action"></a>

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 l'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"
            ]
        }
    ]
}
```

------

### Enregistrez les groupes de votre pipeline dans CloudWatch des journaux
<a name="action-reference-EC2Deploy-logs"></a>

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 de journalisation des ressources en utilisant le 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 de l'action, l'autorisation d'afficher les journaux doit être ajoutée au rôle de console. Pour plus d'informations, consultez l'exemple de politique d'autorisation de console dans[Autorisations requises pour consulter les journaux de calcul dans la console](security-iam-permissions-console-logs.md).

### Politique des rôles de service et autorisations pour les CloudWatch journaux
<a name="w2aac56c13c21c11"></a>

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 de journalisation des ressources en utilisant le nom du pipeline.

```
/aws/codepipeline/MyPipelineName
```

Pour afficher les journaux dans la console à l'aide de la page de dialogue des détails de l'action, l'autorisation d'afficher les journaux doit être ajoutée au rôle de console. Pour plus d'informations, consultez l'exemple de politique d'autorisation de console dans[Autorisations requises pour consulter les journaux de calcul dans la console](security-iam-permissions-console-logs.md).

## Référence du fichier de spécifications du déploiement
<a name="action-reference-EC2Deploy-spec-reference"></a>

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 indique 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 au format YAML. 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 en charge CodeDeploy par le AppSpec fichier. Vous pouvez utiliser votre AppSpec fichier existant directement, et tous les paramètres non pris en charge seront ignorés. Pour plus d'informations sur le AppSpec fichier dans CodeDeploy, consultez la référence du fichier de spécification de l'application dans le *guide de [CodeDeploy](https://docs.aws.amazon.com/codedeploy/latest/userguide/reference-appspec-file.html)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 les `source:` et `destination:` pour les fichiers de déploiement. 
+ `scripts`- Les événements scriptés pour le déploiement. Deux événements sont pris en charge : `BeforeDeploy` et`AfterDeploy`.
+ `hooks`- Le cycle de vie dépend de l'événement. Les crochets suivants sont pris en charge : `ApplicationStop``BeforeInstall`,`AfterInstall`,`ApplicationStart`, et`ValidateService`.
**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, je CodePipeline ferai de mon mieux pour cartographier les événements.

Un espacement YAML correct doit être utilisé dans le fichier de spécifications ; dans le cas contraire, 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](http://www.yaml.org/).

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 dans[Déclaration d'action avec exemple de spécification de déploiement](#action-reference-EC2Deploy-example-spec).

## Déclaration d'action
<a name="action-reference-EC2Deploy-example"></a>

------
#### [ 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 de déploiement
<a name="action-reference-EC2Deploy-example-spec"></a>

------
#### [ 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"
        }
    ]
},
```

------

## Consultez aussi
<a name="action-reference-EC2Deploy-links"></a>

Les ressources connexes suivantes peuvent s'avérer utiles dans le cadre de l'utilisation de cette action.
+  [Tutoriel : Déploiement sur des instances Amazon EC2 avec CodePipeline](tutorials-ec2-deploy.md)— Ce didacticiel explique la création d'une instance EC2 dans laquelle vous déploierez un fichier de script, ainsi que la création du pipeline à l'aide de l'action EC2.
+ [L'action de déploiement EC2 échoue avec un message d'erreur `No such file`](troubleshooting.md#troubleshooting-ec2-deploy)— Cette rubrique décrit le dépannage des erreurs de fichier introuvable associées à l'action EC2.