

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.

# Configurez les instances Amazon EC2 avec CloudFormation
<a name="quickref-ec2-instance-config"></a>

Les extraits suivants montrent comment configurer les instances Amazon EC2 à l'aide d' CloudFormation.

**Topics**
+ [Configurations générales d'Amazon EC2](#quickref-ec2-instance-config-general)
+ [Spécifier les mappages de périphérique de stockage en mode bloc pour une instance](#scenario-ec2-bdm)

## Configurations générales d'Amazon EC2
<a name="quickref-ec2-instance-config-general"></a>

Les extraits suivants illustrent les configurations générales pour les instances Amazon EC2 utilisant CloudFormation.

**Topics**
+ [Créer une instance Amazon EC2 dans une zone de disponibilité donnée](#scenario-ec2-instance)
+ [Configurer une instance Amazon EC2 balisée avec un volume EBS et des données utilisateur](#scenario-ec2-instance-with-vol-and-tags)
+ [Définir le nom de la table DynamoDB dans les données utilisateur pour le lancement de l'instance Amazon EC2](#scenario-ec2-with-sdb-domain)
+ [Créer un volume Amazon EBS avec `DeletionPolicy`](#scenario-ec2-volume)

### Créer une instance Amazon EC2 dans une zone de disponibilité donnée
<a name="scenario-ec2-instance"></a>

L'extrait suivant crée une instance Amazon EC2 dans la zone de disponibilité spécifiée à l'aide d'une ressource. [AWS::EC2::Instance](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ec2-instance.html) Le code d'une zone de disponibilité représente son code de région suivi d'un identifiant à lettre. Vous pouvez lancer une instance dans une seule zone de disponibilité. 

#### JSON
<a name="quickref-ec2-example-6.json"></a>

```
1. "Ec2Instance": {
2.     "Type": "AWS::EC2::Instance",
3.     "Properties": {
4.         "AvailabilityZone": "aa-example-1a",
5.         "ImageId": "ami-1234567890abcdef0"
6.     }
7. }
```

#### YAML
<a name="quickref-ec2-example-6.yaml"></a>

```
1. Ec2Instance:
2.   Type: AWS::EC2::Instance
3.   Properties:
4.     AvailabilityZone: aa-example-1a
5.     ImageId: ami-1234567890abcdef0
```

### Configurer une instance Amazon EC2 balisée avec un volume EBS et des données utilisateur
<a name="scenario-ec2-instance-with-vol-and-tags"></a>

L'extrait suivant crée une instance Amazon EC2 avec une balise, un volume EBS et des données utilisateur. Il utilise une [AWS::EC2::Instance](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ec2-instance.html)ressource. Dans le même modèle, vous devez définir une [AWS::EC2::SecurityGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ec2-securitygroup.html)ressource, une [AWS::SNS::Topic](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-sns-topic.html)ressource et une [AWS::EC2::Volume](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ec2-volume.html)ressource. Le `KeyName` doit être défini dans la section du modèle `Parameters`.

Les balises peuvent vous aider à classer les AWS ressources en fonction de vos préférences, par exemple par objectif, propriétaire ou environnement. Les données utilisateur permettent de fournir des scripts ou des données personnalisés à une instance lors du lancement. Ces données facilitent l'automatisation des tâches, la configuration logicielle, l'installation de packages et d'autres actions sur une instance lors de l'initialisation. 

Pour plus d’informations sur le marquage de vos ressources, consultez la section [Marquer vos ressources Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html) dans le *Guide de l’utilisateur Amazon EC2*. 

Pour plus d’informations sur les données utilisateur, consultez la section [Utiliser les métadonnées d’instance pour gérer votre instance EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html) dans le *Guide de l’utilisateur Amazon EC2*.

#### JSON
<a name="quickref-ec2-example-7.json"></a>

```
 1. "Ec2Instance": {
 2.   "Type": "AWS::EC2::Instance",
 3.   "Properties": {
 4.     "KeyName": { "Ref": "KeyName" },
 5.     "SecurityGroups": [ { "Ref": "Ec2SecurityGroup" } ],
 6.     "UserData": {
 7.       "Fn::Base64": {
 8.         "Fn::Join": [ ":", [
 9.             "PORT=80",
10.             "TOPIC=",
11.             { "Ref": "MySNSTopic" }
12.           ]
13.         ]
14.       }
15.     },
16.     "InstanceType": "aa.size",
17.     "AvailabilityZone": "aa-example-1a",
18.     "ImageId": "ami-1234567890abcdef0",
19.     "Volumes": [
20.       {
21.         "VolumeId": { "Ref": "MyVolumeResource" },
22.         "Device": "/dev/sdk"
23.       }
24.     ],
25.     "Tags": [ { "Key": "Name", "Value": "MyTag" } ]
26.   }
27. }
```

#### YAML
<a name="quickref-ec2-example-7.yaml"></a>

```
 1. Ec2Instance:
 2.   Type: AWS::EC2::Instance
 3.   Properties:
 4.     KeyName: !Ref KeyName
 5.     SecurityGroups:
 6.       - !Ref Ec2SecurityGroup
 7.     UserData:
 8.       Fn::Base64:
 9.         Fn::Join:
10.           - ":"
11.           - - "PORT=80"
12.             - "TOPIC="
13.             - !Ref MySNSTopic
14.     InstanceType: aa.size
15.     AvailabilityZone: aa-example-1a
16.     ImageId: ami-1234567890abcdef0
17.     Volumes:
18.       - VolumeId: !Ref MyVolumeResource
19.         Device: "/dev/sdk"
20.     Tags:
21.       - Key: Name
22.         Value: MyTag
```

### Définir le nom de la table DynamoDB dans les données utilisateur pour le lancement de l'instance Amazon EC2
<a name="scenario-ec2-with-sdb-domain"></a>

L'extrait suivant crée une instance Amazon EC2 et définit un nom de table DynamoDB dans les données utilisateur à transmettre à l'instance lors du lancement. Il utilise une [AWS::EC2::Instance](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ec2-instance.html)ressource. Vous pouvez définir des paramètres ou des valeurs dynamiques dans les données utilisateur pour transmettre une instance EC2 au lancement. 

Pour plus d’informations sur les données utilisateur, consultez la section [Utiliser les métadonnées d’instance pour gérer votre instance EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html) dans le *Guide de l’utilisateur Amazon EC2*.

#### JSON
<a name="quickref-ec2-example-8.json"></a>

```
 1. "Ec2Instance": {
 2.     "Type": "AWS::EC2::Instance",
 3.     "Properties": {
 4.         "UserData": {
 5.             "Fn::Base64": {
 6.                 "Fn::Join": [
 7.                     "",
 8.                     [
 9.                         "TableName=",
10.                         {
11.                             "Ref": "DynamoDBTableName"
12.                         }
13.                     ]
14.                 ]
15.             }
16.         },
17.         "AvailabilityZone": "aa-example-1a",
18.         "ImageId": "ami-1234567890abcdef0"
19.     }
20. }
```

#### YAML
<a name="quickref-ec2-example-8.yaml"></a>

```
 1. Ec2Instance:
 2.   Type: AWS::EC2::Instance
 3.   Properties:
 4.     UserData:
 5.       Fn::Base64:
 6.         Fn::Join:
 7.           - ''
 8.           - - 'TableName='
 9.             - Ref: DynamoDBTableName
10.     AvailabilityZone: aa-example-1a
11.     ImageId: ami-1234567890abcdef0
```

### Créer un volume Amazon EBS avec `DeletionPolicy`
<a name="scenario-ec2-volume"></a>

Les extraits suivants créent un volume Amazon EBS à l'aide d'une ressource Amazon EC2. [AWS::EC2::Volume](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ec2-volume.html) Vous pouvez utiliser les propriétés `Size` or `SnapshotID` pour définir le volume, mais pas les deux. Un attribut `DeletionPolicy` est défini pour créer un instantané du volume lorsque la pile est supprimée. 

Pour plus d'informations sur l'attribut `DeletionPolicy`, consultez [Attribut DeletionPolicy](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-attribute-deletionpolicy.html).

Pour plus d'informations sur la création d'es volumes Amazon EBS, consultez [Créer un volume Amazon EBS](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-creating-volume.html).

#### JSON
<a name="quickref-ec2-example-13.json"></a>

Cet extrait crée un volume Amazon EBS d'une **taille** spécifiée. La taille est fixée à 10, mais vous pouvez l'ajuster selon vos besoins. La [AWS::EC2::Volume](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ec2-volume.html)ressource vous permet de spécifier la taille ou un identifiant de capture d'écran, mais pas les deux.

```
 1. "MyEBSVolume": {
 2.     "Type": "AWS::EC2::Volume",
 3.     "Properties": {
 4.         "Size": "10",
 5.         "AvailabilityZone": {
 6.             "Ref": "AvailabilityZone"
 7.         }
 8.     },
 9.     "DeletionPolicy": "Snapshot"
10. }
```

Cet extrait crée un volume Amazon EBS à l'aide d'un **ID d'instantané** fourni. La [AWS::EC2::Volume](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ec2-volume.html)ressource vous permet de spécifier la taille ou un identifiant de capture d'écran, mais pas les deux.

```
 1. "MyEBSVolume": {
 2.     "Type": "AWS::EC2::Volume",
 3.     "Properties": {
 4.         "SnapshotId" : "snap-1234567890abcdef0",
 5.         "AvailabilityZone": {
 6.             "Ref": "AvailabilityZone"
 7.         }
 8.     },
 9.     "DeletionPolicy": "Snapshot"
10. }
```

#### YAML
<a name="quickref-ec2-example-13.yaml"></a>

Cet extrait crée un volume Amazon EBS d'une **taille** spécifiée. La taille est fixée à 10, mais vous pouvez l'ajuster selon vos besoins. La [AWS::EC2::Volume](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ec2-volume.html)ressource vous permet de spécifier la taille ou un identifiant de capture d'écran, mais pas les deux.

```
1. MyEBSVolume:
2.   Type: AWS::EC2::Volume
3.   Properties:
4.     Size: 10
5.     AvailabilityZone:
6.       Ref: AvailabilityZone
7.   DeletionPolicy: Snapshot
```

Cet extrait crée un volume Amazon EBS à l'aide d'un **ID d'instantané** fourni. La [AWS::EC2::Volume](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ec2-volume.html)ressource vous permet de spécifier la taille ou un identifiant de capture d'écran, mais pas les deux.

```
1. MyEBSVolume:
2.   Type: AWS::EC2::Volume
3.   Properties:
4.     SnapshotId: snap-1234567890abcdef0
5.     AvailabilityZone:
6.       Ref: AvailabilityZone
7.   DeletionPolicy: Snapshot
```

## Spécifier les mappages de périphérique de stockage en mode bloc pour une instance
<a name="scenario-ec2-bdm"></a>

Un mappage de périphérique de stockage en mode bloc définit les périphériques de stockage en mode bloc qui comprennent les volumes de stockage d'instance et volumes EBS devant être attachés à l'instance. Vous pouvez spécifier un mappage de périphérique de stockage en mode bloc lors de la création d'une AMI, afin que le mappage soit utilisé par toutes les instances lancées à partir de l'AMI. Vous pouvez également spécifier un mappage de périphérique de stockage en mode bloc lorsque vous lancez une instance, afin que son mappage remplace celui spécifié dans l'AMI à partir de laquelle vous avez lancé l'instance.

Vous pouvez utiliser les extraits de modèle suivants pour spécifier les mappages de périphériques par blocs pour vos volumes EBS ou de stockage d'instance à l'aide de la `BlockDeviceMappings` propriété d'une ressource. [AWS::EC2::Instance](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ec2-instance.html) 

Pour plus d’informations sur les mappages de périphériques de stockage en mode bloc, consultez la section [Mappages de périphériques de stockage en mode bloc pour les volumes sur les instances Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/block-device-mapping-concepts.html) dans le *Guide de l’utilisateur Amazon EC2*.

**Topics**
+ [Spécifier les mappages de périphériques de stockage en mode bloc pour deux volumes EBS](#w2aac11c41c43c13b9c11)
+ [Spécifier le mappage de périphérique de stockage en mode bloc d'un volume de stockage d'instances](#w2aac11c41c43c13b9c13)

### Spécifier les mappages de périphériques de stockage en mode bloc pour deux volumes EBS
<a name="w2aac11c41c43c13b9c11"></a>

#### JSON
<a name="quickref-ec2-example-1.json"></a>

```
"Ec2Instance": {
    "Type": "AWS::EC2::Instance",
    "Properties": {
      "ImageId": "{{resolve:ssm:/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2}}",
      "KeyName": { "Ref": "KeyName" },
      "InstanceType": { "Ref": "InstanceType" },
      "SecurityGroups": [{ "Ref": "Ec2SecurityGroup" }],
      "BlockDeviceMappings": [
        {
          "DeviceName": "/dev/sda1",
          "Ebs": { "VolumeSize": "50" }
        },
        {
          "DeviceName": "/dev/sdm",
          "Ebs": { "VolumeSize": "100" }
        }
      ]
    }
  }
}
```

#### YAML
<a name="quickref-ec2-example-1.yaml"></a>

```
EC2Instance:
    Type: AWS::EC2::Instance
    Properties:
      ImageId: '{{resolve:ssm:/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2}}'
      KeyName: !Ref KeyName
      InstanceType: !Ref InstanceType
      SecurityGroups:
        - !Ref Ec2SecurityGroup
      BlockDeviceMappings:
        -
          DeviceName: /dev/sda1
          Ebs:
            VolumeSize: 50
        -
          DeviceName: /dev/sdm
          Ebs:
            VolumeSize: 100
```

### Spécifier le mappage de périphérique de stockage en mode bloc d'un volume de stockage d'instances
<a name="w2aac11c41c43c13b9c13"></a>

#### JSON
<a name="quickref-ec2-example-2.json"></a>

```
"Ec2Instance" : {
  "Type" : "AWS::EC2::Instance", 
  "Properties" : {
    "ImageId" : "{{resolve:ssm:/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2}}",
    "KeyName" : { "Ref" : "KeyName" },
    "InstanceType": { "Ref": "InstanceType" },
    "SecurityGroups" : [{ "Ref" : "Ec2SecurityGroup" }],
    "BlockDeviceMappings" : [
      {
        "DeviceName"  : "/dev/sdc",
        "VirtualName" : "ephemeral0"
      }
    ]
  }
}
```

#### YAML
<a name="quickref-ec2-example-2.yaml"></a>

```
EC2Instance:
  Type: AWS::EC2::Instance
  Properties:
    ImageId: '{{resolve:ssm:/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2}}'
    KeyName: !Ref KeyName
    InstanceType: !Ref InstanceType
    SecurityGroups:
      - !Ref Ec2SecurityGroup
    BlockDeviceMappings:
      - DeviceName: /dev/sdc
        VirtualName: ephemeral0
```