

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.

# Options de stockage pour les tâches Amazon ECS
<a name="using_data_volumes"></a>

Amazon ECS vous propose des options de stockage de easy-to-use données flexibles et économiques en fonction de vos besoins. Amazon ECS prend en charge les options de volume de données suivantes pour les conteneurs :


| Volume de données | Capacité prise en charge | Systèmes d’exploitation pris en charge | Persistance du stockage | Cas d’utilisation | 
| --- | --- | --- | --- | --- | 
| Amazon Elastic Block Store (Amazon EBS) | Fargate, Amazon EC2, instances gérées Amazon ECS | Linux, Windows (sur Amazon EC2 uniquement) | Peut être conservé lorsqu’il est associé à une tâche autonome. Éphémère lorsqu’il est rattaché à une tâche gérée par un service. | Les volumes Amazon EBS offrent un stockage par blocs économique, durable et hautement performant pour les charges de travail conteneurisées gourmandes en données. Les cas d’utilisation courants sont notamment les charges de travail transactionnelles telles que les bases de données, les bureaux virtuels et les volumes racine, ainsi que les charges de travail à débit intensif telles que le traitement des journaux et les charges de travail ETL. Pour de plus amples informations, veuillez consulter [Utilisation des volumes Amazon EBS avec Amazon ECS](ebs-volumes.md). | 
| Amazon Elastic File System (Amazon EFS) | Fargate, Amazon EC2, instances gérées Amazon ECS | Linux | Persistante | Les volumes Amazon EFS fournissent un stockage de fichiers partagé simple, doté d’une capacité de mise à l’échelle et persistant pour une utilisation avec vos tâches Amazon ECS. Ils croissent et diminuent automatiquement à mesure que vous ajoutez ou supprimez des fichiers. Les volumes Amazon EFS prennent en charge la simultanéité et sont utiles pour les applications conteneurisées qui évoluent horizontalement et nécessitent des fonctionnalités de stockage telles qu'une faible latence, un débit élevé et une cohérence. read-after-write Les cas d’utilisation courants sont notamment les charges de travail telles que l’analytique des données, le traitement multimédia, la gestion de contenu et les services Web. Pour de plus amples informations, veuillez consulter [Utilisation des volumes Amazon EFS avec Amazon ECS](efs-volumes.md). | 
| Serveur FSx de fichiers Amazon pour Windows | Amazon EC2 | Windows | Persistante | FSx pour Windows File Server, les volumes fournissent des serveurs de fichiers Windows entièrement gérés que vous pouvez utiliser pour configurer vos tâches Windows nécessitant un stockage de fichiers persistant, distribué, partagé et statique. Les cas d’utilisation courants sont notamment les applications .NET qui peuvent nécessiter des dossiers locaux comme stockage persistant pour enregistrer les résultats des applications. Amazon FSx pour Windows File Server propose un dossier local dans le conteneur qui permet à plusieurs conteneurs de lire et écrire sur le même système de fichiers soutenu par un partage SMB. Pour de plus amples informations, veuillez consulter [Utilisation FSx pour les volumes de serveurs de fichiers Windows avec Amazon ECS](wfsx-volumes.md). | 
| Amazon FSx pour NetApp ONTAP | Amazon EC2 | Linux | Persistante | Les volumes Amazon FSx for NetApp ONTAP fournissent des systèmes de fichiers NetApp ONTAP entièrement gérés que vous pouvez utiliser pour configurer vos tâches Linux nécessitant un stockage de fichiers partagé persistant, performant et riche en fonctionnalités. Amazon FSx for NetApp ONTAP prend en charge les protocoles NFS et SMB et fournit des fonctionnalités professionnelles telles que les instantanés, le clonage et la déduplication des données. Les cas d’utilisation courants sont notamment les charges de travail de calcul hautes performances, les référentiels de contenu et les applications nécessitant un stockage partagé compatible POSIX. Pour plus d'informations, consultez la section [Montage d'Amazon FSx pour les systèmes de fichiers NetApp ONTAP à partir de conteneurs Amazon ECS](https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/mount-ontap-ecs-containers.html). | 
| Volumes Docker | Amazon EC2 | Windows, Linux | Persistante | Les volumes Docker sont une fonctionnalité de l’environnement d’exécution des conteneurs Docker qui permet aux conteneurs de conserver des données en montant un répertoire à partir du système de fichiers de l’hôte. Les pilotes de volume Docker (également appelés plug-ins) sont utilisés pour intégrer les volumes de conteneurs à des systèmes de stockage externes. Les volumes Docker peuvent être gérés par des pilotes tiers ou par le pilote local intégré. Les cas d’utilisation courants des volumes Docker sont notamment la mise à disposition de volumes de données persistants ou le partage de volumes à différents emplacements sur différents conteneurs d’une même instance de conteneur. Pour de plus amples informations, veuillez consulter [Utilisation de volumes Docker avec Amazon ECS](docker-volumes.md). | 
| Montages liés | Fargate, Amazon EC2, instances gérées Amazon ECS | Windows, Linux | Éphémère | Les montages par liaison consistent en un fichier ou un répertoire sur l'hôte, tel qu'une instance Amazon EC2 AWS Fargate ou un répertoire monté sur un conteneur. Les cas d’utilisation courants des montages liés sont notamment le partage d’un volume d’un conteneur source avec d’autres conteneurs de la même tâche, ou le montage d’un volume hôte ou d’un volume vide dans un ou plusieurs conteneurs. Pour de plus amples informations, veuillez consulter [Utilisation de montages liés avec Amazon ECS](bind-mounts.md). | 

# Utilisation des volumes Amazon EBS avec Amazon ECS
<a name="ebs-volumes"></a>

Les volumes Amazon Elastic Block Store (Amazon EBS) offrent un stockage par blocs hautement disponible, économique, durable et performant pour les charges de travail gourmandes en données. Les volumes Amazon EBS peuvent être utilisés avec les tâches Amazon ECS pour les applications à haut débit et gourmandes en transactions. Pour plus d’informations sur les volumes Amazon EBS, consultez la section [Volumes Amazon EBS](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-volumes.html) dans le *Guide de l’utilisateur Amazon EBS*.

Les volumes Amazon EBS attachés aux tâches Amazon ECS sont gérés par Amazon ECS en votre nom. Lors du lancement d’une tâche autonome, vous pouvez fournir la configuration qui sera utilisée pour associer un volume EBS à la tâche. Lors de la création ou de la mise à jour du service, vous pouvez fournir la configuration qui sera utilisée pour associer un volume EBS par tâche à chaque tâche gérée par le service Amazon ECS. Vous pouvez soit configurer de nouveaux volumes vides pour les attachements, soit utiliser des instantanés pour charger des données à partir de volumes existants.

**Note**  
Lorsque vous utilisez des instantanés pour configurer des volumes, vous pouvez spécifier un `volumeInitializationRate`, en Mio/s, auquel les données sont extraites de l’instantané afin de créer des volumes entièrement initialisés dans un délai prévisible. Pour plus d’informations sur l’initialisation des volumes, consultez la section [Initialisation des volumes Amazon EBS](https://docs.aws.amazon.com/ebs/latest/userguide/initalize-volume.html) dans le *Guide de l’utilisateur Amazon EBS*. Pour plus d’informations sur la configuration des volumes Amazon EBS, consultez les sections [Report de la configuration du volume au moment du lancement dans une définition de tâche Amazon ECS](specify-ebs-config.md) et [Spécification de la configuration du volume Amazon EBS lors du déploiement Amazon ECS](configure-ebs-volume.md).

La configuration du volume est reportée à l’heure de lancement à l’aide du paramètre `configuredAtLaunch` figurant dans la définition de tâche. En fournissant la configuration des volumes au moment du lancement plutôt que dans la définition de tâche, vous pouvez créer des définitions de tâche qui ne sont pas limitées à un type de volume de données ou à des paramètres de volume EBS spécifiques. Vous pouvez ensuite réutiliser vos définitions de tâches dans différents environnements d’exécution. Par exemple, vous pouvez fournir un débit supérieur lors du déploiement de vos charges de travail de production par rapport à vos environnements de préproduction.

 Les volumes Amazon EBS associés à des tâches peuvent être chiffrés avec des clés AWS Key Management Service (AWS KMS) pour protéger vos données. Pour plus d'informations, voir,[Chiffrement des données stockées dans les volumes Amazon EBS associés aux tâches Amazon ECS](ebs-kms-encryption.md).

Pour surveiller les performances de votre volume, vous pouvez également utiliser CloudWatch les métriques Amazon. Pour plus d’informations sur les métriques Amazon ECS pour les volumes Amazon EBS, consultez les sections [CloudWatch Métriques Amazon ECS](available-metrics.md) et [Métriques Amazon ECS Container Insights](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Container-Insights-metrics-ECS.html).

L’association d’un volume Amazon EBS à une tâche est prise en charge dans toutes les [Régions AWS](https://docs.aws.amazon.com/glossary/latest/reference/glos-chap.html?icmpid=docs_homepage_addtlrcs#region) commerciales et chinoises qui prennent en charge Amazon ECS.

## Systèmes d’exploitation et capacité pris en charge
<a name="ebs-volumes-configuration"></a>

Le tableau suivant indique les systèmes d’exploitation et les configurations de capacité pris en charge.


| Capacity | Linux  | Windows | 
| --- | --- | --- | 
| Fargate |  Les volumes Amazon EBS sont pris en charge sur la version de plateforme 1.4.0 ou ultérieure (Linux). Pour de plus amples informations, veuillez consulter [Versions de plateforme Fargate pour Amazon ECS](platform-fargate.md). | Non pris en charge | 
| EC2 | Les volumes Amazon EBS sont pris en charge pour les tâches hébergées sur des instances Nitro basées sur Amazon Machine Images AMIs () optimisées pour Amazon ECS. Pour plus d’informations sur les types d’instances, consultez la section [Types d’instances](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html) dans le Guide de l’utilisateur Amazon EC2. Les volumes Amazon EBS sont pris en charge sur l’AMI optimisée pour ECS `20231219` ou une version ultérieure. Pour plus d'informations, consultez [Extraction des métadonnées d'AMI optimisée pour Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/retrieve-ecs-optimized_AMI.html). | Tâches hébergées sur des instances Nitro basées sur Amazon Machine Images () AMIs optimisées pour Amazon ECS. Pour plus d’informations sur les types d’instances, consultez la section [Types d’instances](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html) dans le Guide de l’utilisateur Amazon EC2. Les volumes Amazon EBS sont pris en charge sur l’AMI optimisée pour ECS `20241017` ou une version ultérieure. Pour plus d’informations, consultez la section [Extraction des métadonnées d’AMI optimisée pour Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/retrieve-ecs-optimized_windows_AMI.html). | 
| Instances gérées Amazon ECS | Les volumes Amazon EBS sont pris en charge pour les tâches hébergées sur des instances gérées Amazon ECS sous Linux. | Non pris en charge | 

## Considérations
<a name="ebs-volume-considerations"></a>

 Tenez compte des éléments suivants lorsque vous utilisez des volumes Amazon EBS :
+ Vous ne pouvez pas configurer de volumes Amazon EBS à rattacher à des tâches Fargate Amazon ECS dans la zone de disponibilité `use1-az3`.
+ Le type de volume Amazon EBS magnétique (`standard`) n’est pas pris en charge pour les tâches hébergées sur Fargate. Pour plus d’informations sur les types de volumes Amazon EBS, consultez la section [Volumes Amazon EBS](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-volume-types.html) dans le *Guide de l’utilisateur Amazon EC2*.
+ Un rôle IAM d’infrastructure Amazon ECS est requis lors de la création d’un service ou d’une tâche autonome qui configure un volume lors du déploiement. Vous pouvez associer la politique IAM `AmazonECSInfrastructureRolePolicyForVolumes` gérée par AWS au rôle, ou vous pouvez utiliser la politique gérée comme guide pour créer et associer votre propre politique avec des autorisations qui répondent à vos besoins spécifiques. Pour de plus amples informations, veuillez consulter [Rôle IAM d’infrastructure Amazon ECS](infrastructure_IAM_role.md).
+ Vous pouvez associer au maximum un volume Amazon EBS à chaque tâche Amazon ECS, et il doit s’agir d’un nouveau volume. Vous ne pouvez pas associer un volume Amazon EBS existant à une tâche. Toutefois, vous pouvez configurer un nouveau volume Amazon EBS à l’aide de l’instantané d’un volume existant lors du déploiement.
+ Pour utiliser les volumes Amazon EBS avec les services Amazon ECS, le contrôleur de déploiement doit être `ECS`. Les stratégies de déploiement et blue/green de déploiement sont prises en charge lors de l'utilisation de ce contrôleur de déploiement.
+ Pour qu'un conteneur de votre tâche puisse écrire sur le volume Amazon EBS monté, il doit disposer des autorisations de système de fichiers appropriées. Lorsque vous spécifiez un utilisateur non root dans votre définition de conteneur, Amazon ECS configure automatiquement le volume avec des autorisations basées sur le groupe qui permettent à l'utilisateur spécifié de lire et d'écrire sur le volume. Si aucun utilisateur n'est spécifié, le conteneur s'exécute en tant que root et dispose d'un accès complet au volume.
+ Amazon ECS ajoute automatiquement les balises réservées `AmazonECSCreated` et `AmazonECSManaged` au volume attaché. Si vous supprimez ces balises du volume, Amazon ECS ne sera pas en mesure de gérer le volume en votre nom. Pour plus d’informations sur la création d’es volumes Amazon EBS, consultez la section [Étiquetage d’un volume Amazon EBS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/specify-ebs-config.html#ebs-volume-tagging). Pour plus d’informations sur l’étiquetage de vos ressources Amazon ECS, consultez [Étiquetage de vos ressources Amazon EC2](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-using-tags.html).
+ L’allocation de volumes à partir d’un instantané d’un volume Amazon EBS contenant des partitions n’est pas prise en charge.
+ Les volumes attachés à des tâches gérées par un service ne sont pas conservés et sont toujours supprimés à la fin de la tâche.
+ Vous ne pouvez pas configurer de volumes Amazon EBS à rattacher à des tâches Amazon ECS en cours d’exécution sur AWS Outposts.

# Comportement des utilisateurs non root
<a name="ebs-non-root-behavior"></a>

Lorsque vous spécifiez un utilisateur non root dans votre définition de conteneur, Amazon ECS configure automatiquement le volume Amazon EBS avec des autorisations basées sur le groupe qui permettent à l'utilisateur spécifié de lire et d'écrire sur le volume. Le volume est monté avec les caractéristiques suivantes :
+ Le volume appartient à l'utilisateur root et au groupe root.
+ Les autorisations de groupe sont définies pour autoriser l'accès en lecture et en écriture.
+ L'utilisateur non root est ajouté au groupe approprié pour accéder au volume.

Suivez ces bonnes pratiques lorsque vous utilisez des volumes Amazon EBS avec des conteneurs autres que root :
+ Utilisez des utilisateurs IDs (UIDs) et des groupes IDs (GIDs) cohérents dans toutes vos images de conteneur pour garantir des autorisations cohérentes.
+ Créez au préalable des répertoires de points de montage dans votre image de conteneur et définissez les droits de propriété et les autorisations appropriés.
+ Testez vos conteneurs avec des volumes Amazon EBS dans un environnement de développement pour vérifier que les autorisations du système de fichiers fonctionnent comme prévu.
+ Si plusieurs conteneurs partagent un même volume dans le cadre d'une même tâche, assurez-vous qu'ils utilisent un volume compatible UIDs/GIDs ou qu'ils le montent avec des attentes d'accès cohérentes.

# Report de la configuration du volume au moment du lancement dans une définition de tâche Amazon ECS
<a name="specify-ebs-config"></a>

Pour configurer un volume Amazon EBS à rattacher à votre tâche, vous devez spécifier la configuration du point de montage dans la définition de tâche et nommer le volume. Vous devez également définir `configuredAtLaunch` sur `true`, car les volumes Amazon EBS ne peuvent pas être configurés pour être attaché dans la définition de tâche. Au lieu de cela, les volumes Amazon EBS sont configurés pour être attachés lors du déploiement.

Pour enregistrer la définition de tâche à l'aide de AWS Command Line Interface (AWS CLI), enregistrez le modèle sous forme de fichier JSON, puis transmettez-le comme entrée pour la `[register-task-definition](https://docs.aws.amazon.com/cli/latest/reference/ecs/register-task-definition.html)` commande. 

Pour créer et enregistrer une définition de tâche à l'aide du AWS Management Console, voir[Création d’une définition de tâche Amazon ECS à l’aide de la console](create-task-definition.md).

La définition de tâche suivante montre la syntaxe des objets `mountPoints` et `volumes` dans la définition de tâche. Pour plus d’informations sur les paramètres de définition des tâches, consultez la section [Paramètres de définition de tâche Amazon ECS pour Fargate](task_definition_parameters.md). Pour utiliser cet exemple, remplacez les `user input placeholders` par vos propres informations.

## Linux
<a name="linux-example"></a>

```
{
    "family": "mytaskdef",
    "containerDefinitions": [
        {
            "name": "nginx",
            "image": "public.ecr.aws/nginx/nginx:latest",
            "networkMode": "awsvpc",
           "portMappings": [
                {
                    "name": "nginx-80-tcp",
                    "containerPort": 80,
                    "hostPort": 80,
                    "protocol": "tcp",
                    "appProtocol": "http"
                }
            ],
            "mountPoints": [
                {
                    "sourceVolume": "myEBSVolume",
                    "containerPath": "/mount/ebs",
                    "readOnly": true
                }
            ]
        }
    ],
    "volumes": [
        {
            "name": "myEBSVolume",
            "configuredAtLaunch": true
        }
    ],
    "requiresCompatibilities": [
        "FARGATE", "EC2"
    ],
    "cpu": "1024",
    "memory": "3072",
    "networkMode": "awsvpc"
}
```

## Windows
<a name="windows-example"></a>

```
{
    "family": "mytaskdef",
     "memory": "4096",
     "cpu": "2048",
    "family": "windows-simple-iis-2019-core",
    "executionRoleArn": "arn:aws:iam::012345678910:role/ecsTaskExecutionRole",
    "runtimePlatform": {"operatingSystemFamily": "WINDOWS_SERVER_2019_CORE"},
    "requiresCompatibilities": ["EC2"]
    "containerDefinitions": [
        {
             "command": ["New-Item -Path C:\\inetpub\\wwwroot\\index.html -Type file -Value '<html> <head> <title>Amazon ECS Sample App</title> <style>body {margin-top: 40px; background-color: #333;} </style> </head><body> <div style=color:white;text-align:center> <h1>Amazon ECS Sample App</h1> <h2>Congratulations!</h2> <p>Your application is now running on a container in Amazon ECS.</p>'; C:\\ServiceMonitor.exe w3svc"],
            "entryPoint": [
                "powershell",
                "-Command"
            ],
            "essential": true,
            "cpu": 2048,
            "memory": 4096,
            "image": "mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2019",
            "name": "sample_windows_app",
            "portMappings": [
                {
                    "hostPort": 443,
                    "containerPort": 80,
                    "protocol": "tcp"
                }
            ],
            "mountPoints": [
                {
                    "sourceVolume": "myEBSVolume",
                    "containerPath": "drive:\ebs",
                    "readOnly": true
                }
            ]
        }
    ],
    "volumes": [
        {
            "name": "myEBSVolume",
            "configuredAtLaunch": true
        }
    ],
    "requiresCompatibilities": [
        "FARGATE", "EC2"
    ],
    "cpu": "1024",
    "memory": "3072",
    "networkMode": "awsvpc"
}
```

`mountPoints`  
Type : tableau d'objets  
Obligatoire : non  
Les points de montage pour les volumes de données dans votre conteneur. Ce paramètre correspond à `Volumes` dans l’API Docker create-container et à l’option `--volume` de docker run.  
Les conteneurs Windows peuvent monter des répertoires entiers sur le même lecteur que `$env:ProgramData`. Les conteneurs Windows ne peuvent pas monter de répertoires sur un autre lecteur, et les points de montage ne peuvent pas être utilisés sur plusieurs lecteurs. Vous devez spécifier des points de montage pour associer un volume Amazon EBS directement à une tâche Amazon ECS.    
`sourceVolume`  
Type : Chaîne  
Obligatoire : oui, lorsque des objets `mountPoints` sont utilisés  
Nom du volume à monter.  
`containerPath`  
Type : Chaîne  
Obligatoire : oui, lorsque des objets `mountPoints` sont utilisés  
Le chemin dans le conteneur où le volume sera monté.  
`readOnly`  
Type : booléen  
Obligatoire : non  
Si cette valeur est `true`, le conteneur ne peut accéder au volume qu'en lecture. Si cette valeur est `false`, le conteneur peut écrire sur le volume. La valeur par défaut est `false`.  
Pour les tâches exécutées sur des instances EC2 exécutant le système d’exploitation Windows, laissez la valeur `false` par défaut.

`name`  
Type : chaîne  
Obligatoire : non  
Nom du volume. Jusqu’à 255 lettres (majuscules et minuscules), chiffres, traits d’union (`-`) et traits de soulignement (`_`) sont autorisés. Ce nom est référencé dans le paramètre `sourceVolume` de l’objet `mountPoints` de définition du conteneur.

`configuredAtLaunch`  
Type : Boolean  
Obligatoire : oui, lorsque vous souhaitez attacher un volume EBS directement à une tâche.  
Spécifie si un volume est configurable au lancement. Lorsque ce paramètre est défini sur `true`, vous pouvez configurer le volume lorsque vous exécutez une tâche autonome, ou lorsque vous créez ou mettez à jour un service. Lorsque cette option est définie sur `false`, vous ne pourrez pas fournir d’autre configuration de volume dans la définition de tâche. Ce paramètre doit être fourni et défini sur `true` pour configurer un volume Amazon EBS à rattacher à une tâche.

# Chiffrement des données stockées dans les volumes Amazon EBS associés aux tâches Amazon ECS
<a name="ebs-kms-encryption"></a>

Vous pouvez utiliser AWS Key Management Service (AWS KMS) pour créer et gérer des clés cryptographiques qui protègent vos données. Les volumes Amazon EBS sont chiffrés au repos à l'aide AWS KMS keys de. Les types de données suivants font l’objet d’un chiffrement :
+ Données stockées au repos sur le volume
+ E/S du disque
+ Instantanés créés à partir du volume
+ Nouveaux volumes créés à partir d’instantanés chiffrés

Les volumes Amazon EBS attachés à des tâches peuvent être chiffrés en utilisant soit une Clé gérée par AWS par défaut avec l’alias `alias/aws/ebs`, soit une clé symétrique gérée par le client spécifiée dans la configuration du volume. Clés gérées par AWS Les valeurs par défaut sont uniques à chaque Compte AWS Région AWS utilisateur et sont créées automatiquement. Pour créer une clé symétrique gérée par le client, suivez les étapes décrites dans la section [Création de clés KMS de chiffrement symétrique](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk) dans le *Guide du développeur AWS KMS *.

Vous pouvez configurer le chiffrement Amazon EBS par défaut afin que tous les nouveaux volumes créés et attachés à une tâche spécifique Région AWS soient chiffrés à l'aide de la clé KMS que vous spécifiez pour votre compte. Pour plus d’informations sur le chiffrement Amazon EBS et le chiffrement par défaut, consultez la section [Chiffrement Amazon EBS](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-encryption.html) dans le *Guide de l’utilisateur Amazon EBS*.

## Comportement des instances gérées Amazon ECS
<a name="managed-instances"></a>

Vous chiffrez les volumes Amazon EBS en activant le chiffrement, soit en utilisant le chiffrement par défaut, soit en activant le chiffrement lorsque vous créez un volume que vous souhaitez chiffrer. Pour plus d’informations sur la manière d’activer le chiffrement par défaut (au niveau du compte), consultez la section [Chiffrement par défaut](https://docs.aws.amazon.com/ebs/latest/userguide/encryption-by-default.html) dans le *Guide de l’utilisateur Amazon EBS*.

Vous pouvez configurer n’importe quelle combinaison de ces clés. L’ordre de priorité des clés KMS est le suivant :

1. La clé KMS spécifiée dans la configuration du volume. Lorsque vous spécifiez une clé KMS dans la configuration du volume, elle remplace la clé par défaut d’Amazon EBS et toute clé KMS spécifiée au niveau du compte.

1. La clé KMS spécifiée au niveau du compte. Lorsque vous spécifiez une clé KMS pour le chiffrement au niveau du cluster du stockage géré Amazon ECS, celle-ci remplace le chiffrement par défaut Amazon EBS, mais ne remplace aucune clé KMS spécifiée dans la configuration du volume.

1. Chiffrement par défaut Amazon EBS. Le chiffrement par défaut s’applique lorsque vous ne spécifiez ni clé KMS au niveau du compte ni aucune clé dans la configuration du volume. Si vous activez le chiffrement Amazon EBS par défaut, il s’agit de la clé KMS que vous spécifiez pour le chiffrement par défaut. Dans le cas contraire, la valeur par défaut est Clé gérée par AWS avec l’alias `alias/aws/ebs`.
**Note**  
Si vous définissez `encrypted` sur `false` dans la configuration de votre volume, que vous ne spécifiez aucune clé KMS au niveau du compte et que vous activez le chiffrement Amazon EBS par défaut, le volume sera toujours chiffré avec la clé spécifiée pour le chiffrement Amazon EBS par défaut.

## Comportement des instances gérées hors Amazon ECS
<a name="non-managed-instances"></a>

Vous pouvez également configurer le chiffrement au niveau du cluster Amazon ECS pour le stockage géré par Amazon ECS lorsque vous créez ou mettez à jour un cluster. Le chiffrement au niveau du cluster prend effet au niveau de la tâche et peut être utilisé pour chiffrer les volumes Amazon EBS attachés à chaque tâche exécutée dans un cluster spécifique à l’aide de la clé KMS spécifiée. Pour plus d'informations sur la configuration du chiffrement au niveau du cluster pour chaque tâche, consultez [ManagedStorageConfiguration](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ManagedStorageConfiguration.html)la *référence de l'API Amazon ECS*.

Vous pouvez configurer n’importe quelle combinaison de ces clés. L’ordre de priorité des clés KMS est le suivant :

1. La clé KMS spécifiée dans la configuration du volume. Lorsque vous spécifiez une clé KMS dans la configuration du volume, elle remplace la clé par défaut d’Amazon EBS et toute clé KMS spécifiée au niveau du cluster.

1. La clé KMS spécifiée au niveau du cluster. Lorsque vous spécifiez une clé KMS pour le chiffrement au niveau du cluster du stockage géré Amazon ECS, celle-ci remplace le chiffrement par défaut Amazon EBS, mais ne remplace aucune clé KMS spécifiée dans la configuration du volume.

1. Chiffrement par défaut Amazon EBS. Le chiffrement par défaut s’applique lorsque vous ne spécifiez ni clé KMS au niveau du cluster, ni clé dans la configuration du volume. Si vous activez le chiffrement Amazon EBS par défaut, il s’agit de la clé KMS que vous spécifiez pour le chiffrement par défaut. Dans le cas contraire, la valeur par défaut est le Clé gérée par AWS avec l'alias`alias/aws/ebs`.
**Note**  
Si vous définissez `encrypted` sur `false` dans la configuration de votre volume, que vous ne spécifiez aucune clé KMS au niveau du cluster et que vous activez le chiffrement Amazon EBS par défaut, le volume sera toujours chiffré avec la clé spécifiée pour le chiffrement Amazon EBS par défaut.

## Stratégie de clé KMS gérée par le client
<a name="ebs-kms-encryption-policy"></a>

Pour chiffrer un volume EBS attaché à votre tâche à l’aide d’une clé gérée par le client, vous devez configurer votre stratégie de clé KMS afin de vous assurer que le rôle IAM que vous utilisez pour la configuration du volume dispose des autorisations nécessaires pour utiliser la clé. La stratégie de clés KMS doit inclure à la fois les autorisations `kms:CreateGrant` et `kms:GenerateDataKey*`. Les autorisations `kms:ReEncryptTo` et `kms:ReEncryptFrom` sont nécessaires pour chiffrer les volumes créés à l’aide d’instantanés. Si vous souhaitez configurer et chiffrer uniquement les nouveaux volumes vides à attacher, vous pouvez exclure les autorisations `kms:ReEncryptTo` et `kms:ReEncryptFrom`. 

L’extrait JSON suivant présente les instructions de stratégie de clé que vous pouvez attacher à votre stratégie de clé KMS. L’utilisation de ces instructions permettra à Amazon ECS d’utiliser la clé pour chiffrer le volume EBS. Pour utiliser les exemples d’instructions de politique, remplacez les `user input placeholders` informations par les vôtres. Comme toujours, ne configurez que les autorisations dont vous avez besoin.

```
{
      "Effect": "Allow",
      "Principal": { "AWS": "arn:aws:iam::111122223333:role/ecsInfrastructureRole" },
      "Action": "kms:DescribeKey",
      "Resource":"*"
    },
    {
      "Effect": "Allow",
      "Principal": { "AWS": "arn:aws:iam::111122223333:role/ecsInfrastructureRole" },
      "Action": [
      "kms:GenerateDataKey*",
      "kms:ReEncryptTo",
      "kms:ReEncryptFrom"
      ],
      "Resource":"*",
      "Condition": {
        "StringEquals": {
          "kms:CallerAccount": "aws_account_id",
          "kms:ViaService": "ec2.region.amazonaws.com"
        },
        "ForAnyValue:StringEquals": {
          "kms:EncryptionContextKeys": "aws:ebs:id"
        }
      }
    },
    {
      "Effect": "Allow",
      "Principal": { "AWS": "arn:aws:iam::111122223333:role/ecsInfrastructureRole" },
      "Action": "kms:CreateGrant",
      "Resource":"*",
      "Condition": {
        "StringEquals": {
          "kms:CallerAccount": "aws_account_id",
          "kms:ViaService": "ec2.region.amazonaws.com"
        },
        "ForAnyValue:StringEquals": {
          "kms:EncryptionContextKeys": "aws:ebs:id"
        },
        "Bool": {
          "kms:GrantIsForAWSResource": true
        }
      }
    }
```

Pour plus d’informations sur les politiques et autorisations clés, consultez les sections [Stratégies de clés AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html) et [Autorisations AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) dans le *Guide du développeur AWS KMS *. Pour résoudre les problèmes de connexion aux volumes EBS liés aux autorisations clés, consultez la section [Résolution des problèmes liés à l’attachement de volumes Amazon EBS aux tâches Amazon ECS](troubleshoot-ebs-volumes.md).

# Spécification de la configuration du volume Amazon EBS lors du déploiement Amazon ECS
<a name="configure-ebs-volume"></a>

Après avoir enregistré une définition de tâche dont le paramètre `configuredAtLaunch` est défini sur `true`, vous pouvez configurer un volume Amazon EBS lors du déploiement, lorsque vous exécutez une tâche autonome, ou lorsque vous créez ou mettez à jour un service. Pour plus d’informations sur le report de la configuration du volume au moment du lancement à l’aide du paramètre `configuredAtLaunch`, consultez la section [Report de la configuration du volume au moment du lancement dans une définition de tâche Amazon ECS](specify-ebs-config.md).

Pour configurer un volume, vous pouvez utiliser Amazon ECS APIs ou transmettre un fichier JSON en entrée pour les AWS CLI commandes suivantes :
+ `[run-task](https://docs.aws.amazon.com/cli/latest/reference/ecs/run-task.html)` pour exécuter une tâche ECS autonome.
+ `[start-task](https://docs.aws.amazon.com/cli/latest/reference/ecs/start-task.html)` pour exécuter une tâche ECS autonome dans une instance de conteneur spécifique. Cette commande ne s’applique pas aux tâches Fargate.
+ `[create-service](https://docs.aws.amazon.com/cli/latest/reference/ecs/create-service.html)` pour créer un service ECS.
+ `[update-service](https://docs.aws.amazon.com/cli/latest/reference/ecs/update-service.html)` pour mettre à jour un service existant.

**Note**  
Pour qu'un conteneur de votre tâche puisse écrire sur le volume Amazon EBS monté, il doit disposer des autorisations de système de fichiers appropriées. Lorsque vous spécifiez un utilisateur non root dans votre définition de conteneur, Amazon ECS configure automatiquement le volume avec des autorisations basées sur le groupe qui permettent à l'utilisateur spécifié de lire et d'écrire sur le volume. Si aucun utilisateur n'est spécifié, le conteneur s'exécute en tant que root et dispose d'un accès complet au volume.

 Vous pouvez également configurer un volume Amazon EBS à l’aide de l’ AWS Management Console. Pour plus d’informations, consultez [Exécution d’une application en tant que tâche Amazon ECS](standalone-task-create.md), [Création d’un déploiement de mise à jour propagée Amazon ECS](create-service-console-v2.md) et [Mettre à jour un service Amazon ECS](update-service-console-v2.md).

L’extrait de code JSON suivant présente tous les paramètres d’un volume Amazon EBS pouvant être configurés lors du déploiement. Pour utiliser ces paramètres pour configurer des volumes, remplacez `user input placeholders` par vos propres informations. Pour plus d’informations sur ces paramètres, consultez la section [Configurations de volume](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service_definition_parameters.html#sd-volumeConfigurations).

```
"volumeConfigurations": [
        {
            "name": "ebs-volume", 
            "managedEBSVolume": {
                "encrypted": true, 
                "kmsKeyId": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", 
                "volumeType": "gp3", 
                "sizeInGiB": 10, 
                "snapshotId": "snap-12345", 
                "volumeInitializationRate":100,
                "iops": 3000, 
                "throughput": 125, 
                "tagSpecifications": [
                    {
                        "resourceType": "volume", 
                        "tags": [
                            {
                                "key": "key1", 
                                "value": "value1"
                            }
                        ], 
                        "propagateTags": "NONE"
                    }
                ], 
                "roleArn": "arn:aws:iam::1111222333:role/ecsInfrastructureRole", 
                 "terminationPolicy": {
                    "deleteOnTermination": true//can't be configured for service-managed tasks, always true 
                },
                "filesystemType": "ext4"
            }
        }
    ]
```

**Important**  
Assurez-vous que le `volumeName` que vous spécifiez dans la configuration est identique au `volumeName` que vous spécifiez dans votre définition de tâche.

Pour plus d’informations sur la vérification de l’état de connexion du volume, consultez la section [Résolution des problèmes liés à l’attachement de volumes Amazon EBS aux tâches Amazon ECS](troubleshoot-ebs-volumes.md). Pour plus d'informations sur le rôle d'infrastructure Amazon ECS Gestion des identités et des accès AWS (IAM) nécessaire à l'attachement d'un volume EBS, consultez. [Rôle IAM d’infrastructure Amazon ECS](infrastructure_IAM_role.md)

Voici des exemples d’extraits de code JSON illustrant la configuration des volumes Amazon EBS. Ces exemples peuvent être utilisés en enregistrant les extraits dans des fichiers JSON et en transmettant les fichiers en tant que paramètres (en utilisant le `--cli-input-json file://filename` paramètre) pour AWS CLI les commandes. Remplacez les `user input placeholders` par vos propres informations.

## Configuration d’un volume pour une tâche autonome
<a name="ebs-run-task"></a>

L’extrait de code suivant présente la syntaxe permettant de configurer des volumes Amazon EBS à rattacher à une tâche autonome. L’extrait de code JSON suivant présente la syntaxe de configuration des paramètres `volumeType`, `sizeInGiB`, `encrypted` et `kmsKeyId`. La configuration spécifiée dans le fichier JSON est utilisée pour créer et associer un volume EBS à la tâche autonome.

```
{
   "cluster": "mycluster",
   "taskDefinition": "mytaskdef",
   "volumeConfigurations": [
        {
            "name": "datadir",
            "managedEBSVolume": {
                "volumeType": "gp3",
                "sizeInGiB": 100,
                "roleArn":"arn:aws:iam::1111222333:role/ecsInfrastructureRole",
                "encrypted": true,
                "kmsKeyId": "arn:aws:kms:region:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
            }
        }
   ]
}
```

## Configuration d’un volume lors de la création du service
<a name="ebs-create-service"></a>

L’extrait de code suivant présente la syntaxe permettant de configurer des volumes Amazon EBS à rattacher à des tâches gérées par un service. Les volumes sont extraits de l’instantané spécifié à l’aide du paramètre `snapshotId` à un débit de 200 Mio/s. La configuration spécifiée dans le fichier JSON est utilisée pour créer et attacher un volume EBS à chaque tâche gérée par le service.

```
{
   "cluster": "mycluster",
   "taskDefinition": "mytaskdef",
   "serviceName": "mysvc",
   "desiredCount": 2,
   "volumeConfigurations": [
        {
            "name": "myEbsVolume",
            "managedEBSVolume": {
              "roleArn":"arn:aws:iam::1111222333:role/ecsInfrastructureRole",
              "snapshotId": "snap-12345",
              "volumeInitializationRate": 200
            }
        }
   ]
}
```

## Configuration d’un volume lors de la mise à jour d’un service
<a name="ebs-update-service"></a>

L’extrait de code JSON suivant présente la syntaxe permettant de mettre à jour un service qui ne disposait pas auparavant de volumes Amazon EBS configurés pour être rattachés à des tâches. Vous devez fournir l’ARN d’une révision de définition de tâche pour laquelle `configuredAtLaunch` est défini sur `true`. L’extrait de code JSON suivant présente la syntaxe de configuration des paramètres `volumeType`, `sizeInGiB`, `throughput`, `iops` et `filesystemType`. Cette configuration est utilisée pour créer et rattacher un volume EBS à chaque tâche gérée par le service.

```
{
   "cluster": "mycluster",
   "taskDefinition": "mytaskdef",
   "service": "mysvc",
   "desiredCount": 2,
   "volumeConfigurations": [
        {
            "name": "myEbsVolume",
            "managedEBSVolume": {
              "roleArn":"arn:aws:iam::1111222333:role/ecsInfrastructureRole",
               "volumeType": "gp3",
                "sizeInGiB": 100,
                 "iops": 3000, 
                "throughput": 125, 
                "filesystemType": "ext4"
            }
        }
   ]
}
```

### Configuration d’un service pour qu’il n’utilise plus les volumes Amazon EBS
<a name="ebs-service-disable-ebs"></a>

L’extrait de code JSON suivant présente la syntaxe permettant de mettre à jour un service afin qu’il n’utilise plus les volumes Amazon EBS. Vous devez fournir l’ARN d’une définition de tâche pour laquelle `configuredAtLaunch` est défini sur `false` ou d’une définition de tâche qui ne comporte pas le paramètre `configuredAtLaunch`. Vous devez également fournir un objet `volumeConfigurations` vide.

```
{
   "cluster": "mycluster",
   "taskDefinition": "mytaskdef",
   "service": "mysvc",
   "desiredCount": 2,
   "volumeConfigurations": []
}
```

## Stratégie de résiliation pour les volumes Amazon EBS
<a name="ebs-volume-termination-policy"></a>

Lorsqu’une tâche Amazon ECS est résiliée, Amazon ECS utilise la valeur `deleteOnTermination` pour déterminer si le volume Amazon EBS associé à la tâche résiliée doit être supprimé. Par défaut, les volumes EBS rattachés à des tâches sont supprimés lorsque la tâche est résiliée. Pour les tâches autonomes, vous pouvez modifier ce paramètre afin de préserver le volume à la fin de la tâche.

**Note**  
Les volumes rattachés à des tâches gérées par un service ne sont pas conservés et sont toujours supprimés lorsque la tâche est résiliée.

## Étiquetage des volumes Amazon EBS
<a name="ebs-volume-tagging"></a>

Vous pouvez étiqueter les volumes Amazon EBS à l’aide de l’objet `tagSpecifications`. À l’aide de cet objet, vous pouvez fournir vos propres balises et définir la propagation des balises à partir de la définition de tâche ou de service, selon que le volume est associé à une tâche autonome ou à une tâche dans un service. Le nombre maximal de balises pouvant être attachées à un volume est 50.

**Important**  
Amazon ECS attache automatiquement les balises réservées `AmazonECSCreated` et `AmazonECSManaged` à un volume Amazon EBS. Cela signifie que vous pouvez contrôler l’attachement d’un maximum de 48 balises supplémentaires à un volume. Ces balises supplémentaires peuvent être définies par l’utilisateur, gérées par ECS ou propagées.

Si vous souhaitez ajouter des balises gérées par Amazon ECS à votre volume, vous devez définir `enableECSManagedTags` sur `true` dans vos appels à `UpdateService`, `CreateService`, `RunTask` ou `StartTask`. Si vous activez les balises gérées par Amazon ECS, celui-ci balisera automatiquement le volume avec les informations relatives au cluster et au service (`aws:ecs:clusterName` et `aws:ecs:serviceName`). Pour plus d’informations sur l’étiquetage de vos ressources Amazon ECS, consultez [Étiquetage de vos ressources Amazon EC2](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-using-tags.html).

L’extrait de code JSON suivant montre la syntaxe permettant d’étiqueter chaque volume Amazon EBS associé à chaque tâche d’un service avec une balise définie par l’utilisateur. Pour utiliser cet exemple pour créer un service, remplacez chaque `user input placeholders` par vos propres informations.

```
{
   "cluster": "mycluster",
   "taskDefinition": "mytaskdef",
   "serviceName": "mysvc",
   "desiredCount": 2,
   "enableECSManagedTags": true,
   "volumeConfigurations": [
        {
            "name": "datadir",
            "managedEBSVolume": {
                "volumeType": "gp3",
                "sizeInGiB": 100,
                 "tagSpecifications": [
                    {
                        "resourceType": "volume", 
                        "tags": [
                            {
                                "key": "key1", 
                                "value": "value1"
                            }
                        ], 
                        "propagateTags": "NONE"
                    }
                ],
                "roleArn":"arn:aws:iam:1111222333:role/ecsInfrastructureRole",
                "encrypted": true,
                "kmsKeyId": "arn:aws:kms:region:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
            }
        }
   ]
}
```

**Important**  
Vous devez spécifier un type de ressource de `volume` pour étiqueter les volumes Amazon EBS.

# Performances des volumes Amazon EBS pour les tâches Fargate à la demande
<a name="ebs-fargate-performance-limits"></a>

performances de base en termes d’IOPS et de débit des volumes Amazon EBS disponibles pour une tâche Fargate à la demande dépendent du nombre total d’unités d’UC que vous demandez pour la tâche. Si vous demandez 0,25, 0,5 ou 1 unité d’UC virtuelle (vCPU) pour votre tâche Fargate, nous vous recommandons de configurer un volume SSD à usage général (`gp2` ou `gp3`) ou un volume de disque dur (HDD) (`st1` ou `sc1`). Si vous demandez plus d’un vCPU pour votre tâche Fargate, les limites de performances de base suivantes s’appliquent à un volume Amazon EBS rattaché à la tâche. Vous pouvez obtenir des performances EBS temporairement supérieures aux limites suivantes. Cependant, nous vous recommandons de planifier votre charge de travail en fonction de ces limites.


| Unités de processeur demandées (en vCPUs) | IOPS Amazon EBS de base (16 Kio en E/S) | Débit de référence d'Amazon EBS (entrée MiBps, 128 Kio d'E/S) | Bande passante de base (en Mbit/s) | 
| --- | --- | --- | --- | 
| 2 | 3 000 | 75 | 360 | 
| 4 | 5 000 | 120 | 1 150 | 
| 8 | 10 000 | 250 | 2 300 | 
| 16 | 15 000 | 500 | 4 500 | 

**Note**  
 Lorsque vous configurez un volume Amazon EBS à rattacher à une tâche Fargate, la limite de performance Amazon EBS pour la tâche Fargate est partagée entre le stockage éphémère de la tâche et le volume attaché.

# Performances des volumes Amazon EBS pour les tâches EC2
<a name="ebs-fargate-performance-limits-ec2"></a>

Amazon EBS fournit les types de volume suivants, qui ont des caractéristiques de performances et des prix différents, ce qui vous permet d’adapter vos performances de stockage et vos coûts en fonction des besoins de vos applications. Pour plus d’informations sur les performances, notamment les IOPS par volume et le débit par volume, consultez la section [Types de volumes Amazon EBS](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-volume-types.html) dans le *Guide de l’utilisateur d’Amazon Elastic Block Store*.

# Performances des volumes Amazon EBS pour les tâches d’instances gérées Amazon ECS
<a name="ebs-managed-instances-performance"></a>

Amazon EBS fournit les types de volume suivants, qui ont des caractéristiques de performances et des prix différents, ce qui vous permet d’adapter vos performances de stockage et vos coûts en fonction des besoins de vos applications. Pour plus d’informations sur les performances, notamment les IOPS par volume et le débit par volume, consultez la section [Types de volumes Amazon EBS](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-volume-types.html) dans le *Guide de l’utilisateur d’Amazon Elastic Block Store*.

# Résolution des problèmes liés à l’attachement de volumes Amazon EBS aux tâches Amazon ECS
<a name="troubleshoot-ebs-volumes"></a>

Vous devrez peut-être résoudre des problèmes ou procéder à des vérifications en lien à l’attachement des volumes Amazon EBS aux tâches Amazon ECS.

## Vérification du statut de l’attachement aux volumes
<a name="troubleshoot-ebs-volumes-location"></a>

Vous pouvez utiliser le AWS Management Console pour consulter l'état de la pièce jointe d'un volume Amazon EBS à une tâche Amazon ECS. Si la tâche démarre et que l’attachement échoue, vous verrez également s’afficher une raison de statut que vous pourrez utiliser pour la résolution des problèmes. Le volume créé sera supprimé et la tâche arrêtée. Pour plus d’informations sur les raisons du statut, consultez la section [Raisons du statut de l’attachement d’un volume Amazon EBS aux tâches Amazon ECS](troubleshoot-ebs-volumes-scenarios.md).

**Pour consulter le statut de l’attachement d’un volume et la raison du statut à l’aide de la console**

1. Ouvrez la console à la [https://console.aws.amazon.com/ecs/version 2](https://console.aws.amazon.com/ecs/v2).

1. Sur la page **Clusters**, choisissez le cluster dans lequel votre tâche est exécutée. La page des détails du cluster s’affiche.

1. Sur la page de détails du cluster, choisissez l’onglet **Tâches**.

1. Choisissez la tâche pour laquelle vous souhaitez afficher le statut de l’attachement au volume. Vous devrez peut-être utiliser **Filtrer le statut souhaité** et choisir **Arrêté** si la tâche que vous souhaitez examiner s’est arrêtée.

1. Sur la page de détails de la tâche, choisissez l’onglet **Volumes**. Vous pourrez voir le statut de l’attachement au volume Amazon EBS sous **Statut de l’attachement**. Si l’attachement du volume à la tâche échoue, vous pouvez sélectionner le statut sous **Statut de l’attachement** pour afficher la cause de l’échec.

Vous pouvez également consulter l'état d'attachement au volume d'une tâche et la raison du statut associée à l'aide de l'[DescribeTasks](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DescribeTasks.html)API.

## Échecs de services et de tâches
<a name="service-task-failures"></a>

Vous pouvez rencontrer des échecs de service ou de tâche qui ne sont pas spécifiques aux volumes Amazon EBS et qui peuvent affecter l’attachement des volumes. Pour plus d’informations, veuillez consulter la rubrique
+ [Messages d'événement de service](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-event-messages.html)
+ [Codes d’erreur des tâches arrêtées](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/stopped-task-error-codes.html)
+ [Raisons de défaillance de l'API](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/api_failures_messages.html)

# Le conteneur ne peut pas écrire sur le volume Amazon EBS
<a name="troubleshoot-non-root-container"></a>

Utilisateur non root sans autorisations appropriées  
Lorsque vous spécifiez un utilisateur non root dans votre définition de conteneur, Amazon ECS configure automatiquement le volume avec des autorisations basées sur le groupe pour autoriser l'accès en écriture. Toutefois, si vous rencontrez toujours des problèmes d'autorisation :  
+ Vérifiez que le `user` paramètre est correctement spécifié dans la définition de votre conteneur à l'aide du format `uid:gid` (par exemple,`1001:1001`).
+ Assurez-vous que l'image de votre conteneur ne remplace pas les autorisations de l'utilisateur une fois le volume monté.
+ Vérifiez que votre application s'exécute avec l'ID utilisateur attendu en examinant les journaux du conteneur ou en utilisant Amazon ECS Exec pour inspecter le conteneur en cours d'exécution.

Utilisateur root ayant des problèmes d'autorisation  
Si aucun utilisateur n'est spécifié dans votre définition de conteneur, le conteneur s'exécute en tant qu'utilisateur root et doit avoir un accès complet au volume. Si vous rencontrez des problèmes :  
+ Vérifiez que le volume est correctement monté en vérifiant les points de montage à l'intérieur du conteneur.
+ Assurez-vous que le volume n'est pas configuré en lecture seule dans la configuration de votre point de montage.

Tâches multi-conteneurs avec différents utilisateurs  
Dans les tâches impliquant plusieurs conteneurs exécutés sous le nom d'utilisateurs différents, Amazon ECS gère automatiquement les autorisations de groupe afin de permettre à tous les utilisateurs spécifiés d'écrire sur le volume. Si les conteneurs ne peuvent pas écrire :  
+ Vérifiez que le `user` paramètre est correctement configuré pour tous les conteneurs nécessitant un accès en écriture.
+ Vérifiez que le volume est installé dans tous les conteneurs qui doivent y accéder.

Pour plus d'informations sur la configuration des utilisateurs dans les définitions de conteneurs, consultez les [paramètres de définition des tâches Amazon ECS pour Fargate.](https://docs.aws.amazon.com/./task_definition_parameters.html) 

# Raisons du statut de l’attachement d’un volume Amazon EBS aux tâches Amazon ECS
<a name="troubleshoot-ebs-volumes-scenarios"></a>

Utilisez la référence suivante pour résoudre les problèmes que vous pourriez rencontrer sous forme de raisons de statut AWS Management Console lorsque vous configurez des volumes Amazon EBS pour les associer à des tâches Amazon ECS. Pour plus d’informations sur la localisation des raisons de ces statuts dans la console, consultez la section [Vérification du statut de l’attachement aux volumes](troubleshoot-ebs-volumes.md#troubleshoot-ebs-volumes-location).

ECS n'a pas pu assumer le rôle d'infrastructure ECS configuré « arn:aws:iam : :role/ ». *111122223333* *ecsInfrastructureRole* Vérifiez que le rôle transmis possède la bonne relation d’approbation avec Amazon ECS  
Cette raison de statut apparaît dans les scénarios suivants.  
+  Vous fournissez un rôle IAM sans que la stratégie d’approbation requise ne soit attachée. Amazon ECS ne peut pas accéder au rôle IAM d’infrastructure Amazon ECS que vous fournissez si le rôle ne dispose pas de la stratégie d’approbation requise. La tâche peut rester bloquée dans l’état `DEPROVISIONING`. Pour de plus amples informations sur la stratégie d’approbation requise, consultez la section [Rôle IAM d’infrastructure Amazon ECS](infrastructure_IAM_role.md).
+ Votre utilisateur IAM n’est pas autorisé à transmettre le rôle d’infrastructure Amazon ECS à Amazon ECS. La tâche peut rester bloquée dans l’état `DEPROVISIONING`. Pour éviter ce problème, vous pouvez associer l’autorisation `PassRole` à votre utilisateur. Pour de plus amples informations, veuillez consulter [Rôle IAM d’infrastructure Amazon ECS](infrastructure_IAM_role.md).
+ Votre rôle IAM ne dispose pas des autorisations requises pour attacher un volume Amazon EBS. La tâche peut rester bloquée dans l’état `DEPROVISIONING`. Pour plus d’informations sur les autorisations spécifiques requises pour attacher des volumes Amazon EBS à des tâches, consultez la section [Rôle IAM d’infrastructure Amazon ECS](infrastructure_IAM_role.md).
Ce message d’erreur peut également s’afficher en raison d’un retard dans la propagation des rôles. Si une nouvelle tentative d’utilisation du rôle après quelques minutes d’attente ne résout pas le problème, vous avez peut-être mal configuré la stratégie d’approbation pour le rôle.

ECS n’a pas réussi à configurer le volume EBS. IdempotentParameterMismatchTrouvé « ; « Le jeton client que vous avez fourni est associé à une ressource déjà supprimée. Veuillez utiliser un autre jeton client. »  
Les AWS KMS principaux scénarios suivants peuvent entraîner l'affichage d'un `IdempotentParameterMismatch` message :  
+ Vous spécifiez un ARN, un ID ou un alias de clé KMS non valide. Dans ce scénario, la tâche peut sembler être lancée avec succès, mais elle finit par échouer car elle AWS authentifie la clé KMS de manière asynchrone. Pour plus d’informations, consultez la section [Chiffrement Amazon EBS](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-encryption.html) dans le *Guide de l’utilisateur Amazon EC2*.
+ Vous fournissez une clé gérée par le client qui ne dispose pas des autorisations permettant au rôle IAM d’infrastructure Amazon ECS d’utiliser la clé pour le chiffrement. Pour éviter les problèmes d'autorisation liés aux politiques clés, consultez l'exemple de politique AWS KMS clé dans la section [Chiffrement des données pour les volumes Amazon EBS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ebs-volumes.html#ebs-kms-encryption).
Vous pouvez configurer Amazon EventBridge pour envoyer des événements de volume Amazon EBS et des événements de modification de l'état des tâches Amazon ECS à une cible, telle que CloudWatch des groupes Amazon. Vous pouvez ensuite utiliser ces événements pour identifier le problème spécifique lié aux clés gérées par le client qui a affecté l’attachement du volume. Pour plus d’informations, veuillez consulter la rubrique  
+  [Comment créer un groupe de CloudWatch journaux à utiliser comme cible pour une EventBridge règle ?](https://repost.aws/knowledge-center/cloudwatch-log-group-eventbridge) sur AWS Re:post.
+ [Événements de modification de l’état de tâche](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_cwe_events.html#ecs_task_events)
+ [ EventBridge Événements Amazon pour Amazon EBS](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-cloud-watch-events.html) dans le guide de l'*utilisateur Amazon EBS*.

ECS a dépassé le délai imparti lors de la configuration de l’attachement du volume EBS à votre tâche.  
Les scénarios suivants liés au format du système de fichiers entraînent l’affichage de ce message.  
+ Le format du système de fichiers que vous spécifiez lors de la configuration n’est pas compatible avec le [système d’exploitation de la tâche](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RuntimePlatform.html).
+ Vous configurez un volume Amazon EBS pour qu’il soit créé à partir d’un instantané, et le format du système de fichiers de l’instantané n’est pas compatible avec le système d’exploitation de la tâche. Pour les volumes créés à partir d’un instantané, vous devez spécifier le même type de système de fichiers que celui utilisé par le volume lors de la création de l’instantané.
Vous pouvez utiliser les journaux de l’agent de conteneur Amazon ECS pour résoudre les problèmes liés à ce message pour les tâches EC2. Pour plus d’informations, consultez les sections [Emplacements des fichiers journaux Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/logs.html) et [Collecteur de journaux Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-logs-collector.html).

# Utilisation des volumes Amazon EFS avec Amazon ECS
<a name="efs-volumes"></a>

Amazon Elastic File System (Amazon EFS) fournit un stockage de fichiers simple et évolutif à utiliser avec vos tâches Amazon ECS. Avec Amazon EFS, la capacité de stockage est élastique. Elle augmente et diminue automatiquement au fil de vos ajouts et suppressions de fichiers. Vos applications peuvent disposer de l'espace de stockage qui leur est nécessaire, au moment où elles en ont besoin.

Vous pouvez utiliser le système de fichiers Amazon EFS avec Amazon ECS pour exporter des données du système de fichiers dans l'ensemble de votre flotte d'instances de conteneur. Ainsi, vos tâches ont accès au même stockage permanent, quelle que soit l'instance sur laquelle elles se retrouvent. Vos définitions de tâche doivent faire référence aux montages des volumes de l'instance de conteneur pour utiliser le système de fichiers.

Pour obtenir un didacticiel, consultez [Configuration des systèmes de fichiers Amazon EFS pour Amazon ECS à l’aide de la console](tutorial-efs-volumes.md).

## Considérations
<a name="efs-volume-considerations"></a>

 Tenez compte des éléments suivants lorsque vous utilisez des volumes Amazon EFS :
+ Pour les tâches qui s’exécutent sur EC2, la prise en charge du système de fichiers Amazon EFS a été ajoutée en tant que version préliminaire publique à l’AMI optimisée pour Amazon ECS version `20191212` et l’agent de conteneur version 1.35.0. Toutefois, elle a été rendue généralement disponible avec l'AMI optimisée pour Amazon ECS version `20200319` et l'agent de conteneur version 1.38.0, qui contenait les fonctions de point d'accès Amazon EFS et d'autorisation IAM. Nous vous recommandons d'utiliser la version `20200319` de l'AMI optimisée pour Amazon ECS ou une version ultérieure pour utiliser ces fonctions. Pour de plus amples informations, veuillez consulter [Linux optimisé pour Amazon ECS AMIs](ecs-optimized_AMI.md).
**Note**  
Si vous créez votre propre AMI, vous devez utiliser l'agent de conteneur version 1.38.0 ou une version ultérieure, `ecs-init` version 1.38.0-1 ou une version ultérieure et exécuter les commandes suivantes sur votre instance Amazon EC2 pour activer le plug-in de volume Amazon ECS. Les commandes varient selon que vous utilisez Amazon Linux 2 ou Amazon Linux comme image de base.  
Amazon Linux 2  

  ```
  yum install amazon-efs-utils
  systemctl enable --now amazon-ecs-volume-plugin
  ```
Amazon Linux  

  ```
  yum install amazon-efs-utils
  sudo shutdown -r now
  ```
+ Pour les tâches hébergées sur Fargate, les systèmes de fichiers Amazon EFS sont pris en charge sur la version 1.4.0 de la plateforme ou une version ultérieure (Linux). Pour de plus amples informations, veuillez consulter [Versions de plateforme Fargate pour Amazon ECS](platform-fargate.md).
+ Lorsque vous utilisez des volumes Amazon EFS pour des tâches hébergées sur Fargate, Fargate crée un conteneur de supervision chargé de la gestion du volume Amazon EFS. Le conteneur superviseur utilise une petite partie de la mémoire et de l’UC de la tâche. Le conteneur de supervision est visible lors de l'interrogation du point de terminaison de métadonnées de tâche version 4. En outre, il est visible dans CloudWatch Container Insights en tant que nom du conteneur`aws-fargate-supervisor`. Pour plus d’informations sur l’utilisation d’EC2, consultez la section [Point de terminaison des métadonnées de tâches Amazon ECS version 4](task-metadata-endpoint-v4.md). Pour plus d’informations sur l’utilisation de Fargate, consultez la section [Point de terminaison des métadonnées de tâches Amazon ECS version 4 pour les tâches sur Fargate](task-metadata-endpoint-v4-fargate.md).
+ L'utilisation de volumes Amazon EFS ou la spécification d'une `EFSVolumeConfiguration` n'est pas prise en charge sur les instances externes.
+ L’utilisation de volumes Amazon EFS est prise en charge pour les tâches exécutées sur des instances gérées Amazon ECS.
+ Nous vous recommandons de définir le paramètre `ECS_ENGINE_TASK_CLEANUP_WAIT_DURATION` dans le fichier de configuration de l'agent sur une valeur inférieure à la valeur par défaut (environ une heure). Cette modification permet d'éviter l'expiration des informations d'identification de montage EFS et permet le nettoyage des montages qui ne sont pas utilisés.  Pour plus d'informations, consultez [Configuration de l'agent de conteneur Amazon ECS](ecs-agent-config.md).

## Utilisation des points d’accès Amazon EFS
<a name="efs-volume-accesspoints"></a>

Les points d'accès Amazon EFS sont des points d'entrée spécifiques à l'application dans un système de fichiers EFS pour gérer l'accès des applications aux jeux de données partagés. Pour de plus amples informations sur les points d'accès Amazon EFS et sur la façon de les contrôler, veuillez consulter [Utilisation des points d'accès Amazon EFS](https://docs.aws.amazon.com/efs/latest/ug/efs-access-points.html) dans le *Guide de l'utilisateur Amazon Elastic File System*.

Les points d’accès peuvent appliquer de manière forcée une identité d’utilisateur, y compris les groupes POSIX de l’utilisateur, pour toutes les demandes de système de fichiers effectuées via le point d’accès. Les points d'accès peuvent également imposer un répertoire racine différent au système de fichiers. Cela permet aux clients d'accéder uniquement aux données stockées dans le répertoire spécifié ou dans ses sous-répertoires.

**Note**  
Lors de la création d'un point d'accès EFS, spécifiez un chemin d'accès sur le système de fichiers qui servira de répertoire racine. Lorsque vous faites référence au système de fichiers EFS avec un ID de point d'accès dans votre définition de tâche Amazon ECS, le répertoire racine doit être omis ou défini sur `/` ce qui permet d'appliquer le chemin défini sur le point d'accès EFS.

Vous pouvez utiliser le rôle IAM d'une tâche Amazon ECS pour imposer l'utilisation d'un point d'accès particulier par des applications spécifiques. En combinant des politiques IAM avec des points d'accès, vous pouvez fournir un accès sécurisé à des ensembles de données spécifiques pour vos applications. Pour plus d'informations sur l'utilisation des rôles IAM de tâche, consultez [rôle IAM de tâche Amazon ECS](task-iam-roles.md).

# Pratiques exemplaires en matière d’utilisation des volumes Amazon EFS avec Amazon ECS
<a name="efs-best-practices"></a>

Tenez compte des recommandations suivantes en matière de pratique exemplaire lorsque vous utilisez Amazon EFS avec Amazon ECS.

## Contrôles de sécurité et d’accès pour les volumes Amazon EFS
<a name="storage-efs-security"></a>

Amazon EFS propose des fonctionnalités de contrôle d’accès que vous pouvez utiliser pour garantir que les données stockées dans un système de fichiers Amazon EFS sont sécurisées et accessibles uniquement depuis les applications qui en ont besoin. Vous pouvez sécuriser les données en activant le chiffrement au repos et en transit. Pour en savoir plus, consultez [Chiffrement des données dans Amazon EFS](https://docs.aws.amazon.com/efs/latest/ug/encryption.html) que vous trouverez dans le *guide de l’utilisateur Amazon Elastic File System*.

Outre le chiffrement des données, vous pouvez également utiliser Amazon EFS pour restreindre l’accès à un système de fichiers. Vous pouvez implémenter le contrôle d’accès dans EFS de trois manières.
+ **Groupes de sécurité** : avec les cibles de montage Amazon EFS, vous pouvez configurer un groupe de sécurité utilisé pour autoriser ou refuser le trafic réseau. Vous pouvez configurer le groupe de sécurité associé à Amazon EFS afin d’autoriser le trafic NFS (port 2049) provenant du groupe de sécurité associé à vos instances Amazon ECS ou, lorsque vous utilisez le mode réseau `awsvpc`, à la tâche Amazon ECS.
+ **IAM** : vous pouvez restreindre l’accès à un système de fichiers Amazon EFS à l’aide d’IAM. Une fois configurées, les tâches Amazon ECS nécessitent un rôle IAM pour accéder au système de fichiers afin de monter un système de fichiers EFS. Pour plus d’informations, consultez la section [Utilisation d’IAM pour contrôler l’accès aux données du système de fichiers](https://docs.aws.amazon.com/efs/latest/ug/iam-access-control-nfs-efs.html) dans le *Guide de l’utilisateur Amazon Elastic File System*.

  Les politiques IAM peuvent également appliquer des conditions prédéfinies, telles que l’obligation pour un client d’utiliser TLS lors de la connexion à un système de fichiers Amazon EFS. Pour plus d’informations, consultez la section [Clés de condition Amazon EFS pour les clients](https://docs.aws.amazon.com/efs/latest/ug/iam-access-control-nfs-efs.html#efs-condition-keys-for-nfs) dans le *Guide de l’utilisateur Amazon Elastic File System*.
+ **Points d’accès Amazon EFS** : les points d’accès Amazon EFS sont des points d’entrée spécifiques à l’application dans un système de fichiers Amazon EFS. Vous pouvez utiliser des points d’accès pour imposer une identité utilisateur, y compris les groupes POSIX de l’utilisateur, pour toutes les requêtes du système de fichiers effectuées via le point d’accès. Les points d'accès peuvent également imposer un répertoire racine différent au système de fichiers. Cela permet aux clients d’accéder uniquement aux données stockées dans le répertoire spécifié ou dans ses sous-répertoires.

### politiques IAM
<a name="storage-efs-security-iam"></a>

Vous pouvez utiliser les politiques IAM pour contrôler l’accès au système de fichiers Amazon EFS.

Vous pouvez spécifier les actions suivantes pour les clients sur un système de fichiers à l’aide d’une stratégie de système de fichiers.


| Action | Description | 
| --- | --- | 
|  `elasticfilesystem:ClientMount`  |  Fournit un accès en lecture seule à un système de fichiers.  | 
|  `elasticfilesystem:ClientWrite`  |  Fournit les droits d’écriture sur un système de fichiers.  | 
|  `elasticfilesystem:ClientRootAccess`  |  Permet d’utiliser l’utilisateur root lors de l’accès à un système de fichiers.  | 

Vous devez spécifier chaque action dans une politique. Les politiques peuvent être définies comme suit :
+ Basé sur le client : attachez la politique au rôle de tâche

  Définissez l’option **Autorisation IAM** lorsque vous créez la définition de tâche. 
+ Basé sur les ressources : attachez la politique au système de fichiers Amazon EFS

  Si la stratégie basée sur les ressources n’existe pas, l’accès est accordé par défaut à tous les principaux (\$1) lors de la création du système de fichiers. 

Lorsque vous définissez l’option **Autorisation IAM**, nous fusionnons la politique associée au rôle de tâche et la politique basée sur les ressources Amazon EFS. L’option **Autorisation IAM** transmet l’identité de la tâche (le rôle de la tâche) avec la politique à Amazon EFS. Cela permet à la politique basée sur les ressources Amazon EFS d’avoir un contexte pour l’utilisateur ou le rôle IAM spécifié dans la politique. Si vous ne définissez pas cette option, la politique au niveau des ressources Amazon EFS identifie l’utilisateur IAM comme « anonyme ».

Envisagez d’implémenter les trois contrôles d’accès sur un système de fichiers Amazon EFS pour une sécurité maximale. Par exemple, vous pouvez configurer le groupe de sécurité attaché à un point de montage Amazon EFS pour n’autoriser que le trafic NFS entrant provenant d’un groupe de sécurité associé à votre instance de conteneur ou à votre tâche Amazon ECS. En outre, vous pouvez configurer Amazon EFS pour exiger un rôle IAM pour accéder au système de fichiers, même si la connexion provient d’un groupe de sécurité autorisé. Enfin, vous pouvez utiliser les points d’accès Amazon EFS pour imposer les autorisations des utilisateurs POSIX et spécifier des répertoires racines pour les applications.

L’extrait de définition de tâche suivant illustre comment monter un système de fichiers Amazon EFS à l’aide d’un point d’accès.

```
"volumes": [
    {
      "efsVolumeConfiguration": {
        "fileSystemId": "fs-1234",
        "authorizationConfig": {
          "accessPointId": "fsap-1234",
          "iam": "ENABLED"
        },
        "transitEncryption": "ENABLED",
        "rootDirectory": ""
      },
      "name": "my-filesystem"
    }
]
```

## Performance des volumes Amazon EFS
<a name="storage-efs-performance"></a>

Amazon EFS propose deux modes de performance : les systèmes de I/O. General Purpose is suitable for latency-sensitive applications such as content management systems and CI/CD tools. In contrast, Max I/O fichiers General Purpose et Max conviennent aux charges de travail telles que l'analyse de données, le traitement multimédia et l'apprentissage automatique. Ces charges de travail doivent effectuer des opérations parallèles à partir de centaines, voire de milliers de conteneurs, et nécessitent un débit global et un nombre d’opérations d’entrée/sortie par seconde (IOPS) aussi élevés que possible. Pour plus d’informations, consultez la section [Modes de performances Amazon EFS](https://docs.aws.amazon.com/efs/latest/ug/performance.html#performancemodes) dans le *Guide de l’utilisateur Amazon Elastic File System*.

Certaines charges de travail sensibles à la latence nécessitent à la fois les I/O niveaux les plus élevés fournis par le mode de I/O performance Max et les niveaux de latence plus faibles fournis par le mode de performance General Purpose. Pour ce type de charge de travail, nous vous recommandons de créer plusieurs systèmes de fichiers en mode de performance Usage général. De cette manière, vous pouvez répartir la charge de travail de vos applications sur tous ces systèmes de fichiers, à condition que la charge de travail et les applications le permettent.

## Débit des volumes Amazon EFS
<a name="storage-efs-performance-throughput"></a>

Tous les systèmes de fichiers Amazon EFS présentent un débit mesuré associé qui est déterminé soit par la quantité de débit alloué pour les systèmes de fichiers utilisant le *débit alloué*, soit par la quantité de données stockées dans la classe de stockage EFS Standard ou One Zone pour les systèmes de fichiers utilisant le *débit de débordement*. Pour plus d’informations, consultez la section [Compréhension du débit mesuré](https://docs.aws.amazon.com/efs/latest/ug/performance.html#read-write-throughput) dans le *Guide de l’utilisateur Amazon Elastic File System*.

Le mode de débit par défaut pour les systèmes de fichiers Amazon EFS est le mode de débordement. Avec le mode de débordement, le débit disponible pour un système de fichiers augmente ou diminue au fur et à mesure que le système de fichiers grandit. Étant donné que les charges de travail basées sur des fichiers connaissent généralement des pics, nécessitant des niveaux de débit élevés pendant certaines périodes et des niveaux de débit plus faibles le reste du temps, Amazon EFS est conçu pour déborder afin d’autoriser des niveaux de débit élevés pendant certaines périodes. En outre, étant donné que de nombreuses charges de travail sont gourmandes en lecture, les opérations de lecture sont mesurées selon un ratio de 1:3 par rapport aux autres opérations NFS (comme l’écriture). 

Tous les systèmes de fichiers Amazon EFS fournissent une performance de référence constante de 50 MB/s  % pour chaque To de stockage Amazon EFS Standard ou Amazon EFS One Zone. Tous les systèmes de fichiers (quelle que soit leur taille) peuvent atteindre 100 MB/s. File systems with more than 1TB of EFS Standard or EFS One Zone storage can burst to 100 MB/s for each TB. Because read operations are metered at a 1:3 ratio, you can drive up to 300 MiBs/s pour chaque TiB de débit de lecture. Lorsque vous ajoutez des données à votre système de fichiers, le débit maximal disponible pour le système de fichiers évolue de manière linéaire et automatique en fonction de votre stockage dans la classe de stockage Amazon EFS Standard. Si vous avez besoin d’un débit supérieur à celui que vous pouvez obtenir avec la quantité de données stockées, vous pouvez configurer le débit alloué en fonction des besoins spécifiques de votre charge de travail.

Le débit du système de fichiers est partagé entre toutes les instances Amazon EC2 connectées à un système de fichiers. Par exemple, un système de fichiers de 1 To capable d'atteindre 100 % MB/s de débit peut en piloter 100 à MB/s partir d'une seule instance Amazon EC2 pouvant chacune générer 10 Mo/s. Pour plus d’informations, consultez la section [Performances Amazon EFS](https://docs.aws.amazon.com/efs/latest/ug/performance.html) dans le *Guide de l’utilisateur Amazon Elastic File System*.

## Optimisation des coûts pour les volumes Amazon EFS
<a name="storage-efs-costopt"></a>

Amazon EFS simplifie la mise à l’échelle du stockage pour vous. Les systèmes de fichiers Amazon EFS augmentent automatiquement au fur et à mesure que vous ajoutez des données. En particulier avec le mode de *débit de débordement* Amazon EFS, le débit sur Amazon EFS est mis à l’échelle à mesure que la taille de votre système de fichiers dans la classe de stockage standard augmente. Pour améliorer le débit sans payer de frais supplémentaires pour le débit alloué sur un système de fichiers EFS, vous pouvez partager un système de fichiers Amazon EFS avec plusieurs applications. À l’aide des points d’accès Amazon EFS, vous pouvez implémenter l’isolation du stockage dans les systèmes de fichiers Amazon EFS partagés. Ainsi, même si les applications partagent toujours le même système de fichiers, elles ne peuvent accéder aux données que si vous les y autorisez.

Au fur et à mesure que vos données augmentent, Amazon EFS vous aide à déplacer automatiquement les fichiers rarement consultés vers une classe de stockage inférieure. La classe de stockage Amazon EFS Standard-Infrequent Access (IA) réduit les coûts de stockage pour les fichiers qui ne sont pas consultés quotidiennement. La haute disponibilité, la durabilité, l’élasticité et l’accès au système de fichiers POSIX fournis par Amazon EFS sont conservés. Pour plus d’informations, consultez la section [Classes de stockage EFS](https://docs.aws.amazon.com/efs/latest/ug/features.html) dans le *Guide de l’utilisateur Amazon Elastic File System*.

Envisagez d’utiliser les stratégies de cycle de vie Amazon EFS pour réaliser automatiquement des économies en transférant les fichiers rarement consultés vers le stockage Amazon EFS IA. Pour plus d’informations, consultez [Gestion du cycle de vie Amazon EFS](https://docs.aws.amazon.com/efs/latest/ug/lifecycle-management-efs.html) dans le *guide de l’utilisateur Amazon Elastic File System*.

Lorsque vous créez un système de fichiers Amazon EFS, vous pouvez choisir si Amazon EFS réplique vos données sur plusieurs zones de disponibilité (standard) ou les stocke de manière redondante dans une seule zone de disponibilité. La classe de stockage Amazon EFS One Zone permet de réduire considérablement les coûts de stockage par rapport aux classes de stockage Amazon EFS Standard. Envisagez d’utiliser la classe de stockage Amazon EFS One Zone pour les charges de travail ne nécessitant pas de résilience multi-AZ. Vous pouvez réduire davantage le coût du stockage Amazon EFS One Zone en déplaçant les fichiers rarement consultés vers Amazon EFS One Zone-Infrequent Access. Pour plus d'informations, veuillez consulter [Amazon EFS Infrequent Access](https://aws.amazon.com/efs/features/infrequent-access/).

## Protection des données des volumes Amazon EFS
<a name="storage-efs-dataprotection"></a>

Amazon EFS stocke vos données de manière redondante dans plusieurs zones de disponibilité pour les systèmes de fichiers à l’aide de classes de stockage standard. Si vous sélectionnez les classes de stockage Amazon EFS One Zone, vos données sont stockées de manière redondante dans une seule zone de disponibilité. Amazon EFS est en outre conçu pour fournir 99,99999999999 % (11 9) de durabilité sur une année donnée.

Comme dans tout environnement, il est recommandé de disposer d’une sauvegarde et de mettre en place des mesures de protection contre les suppressions accidentelles. Pour les données Amazon EFS, cette bonne pratique inclut une sauvegarde fonctionnelle et régulièrement testée à l'aide de AWS Backup. Les systèmes de fichiers utilisant les classes de stockage Amazon EFS One Zone sont configurés par défaut pour sauvegarder automatiquement les fichiers lors de la création du système de fichiers, sauf si vous choisissez de désactiver cette fonctionnalité. Pour plus d’informations, consultez la section [Sauvegarde des systèmes de fichiers EFS](https://docs.aws.amazon.com/efs/latest/ug/awsbackup.html) dans le *Guide de l’utilisateur Amazon Elastic File System*.

# Spécification d’un système de fichiers Amazon EFS dans une définition de tâche Amazon ECS
<a name="specify-efs-config"></a>

Pour utiliser des volumes de système de fichiers Amazon EFS pour vos conteneurs, vous devez spécifier les configurations de volume et de point de montage dans votre définition de tâche. L'extrait de JSON de définition de tâche indiqué ci-dessous illustre la syntaxe des objets `volumes` et `mountPoints` pour un conteneur.

```
{
    "containerDefinitions": [
        {
            "name": "container-using-efs",
            "image": "public.ecr.aws/amazonlinux/amazonlinux:latest",
            "entryPoint": [
                "sh",
                "-c"
            ],
            "command": [
                "ls -la /mount/efs"
            ],
            "mountPoints": [
                {
                    "sourceVolume": "myEfsVolume",
                    "containerPath": "/mount/efs",
                    "readOnly": true
                }
            ]
        }
    ],
    "volumes": [
        {
            "name": "myEfsVolume",
            "efsVolumeConfiguration": {
                "fileSystemId": "fs-1234",
                "rootDirectory": "/path/to/my/data",
                "transitEncryption": "ENABLED",
                "transitEncryptionPort": integer,
                "authorizationConfig": {
                    "accessPointId": "fsap-1234",
                    "iam": "ENABLED"
                }
            }
        }
    ]
}
```

`efsVolumeConfiguration`  
Type : objet  
Obligatoire : non  
Ce paramètre est spécifié lorsque vous utilisez des volumes Amazon EFS.    
`fileSystemId`  
Type : Chaîne  
Obligatoire : oui  
ID du système de fichiers Amazon EFS à utiliser.  
`rootDirectory`  
Type : chaîne  
Obligatoire : non  
Répertoire du système de fichiers Amazon EFS à monter en tant que répertoire racine à l'intérieur de l'hôte. Si ce paramètre est omis, la racine du volume Amazon EFS est utilisée. La spécification de `/` a le même effet que l'omission de ce paramètre.  
Si un point d'accès EFS est spécifié dans `authorizationConfig`, le paramètre de répertoire racine doit être omis ou défini sur `/` ce qui permet d'appliquer le chemin défini sur le point d'accès EFS.  
`transitEncryption`  
Type : Chaîne  
Valeurs valides : `ENABLED` \$1 `DISABLED`  
Obligatoire : non  
Indique si vous souhaitez activer ou non le chiffrement des données Amazon EFS en transit entre l'hôte Amazon ECS et le serveur Amazon EFS. Si l'autorisation Amazon EFS IAM est utilisée, le chiffrement de transit doit être activé. Si ce paramètre est omis, la valeur par défaut `DISABLED` est utilisée. Pour plus d'informations, consultez [Chiffrement des données en transit](https://docs.aws.amazon.com/efs/latest/ug/encryption-in-transit.html) dans le *Guide de l'utilisateur Amazon Elastic File System*.  
`transitEncryptionPort`  
Type : Integer  
Obligatoire : non  
Port à utiliser lors de l'envoi de données chiffrées entre l'hôte Amazon ECS et le serveur Amazon EFS. Si vous ne spécifiez pas de port de chiffrement en transit, il utilise la stratégie de sélection de port adoptée par l'assistant de montage Amazon EFS. Pour plus d'informations, consultez [Assistant de montage EFS](https://docs.aws.amazon.com/efs/latest/ug/efs-mount-helper.html) dans le *Guide de l'utilisateur Amazon Elastic File System User*.  
`authorizationConfig`  
Type : objet  
Obligatoire : non  
Détails de configuration des autorisations pour le système de fichiers Amazon EFS.    
`accessPointId`  
Type : chaîne  
Obligatoire : non  
ID du point d'accès à utiliser. Si un point d'accès est spécifié, la valeur du répertoire racine dans `efsVolumeConfiguration` doit être omise ou définie sur `/` qui applique le chemin défini sur le point d'accès EFS. Si un point d'accès est utilisé, le chiffrement de transit doit être activé dans `EFSVolumeConfiguration`. Pour plus d'informations, consultez [Utilisation des points d'accès Amazon EFS](https://docs.aws.amazon.com/efs/latest/ug/efs-access-points.html) dans le *Guide de l'utilisateur Amazon Elastic File System*.  
`iam`  
Type : Chaîne  
Valeurs valides : `ENABLED` \$1 `DISABLED`  
Obligatoire : non  
 Indique s'il faut ou non utiliser le rôle IAM de tâche Amazon ECS spécifié dans une définition de tâche lors du montage du système de fichiers Amazon EFS. Si cette option est activée, le chiffrement en transit doit être activé dans la configuration `EFSVolumeConfiguration`. Si ce paramètre est omis, la valeur par défaut `DISABLED` est utilisée. Pour plus d'informations, consultez [Rôles IAM pour les tâches](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html).

# Configuration des systèmes de fichiers Amazon EFS pour Amazon ECS à l’aide de la console
<a name="tutorial-efs-volumes"></a>

Découvrez comment utiliser les systèmes de fichiers Amazon Elastic File System (Amazon EFS) avec Amazon ECS.

## Étape 1 : Créer un cluster Amazon ECS
<a name="efs-create-cluster"></a>

Pour créer un cluster Amazon ECS, effectuez les étapes suivantes. 

**Pour créer un nouveau cluster (console Amazon ECS)**

Avant de commencer, attribuez l'autorisation IAM adéquate. Pour de plus amples informations, veuillez consulter [Exemples de cluster Amazon ECS](security_iam_id-based-policy-examples.md#IAM_cluster_policies).

1. Ouvrez la console à la [https://console.aws.amazon.com/ecs/version 2](https://console.aws.amazon.com/ecs/v2).

1. Dans la barre de navigation, sélectionnez la région à utiliser.

1. Dans le panneau de navigation, choisissez **Clusters**.

1. Sur la page **Clusters**, choisissez **Create Cluster** (Créer un cluster).

1. Sous **Cluster configuration** (Configuration de cluster), dans **Cluster name** (Nom du cluster), saisissez `EFS-tutorial`.

1. (Facultatif) Pour modifier le VPC et les sous-réseaux d'où vos tâches et services se lancent, sous **Networking** (Réseaux), effectuez l'une des opérations suivantes :
   + Pour supprimer un sous-réseau, sous **Subnets** (Sous-réseaux), choisissez **X** pour chaque sous-réseau que vous souhaitez supprimer.
   + Pour passer à un VPC autre celui par **défaut**, sous **VPC**, choisissez un **VPC** existant, puis sous **Subnets** (Sous-réseaux), sélectionnez chaque sous-réseau.

1.  Pour ajouter des instances Amazon EC2 à votre cluster, développez **Infrastructure**, puis sélectionnez **Instances Amazon EC2**. Ensuite, configurez le groupe Auto Scaling qui agit en tant que fournisseur de capacité :

   1. Pour créer un groupe Auto Scaling, depuis **Auto Scaling group (ASG)** (Groupe Auto Scaling [ASG]), sélectionnez **Create new group** (Créer un nouveau groupe), puis fournissez les détails suivants sur le groupe :
     + Pour **Operating system/Architecture** (Système d'exploitation/Architecture), choisissez Amazon Linux 2.
     + Dans **EC2 instance type** (Type d'instance EC2), choisissez `t2.micro`.

        Pour **SSH key pair** (Paire de clés SSH), choisissez la paire qui prouve votre identité lorsque vous connectez à l'instance.
     + Dans le champ **Capacité**, entrez `1`.

1. Choisissez **Créer**.

## Étape 2 : créer un groupe de sécurité pour des instances Amazon EC2 et le système de fichiers Amazon EFS
<a name="efs-security-group"></a>

Lors de cette étape, vous créez un groupe de sécurité pour vos instances Amazon EC2 autorisant le trafic réseau entrant sur le port 80 et pour votre système de fichiers Amazon EFS autorisant l'accès entrant depuis vos instances de conteneur. 

Créez un groupe de sécurité pour vos instances Amazon EC2 avec les options suivantes :
+ **Nom du groupe de sécurité** : un nom unique pour votre groupe de sécurité.
+ **VPC** : le VPC identifié précédemment pour votre cluster.
+ **Règle entrante**
  + **Type** : **HTTP**.
  + **Source** : **0.0.0.0/0**.

Créez un groupe de sécurité pour votre système de fichiers Amazon EFS avec les options suivantes :
+ **Nom du groupe de sécurité** : un nom unique pour votre groupe de sécurité. Par exemple, `EFS-access-for-sg-dc025fa2`.
+ **VPC** : le VPC identifié précédemment pour votre cluster.
+ **Règle entrante**
  + **Type** : **NFS**.
  + **Source** : **personnalisée** avec l'ID du groupe de sécurité que vous avez créé pour vos instances.

Pour plus d’informations sur la création d’un groupe de sécurité, consultez la section [Création d’un groupe de sécurité pour votre instance Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/creating-security-group.html) dans le *Guide de l’utilisateur Amazon EC2*.

## Étape 3 : Créer un système de fichiers Amazon EFS
<a name="efs-create-filesystem"></a>

Dans cette étape, vous créez un système de fichiers Amazon EFS.

**Pour créer un système de fichiers Amazon EFS pour des tâches Amazon ECS.**

1. Ouvrez la console Amazon Elastic File System à l'adresse [https://console.aws.amazon.com/efs/](https://console.aws.amazon.com/efs/).

1. Choisissez **Create file system** (Créer un système de fichiers).

1. Saisissez un nom pour votre système de fichiers, puis choisissez le VPC dans lequel vos instances de conteneur sont hébergées. Par défaut, chaque sous-réseau du VPC spécifié reçoit une cible de montage qui utilise le groupe de sécurité par défaut de ce VPC. Choisissez ensuite **Personnaliser**.
**Note**  
Ce didacticiel part du principe que votre système de fichiers Amazon EFS, votre cluster Amazon ECS, vos instances de conteneur et vos tâches se trouvent dans le même VPC. Pour plus d’informations sur le montage d’un système de fichiers à partir d’un autre VPC, consultez la section [Procédure pas à pas : montage d’un système de fichiers à partir d’un autre VPC](https://docs.aws.amazon.com/efs/latest/ug/efs-different-vpc.html) dans le *Guide de l’utilisateur Amazon EFS*.

1. Sur la page **Paramètres du système de fichiers**, configurez les paramètres facultatifs, puis sous **Paramètres de performance**, choisissez le mode de débit **Transmission en rafales** pour votre système de fichiers. Après avoir configuré les paramètres, sélectionnez **Suivant**.

   1. (Facultatif) Ajoutez des étiquettes pour votre système de fichiers. Par exemple, vous pouvez spécifier un nom unique pour le système de fichiers en entrant ce nom dans la colonne **Valeur** en regard de la clé **Nom**.

   1. (Facultatif) Activez la gestion du cycle de vie pour économiser de l'argent sur un stockage rarement utilisé. Pour en savoir plus, consultez la section [Gestion du cycle de vie EFS](https://docs.aws.amazon.com/efs/latest/ug/lifecycle-management-efs.html) du *Amazon Elastic File System User Guide*.

   1. (Facultatif) Activez le chiffrement. Cochez la case pour activer le chiffrement de votre système de fichiers Amazon EFS au repos.

1. Sur la page **Accès réseau**, sous **Monter les cibles**, remplacez la configuration de groupe de sécurité existante de chaque zone de disponibilité par le groupe de sécurité que vous avez créé pour le système de fichiers dans [Étape 2 : créer un groupe de sécurité pour des instances Amazon EC2 et le système de fichiers Amazon EFS](#efs-security-group), puis choisissez **Suivant**.

1.  Il n'est pas nécessaire de configurer la **Stratégie de système de fichiers** pour ce didacticiel. Vous pouvez donc ignorer la section en choisissant **Suivant**.

1. Vérifiez les options de votre système de fichiers et choisissez **Créer** pour terminer le processus.

1. Sur l'écran **Systèmes de fichiers**, enregistrez l'**ID du système de fichiers**. À l'étape suivante, vous référencerez cette valeur dans votre définition de tâche Amazon ECS.

## Étape 4 : Ajouter du contenu au système de fichiers Amazon EFS
<a name="efs-add-content"></a>

Au cours de cette étape, vous monterez le système de fichiers Amazon EFS sur une instance Amazon EC2 et y ajouterez du contenu. Cette opération servira à tester la nature persistante des données dans ce didacticiel. Lorsque vous utilisez cette fonction, vous avez normalement votre application ou une autre méthode d'écriture de données dans votre système de fichiers Amazon EFS.

**Pour créer une instance Amazon EC2 et monter le système de fichiers Amazon EFS**

1. Ouvrez la console Amazon EC2 à l’adresse [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Choisissez **Launch Instances** (Lancer les instances).

1. Sous **Images d'applications et de systèmes d'exploitation (Amazon Machine Image)**, sélectionnez l'**AMI Amazon Linux 2 (HVM)**.

1. Sous **Type d'instance**, conservez le type d'instance par défaut `t2.micro`.

1.  Sous **Paire de clés (connexion)**, sélectionnez une paire de clés pour l'accès SSH à l'instance.

1. Sous **Paramètres réseau**, sélectionnez le VPC que vous avez spécifié pour votre système de fichiers Amazon EFS et votre cluster Amazon ECS. Sélectionnez un sous-réseau et le groupe de sécurité d'instance créé dans [Étape 2 : créer un groupe de sécurité pour des instances Amazon EC2 et le système de fichiers Amazon EFS](#efs-security-group). Configurez le groupe de sécurité de l'instance. Assurez-vous que **Attribuer automatiquement l'adresse IP publique** est activé.

1. Sous **Configurer le stockage**, cliquez sur le bouton **Modifier** pour les systèmes de fichiers, puis choisissez **EFS**. Sélectionnez le système de fichiers créé dans [Étape 3 : Créer un système de fichiers Amazon EFS](#efs-create-filesystem). Vous pouvez éventuellement modifier le point du montage ou conserver la valeur par défaut.
**Important**  
Vous devez sélectionner un sous-réseau avant de pouvoir ajouter un système de fichiers à l'instance.

1. Désactivez **Créer et associer automatiquement des groupes de sécurité**. Laissez l'autre case cochée. Choisissez **Add shared file system** (Ajouter un système de fichiers partagé).

1. Sous **Advanced Details (Détails avancés)**, assurez-vous que le script de données utilisateur est renseigné automatiquement avec les étapes de montage du système de fichiers Amazon EFS.

1.  Sous **Récapitulatif**, assurez-vous que le **Nombre d'instances** est égal à **1**. Choisissez **Launch instance** (Lancer une instance).

1. Sur la page **Lancer une instance**, choisissez **Afficher toutes les instances** pour afficher l'état de vos instances. Initialement, le statut d'**État de l'instance** est `PENDING`. Une fois que l'état est passé à `RUNNING` et que l'instance a réussi toutes les vérifications de statut, celle-ci est prête à être utilisée.

Maintenant, connectez-vous à l'instance Amazon EC2 et ajoutez du contenu au système de fichiers Amazon EFS.

**Pour vous connecter à l'instance Amazon EC2 et ajouter du contenu au système de fichiers Amazon EFS**

1. Envoyez une requête SSH à l'instance Amazon EC2 que vous avez créée. Pour plus d’informations, consultez la section [Connexion à votre instance Linux à l’aide de SSH](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect-to-linux-instance.html) dans le *Guide de l’utilisateur Amazon EC2*.

1. Dans la fenêtre du terminal, exécutez la commande **df -T** pour vérifier que le système de fichiers Amazon EFS est bien monté. Dans la sortie suivante, nous avons mis en évidence le montage du système de fichiers Amazon EFS.

   ```
   $ df -T
   Filesystem     Type            1K-blocks    Used        Available Use% Mounted on
   devtmpfs       devtmpfs           485468       0           485468   0% /dev
   tmpfs          tmpfs              503480       0           503480   0% /dev/shm
   tmpfs          tmpfs              503480     424           503056   1% /run
   tmpfs          tmpfs              503480       0           503480   0% /sys/fs/cgroup
   /dev/xvda1     xfs               8376300 1310952          7065348  16% /
   127.0.0.1:/    nfs4     9007199254739968       0 9007199254739968   0% /mnt/efs/fs1
   tmpfs          tmpfs              100700       0           100700   0% /run/user/1000
   ```

1. Accédez au répertoire dans lequel le système de fichiers Amazon EFS est monté. Dans l'exemple ci-dessus, il s'agit de `/mnt/efs/fs1`.

1. Créez un fichier nommé `index.html` avec le contenu suivant:

   ```
   <html>
       <body>
           <h1>It Works!</h1>
           <p>You are using an Amazon EFS file system for persistent container storage.</p>
       </body>
   </html>
   ```

## Étape 5 : Créer une définition de tâche
<a name="efs-task-def"></a>

La définition de tâche suivante crée un volume de données nommé `efs-html`. Le conteneur `nginx` monte le volume de données de l'hôte à la racine NGINX, `/usr/share/nginx/html`.

**Pour créer une nouvelle définition de tâche à l'aide de la console Amazon ECS**

1. Ouvrez la console à la [https://console.aws.amazon.com/ecs/version 2](https://console.aws.amazon.com/ecs/v2).

1. Dans le panneau de navigation, choisissez **Task definitions** (Définition des tâches).

1. Choisissez **Create new task definition** (Créer une nouvelle définition de tâche), puis **Create new task definition with JSON** (Créer une nouvelle définition de tâche avec JSON).

1. Dans la zone de l'éditeur JSON, copiez et collez le texte JSON suivant, en remplaçant `fileSystemId` par l'ID de votre système de fichiers Amazon EFS.

   ```
   {
       "containerDefinitions": [
           {
               "memory": 128,
               "portMappings": [
                   {
                       "hostPort": 80,
                       "containerPort": 80,
                       "protocol": "tcp"
                   }
               ],
               "essential": true,
               "mountPoints": [
                   {
                       "containerPath": "/usr/share/nginx/html",
                       "sourceVolume": "efs-html"
                   }
               ],
               "name": "nginx",
               "image": "public.ecr.aws/docker/library/nginx:latest"
           }
       ],
       "volumes": [
           {
               "name": "efs-html",
               "efsVolumeConfiguration": {
                   "fileSystemId": "fs-1324abcd",
                   "transitEncryption": "ENABLED"
               }
           }
       ],
       "family": "efs-tutorial",
       "executionRoleArn":"arn:aws:iam::111122223333:role/ecsTaskExecutionRole"
   }
   ```
**Note**  
Le rôle IAM d’exécution de tâche Amazon ECS ne nécessite aucune autorisation spécifique liée à Amazon EFS pour monter un système de fichiers Amazon EFS. Par défaut, s’il n’existe aucune politique basée sur les ressources Amazon EFS, l’accès est accordé à tous les principaux (\$1) lors de la création du système de fichiers.  
Le rôle de tâche Amazon ECS n’est requis que si l’option « Autorisation IAM EFS » est activée dans la définition de tâche Amazon ECS. Lorsque cette option est activée, l’identité du rôle de la tâche doit être autorisée à accéder au système de fichiers Amazon EFS conformément à la politique basée sur les ressources Amazon EFS, et l’accès anonyme doit être désactivé.

1. Choisissez **Créer**.

## Étape 6 : Exécuter une tâche et afficher les résultats
<a name="efs-run-task"></a>

Maintenant que votre système de fichiers Amazon EFS est créé et qu'il existe du contenu web pour le conteneur NGINX à diffuser, vous pouvez exécuter une tâche à l'aide de la définition de tâche que vous avez créée. Le serveur web NGINX diffuse votre page HTML simple. Si vous mettez à jour le contenu de votre système de fichiers Amazon EFS, ces changements sont propagés vers tous les conteneurs qui ont également monté ce système de fichiers.

La tâche s'exécute dans le sous-réseau que vous avez défini pour le cluster.

**Pour exécuter une tâche et afficher les résultats à l'aide de la console**

1. Ouvrez la console à la [https://console.aws.amazon.com/ecs/version 2](https://console.aws.amazon.com/ecs/v2).

1. Sur la page **Clusters**, sélectionnez le cluster dans lequel la tâche autonome doit s'exécuter.

   Déterminez la ressource à partir de laquelle vous lancez le service.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/AmazonECS/latest/developerguide/tutorial-efs-volumes.html)

1. (Facultatif) Choisissez comment votre tâche planifiée est distribuée dans votre infrastructure de cluster. Développer **Compute configuration** (Configuration de calcul), puis procédez comme suit :    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/AmazonECS/latest/developerguide/tutorial-efs-volumes.html)

1. Pour **Application type (Type d'application)**, choisissez **Task (Tâche)**.

1. Pour **Task Definition** (Définition de tâche), choisissez la définition de tâche `efs-tutorial` que vous avez créée précédemment.

1. Pour **Desired tasks** (Tâches souhaitées), saisissez `1`.

1. Choisissez **Créer**.

1. Sur la page **Cluster**, choisissez **Infrastructure**.

1. Sous **Instances de conteneur**, sélectionnez l'instance de conteneur à laquelle vous connecter.

1. Sur la page **Container Instance** (Instance de conteneur), sous **Networking** (Mise en réseau), enregistrez **Public IP** (IP publique) pour votre instance.

1. Ouvrez un navigateur et saisissez l'adresse IP publique. Vous devez voir le message suivant :

   ```
   It works!
   You are using an Amazon EFS file system for persistent container storage.
   ```
**Note**  
Si le message ne s'affiche pas, assurez-vous que le groupe de sécurité de votre instance de conteneur autorise le trafic réseau entrant sur le port 80 et que le groupe de sécurité de votre système de fichiers autorise l'accès entrant depuis l'instance de conteneur.

# Utilisation FSx pour les volumes de serveurs de fichiers Windows avec Amazon ECS
<a name="wfsx-volumes"></a>

FSx pour Windows File Server fournit des serveurs de fichiers Windows entièrement gérés, soutenus par un système de fichiers Windows. Lorsque vous utilisez FSx for Windows File Server avec ECS, vous pouvez fournir à vos tâches Windows un stockage de fichiers statique persistant, distribué, partagé et statique. Pour plus d'informations, voir [Qu'est-ce que FSx pour le serveur de fichiers Windows ?](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/what-is.html) .

**Note**  
Les instances EC2 qui utilisent l'AMI complète Windows Server 2016 optimisée pour Amazon ECS ne prennent pas en charge FSx les volumes de tâches ECS du serveur de fichiers Windows.  
Vous ne pouvez pas FSx les utiliser pour les volumes du serveur de fichiers Windows dans une configuration de conteneurs Windows sur Fargate. Au lieu de cela, vous pouvez [modifier les conteneurs pour les monter au démarrage](https://aws.amazon.com/blogs/containers/use-smb-storage-with-windows-containers-on-aws-fargate/).

Vous pouvez utiliser Windows File Server FSx pour déployer des charges de travail Windows nécessitant un accès à un espace de stockage externe partagé, à un stockage régional à haute disponibilité ou à un stockage à haut débit. Vous pouvez monter un ou plusieurs volumes de système de fichiers FSx pour Windows File Server sur un conteneur Amazon ECS qui s'exécute sur une instance Windows Amazon ECS. Vous pouvez partager FSx des volumes de système de fichiers pour Windows File Server entre plusieurs conteneurs Amazon ECS dans le cadre d'une seule tâche Amazon ECS.

Pour permettre l'utilisation de FSx for Windows File Server avec ECS, incluez l'ID du système de fichiers FSx pour Windows File Server et les informations associées dans une définition de tâche. Il s'agit de l'extrait de code JSON de définition de tâche suivant. Avant de créer et d'exécuter une définition de tâche, vous avez besoin des éléments suivants.
+ Une instance ECS Windows EC2 jointe à un domaine valide. Elle peut être hébergée par [AWS Directory Service for Microsoft Active Directory](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/directory_microsoft_ad.html), Active Directory sur site ou Active Directory autohébergé sur Amazon EC2.
+ Paramètre AWS Secrets Manager secret ou Systems Manager contenant les informations d'identification utilisées pour rejoindre le domaine Active Directory et attacher le FSx système de fichiers Windows File Server. Les valeurs d'informations d'identification sont les informations d'identification de nom et de mot de passe que vous avez entrées lors de la création de l'Active Directory.

Pour voir un didacticiel connexe, consultez [Découvrez comment configurer FSx les systèmes de fichiers Windows File Server pour Amazon ECS](tutorial-wfsx-volumes.md).

## Considérations
<a name="wfsx-volume-considerations"></a>

Tenez compte des points suivants lors de l' FSx utilisation de volumes de serveurs de fichiers Windows :
+ Les volumes FSx for Windows File Server sont pris en charge de manière native avec Amazon ECS sur les instances Amazon EC2 Windows. Amazon ECS gère automatiquement le montage via la configuration de définition des tâches.

  Sur les instances Amazon EC2 Linux, Amazon ECS ne peut pas monter automatiquement les volumes FSx for Windows File Server via des définitions de tâches. Cependant, vous pouvez monter manuellement un partage de fichiers FSx for Windows File Server sur une instance Linux EC2 au niveau de l'hôte, puis monter ce chemin dans vos conteneurs Amazon ECS. Pour plus d'informations, consultez la section [Montage des partages de FSx fichiers Amazon depuis Linux](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/map-shares-linux.html).
**Important**  
Il s'agit d'une configuration autogérée. Pour obtenir des conseils sur le montage et la maintenance FSx des partages de fichiers Windows File Server sous Linux, reportez-vous à la [FSx documentation relative au serveur de fichiers Windows](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/).
**Important**  
Lors de l'utilisation d'un partage FSx for Windows File Server monté manuellement sur des instances Linux EC2, Amazon ECS FSx et Windows File Server fonctionnent indépendamment. Amazon ECS ne surveille pas le montage FSx Amazon FSx et pour Windows File Server ne suit pas le placement des tâches ou les événements du cycle de vie Amazon ECS. Vous êtes chargé de garantir l'accessibilité du réseau entre vos instances de conteneur Amazon ECS et le système de FSx fichiers Amazon, de mettre en œuvre des contrôles de santé du montage et de gérer la logique de reconnexion afin de tolérer les événements de basculement.
+ FSx pour Windows File Server avec Amazon ECS n'est pas pris en charge AWS Fargate.
+ FSx pour Windows File Server avec Amazon ECS n'est pas pris en charge sur les instances gérées Amazon ECS.
+ FSx pour Windows File Server avec Amazon ECS en mode `awsvpc` réseau, nécessite une version `1.54.0` ou une version ultérieure de l'agent de conteneur.
+ Le nombre maximal de lettres de lecteur pouvant être utilisées pour une tâche Amazon ECS est de 23. Une lettre de lecteur est attribuée FSx à chaque tâche comportant un volume destiné au serveur de fichiers Windows.
+ Par défaut, le temps de nettoyage des ressources de tâches est de trois heures après la fin de la tâche. Même si aucune tâche ne l'utilise, un mappage de fichier créé par une tâche persiste pendant trois heures. La durée de nettoyage par défaut peut être configurée à l'aide de la variable d'environnement Amazon ECS `ECS_ENGINE_TASK_CLEANUP_WAIT_DURATION`. Pour de plus amples informations, veuillez consulter [Configuration de l'agent de conteneur Amazon ECS](ecs-agent-config.md).
+ Les tâches s'exécutent généralement uniquement dans le même VPC que le système FSx de fichiers Windows File Server. Cependant, il est possible de bénéficier d'un support inter-VPC s'il existe une connectivité réseau établie entre le VPC du cluster Amazon ECS et le système de fichiers FSx pour Windows File Server via le peering VPC.
+ Vous contrôlez l'accès à un système de fichiers FSx for Windows File Server au niveau du réseau en configurant les groupes de sécurité VPC. Seules les tâches hébergées sur des instances EC2 associées au domaine Active Directory avec des groupes de sécurité Active Directory correctement configurés peuvent accéder au partage de fichiers FSx pour Windows File Server. Si les groupes de sécurité sont mal configurés, Amazon ECS ne parvient pas à lancer la tâche et affiche le message d’erreur suivant : « `unable to mount file system fs-id`. » 
+ FSx pour Windows File Server est intégré à Gestion des identités et des accès AWS (IAM) pour contrôler les actions que vos utilisateurs et groupes IAM peuvent effectuer spécifiquement FSx pour les ressources du serveur de fichiers Windows. Avec l'autorisation du client, les clients peuvent définir des rôles IAM qui autorisent ou refusent l'accès à FSx des systèmes de fichiers spécifiques à Windows File Server, exigent éventuellement un accès en lecture seule et autorisent ou interdisent au client l'accès root au système de fichiers. Pour plus d'informations, consultez [la section Sécurité](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/security.html) dans le guide de l'utilisateur Amazon FSx Windows.

# Bonnes pratiques d'utilisation FSx pour Windows File Server avec Amazon ECS
<a name="wfsx-best-practices"></a>

Prenez note des recommandations de bonnes pratiques suivantes lorsque vous utilisez FSx un serveur de fichiers Windows avec Amazon ECS.

## Sécurité et contrôles d'accès FSx pour Windows File Server
<a name="wfsx-security-access-controls"></a>

FSx pour Windows File Server propose les fonctionnalités de contrôle d'accès suivantes que vous pouvez utiliser pour garantir que les données stockées dans un système de fichiers FSx pour Windows File Server sont sécurisées et accessibles uniquement depuis les applications qui en ont besoin.

### Chiffrement des données FSx pour les volumes du serveur de fichiers Windows
<a name="storage-fsx-security-encryption"></a>

FSx pour Windows File Server prend en charge deux formes de chiffrement pour les systèmes de fichiers. Il s’agit du chiffrement des données en transit et du chiffrement au repos. Le chiffrement des données en transit est pris en charge sur les partages de fichiers mappés sur une instance de conteneur compatible avec le protocole SMB 3.0 ou une version ultérieure. Le chiffrement des données au repos est automatiquement activé lors de la création d'un système de FSx fichiers Amazon. Amazon chiffre FSx automatiquement les données en transit à l'aide du chiffrement SMB lorsque vous accédez à votre système de fichiers sans avoir à modifier vos applications. Pour plus d'informations, consultez la section [Chiffrement des données sur Amazon FSx dans](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/encryption.html) le *guide de l'utilisateur du serveur de fichiers Amazon FSx pour Windows*.

### Utiliser Windows ACLs pour le contrôle d'accès au niveau des dossiers
<a name="storage-fsx-security-access"></a>

L'instance Windows Amazon EC2 accède aux partages de FSx fichiers Amazon à l'aide des informations d'identification Active Directory. Il utilise des listes de contrôle d'accès Windows standard (ACLs) pour un contrôle d'accès précis au niveau des fichiers et des dossiers. Vous pouvez créer plusieurs informations d’identification, chacune correspondant à un dossier spécifique au sein du partage qui est mappé à une tâche spécifique.

Dans l’exemple suivant, la tâche a accès au dossier `App01` à l’aide d’informations d’identification enregistrées dans Secrets Manager. Son Amazon Resource Name (ARN) est `1234`.

```
"rootDirectory": "\\path\\to\\my\\data\App01",
"credentialsParameter": "arn-1234",
"domain": "corp.fullyqualified.com",
```

Dans un autre exemple, une tâche a accès au dossier `App02` à l’aide d’informations d’identification enregistrées dans Secrets Manager. Son ARN est `6789`.

```
"rootDirectory": "\\path\\to\\my\\data\App02",
"credentialsParameter": "arn-6789",
"domain": "corp.fullyqualified.com",
```

# Spécifiez un système de fichiers FSx pour Windows File Server dans une définition de tâche Amazon ECS
<a name="specify-wfsx-config"></a>

À utiliser FSx pour les volumes du système de fichiers Windows File Server pour vos conteneurs, spécifiez les configurations de volume et de point de montage dans votre définition de tâche. L'extrait de JSON de définition de tâche indiqué ci-dessous illustre la syntaxe des objets `volumes` et `mountPoints` pour un conteneur.

```
{
    "containerDefinitions": [
        {
            "entryPoint": [
                "powershell",
                "-Command"
            ],
            "portMappings": [],
            "command": ["New-Item -Path C:\\fsx-windows-dir\\index.html -ItemType file -Value '<html> <head> <title>Amazon ECS Sample App</title> <style>body {margin-top: 40px; background-color: #333;} </style> </head><body> <div style=color:white;text-align:center> <h1>Amazon ECS Sample App</h1> <h2>It Works!</h2> <p>You are using Amazon FSx for Windows File Server file system for persistent container storage.</p>' -Force"],
            "cpu": 512,
            "memory": 256,
            "image": "mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2019",
            "essential": false,
            "name": "container1",
            "mountPoints": [
                {
                    "sourceVolume": "fsx-windows-dir",
                    "containerPath": "C:\\fsx-windows-dir",
                    "readOnly": false
                }
            ]
        },
        {
            "entryPoint": [
                "powershell",
                "-Command"
            ],
            "portMappings": [
                {
                    "hostPort": 443,
                    "protocol": "tcp",
                    "containerPort": 80
                }
            ],
            "command": ["Remove-Item -Recurse C:\\inetpub\\wwwroot\\* -Force; Start-Sleep -Seconds 120; Move-Item -Path C:\\fsx-windows-dir\\index.html -Destination C:\\inetpub\\wwwroot\\index.html -Force; C:\\ServiceMonitor.exe w3svc"],
            "mountPoints": [
                {
                    "sourceVolume": "fsx-windows-dir",
                    "containerPath": "C:\\fsx-windows-dir",
                    "readOnly": false
                }
            ],
            "cpu": 512,
            "memory": 256,
            "image": "mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2019",
            "essential": true,
            "name": "container2"
        }
    ],
    "family": "fsx-windows",
    "executionRoleArn": "arn:aws:iam::111122223333:role/ecsTaskExecutionRole",
    "volumes": [
        {
            "name": "fsx-windows-dir",
            "fsxWindowsFileServerVolumeConfiguration": {
                "fileSystemId": "fs-0eeb5730b2EXAMPLE",
                "authorizationConfig": {
                    "domain": "example.com",
                    "credentialsParameter": "arn:arn-1234"
                },
                "rootDirectory": "share"
            }
        }
    ]
}
```

`FSxWindowsFileServerVolumeConfiguration`  
Type : objet  
Obligatoire : non  
Ce paramètre est spécifié lorsque vous utilisez FSx le système de [fichiers Windows File Server](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/what-is.html) pour le stockage des tâches.    
`fileSystemId`  
Type : Chaîne  
Obligatoire : oui  
L' FSx identifiant du système de fichiers Windows File Server à utiliser.  
`rootDirectory`  
Type : Chaîne  
Obligatoire : oui  
Le répertoire du système FSx de fichiers Windows File Server à monter en tant que répertoire racine sur l'hôte.  
`authorizationConfig`    
`credentialsParameter`  
Type : Chaîne  
Obligatoire : oui  
Les options d'informations d'identification d'autorisation :  
+ Amazon Resource Name (ARN) pour un secret [Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html).
+ Amazon Resource Name (ARN) pour un paramètre [Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/integration-ps-secretsmanager.html).  
`domain`  
Type : Chaîne  
Obligatoire : oui  
Un nom de domaine complet hébergé par un répertoire [AWS Directory Service for Microsoft Active Directory](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/directory_microsoft_ad.html) (AWS Managed Microsoft AD) ou un Active Directory EC2 autohébergé.

## Méthodes de stockage des informations d'identification de volume FSx pour le serveur de fichiers Windows
<a name="creds"></a>

Il existe deux méthodes différentes de stockage des informations d'identification à utiliser avec le paramètre d'informations d'identification.
+ **AWS Secrets Manager secret**

  Ces informations d'identification peuvent être créées dans la AWS Secrets Manager console à l'aide de la catégorie *Autre type de secret*. Vous ajoutez une ligne pour chaque key/value paire username/admin et un mot de passe/*password*.
+ **Paramètre Systems Manager**

  Ces informations d'identification peuvent être créées dans la console de paramètres Systems Manager en saisissant du texte dans le formulaire qui se trouve dans l'exemple d'extrait de code suivant.

  ```
  {
    "username": "admin",
    "password": "password"
  }
  ```

Le paramètre `credentialsParameter` dans la définition de tâche `FSxWindowsFileServerVolumeConfiguration` contient l'ARN de secret ou l'ARN du paramètre Systems Manager. Pour de plus amples informations, veuillez consulter les rubriques [Présentation d' AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html) dans le *Guide de l'utilisateur de Secrets Manager* et [Systems Manager Parameter Store](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html) dans le *Guide de l'utilisateur de Systems Manager*.

# Découvrez comment configurer FSx les systèmes de fichiers Windows File Server pour Amazon ECS
<a name="tutorial-wfsx-volumes"></a>

Découvrez comment lancer une instance Windows optimisée pour Amazon ECS qui héberge un système de fichiers FSx pour Windows File Server et des conteneurs pouvant accéder au système de fichiers. Pour ce faire, vous devez d'abord créer un Microsoft Active Directory Directory Service AWS géré. Créez ensuite un système de fichiers FSx for Windows File Server et un cluster avec une instance Amazon EC2 et une définition de tâche. Vous configurez la définition de tâche pour vos conteneurs afin qu'ils utilisent le système de fichiers FSx for Windows File Server. Enfin, vous testez le système de fichiers.

Cela prend 20 à 45 minutes chaque fois que vous lancez ou supprimez le système FSx de fichiers Active Directory ou Windows File Server. Préparez-vous à réserver au moins 90 minutes pour terminer le didacticiel ou le compléter en quelques sessions.

## Prérequis pour le didacticiel
<a name="wfsx-prerequisites"></a>
+ Un utilisateur administratif. Consultez [Configurer l'utilisation d'Amazon ECS](get-set-up-for-amazon-ecs.md).
+ (Facultatif) Une paire de clés `PEM` permettant de vous connecter à votre instance Windows EC2 via un accès RDP. Pour plus d’informations sur la création de paires de clés, consultez les sections [Paires de clés Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html) et *Instances Amazon EC2* dans le Guide de l’utilisateur Amazon EC2.
+ Un VPC avec au moins un sous-réseau public et un sous-réseau privé et un groupe de sécurité. Vous pouvez utiliser votre VPC par défaut. Vous n'avez pas besoin d'une passerelle ou d'un périphérique NAT. Directory Service ne prend pas en charge la traduction d'adresses réseau (NAT) avec Active Directory. Pour que cela fonctionne, le répertoire Active Directory, le système de fichiers FSx for Windows File Server, le cluster ECS et l'instance EC2 doivent se trouver dans votre VPC. Pour plus d'informations concernant VPCs Active Directories, voir [Création d'un VPC](https://docs.aws.amazon.com/vpc/latest/userguide/create-vpc.html) et [Conditions préalables à la création d'un AWS Microsoft AD géré](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_getting_started.html#ms_ad_getting_started_prereqs).
+ Les autorisations IAM ecsInstanceRole et ecsTaskExecution Role sont associées à votre compte. Ces rôles liés à un service permettent aux services d'effectuer des appels d'API et d'accéder aux conteneurs, secrets, répertoires et serveurs de fichiers en votre nom.

## Étape 1 : Créer des rôles IAM d'accès
<a name="iam-roles"></a>

**Créez un cluster avec la AWS Management Console.**

1. Vérifiez si vous en avez un ecsInstanceRole et comment vous pouvez en créer un si vous n'en avez pas. [Rôle IAM d'instance de conteneur Amazon ECS](instance_IAM_role.md)

1. Nous recommandons que les stratégies de rôle soient personnalisées pour les autorisations minimales dans un environnement de production réel. Pour suivre ce didacticiel, vérifiez que la politique AWS gérée suivante est attachée à votreecsInstanceRole. Joignez la stratégie si elle n'est pas déjà attachée.
   + EC2ContainerServiceforEC2Rôle Amazon
   + Amazon SSMManaged InstanceCore
   + Amazon SSMDirectory ServiceAccess

   Pour associer des politiques AWS gérées.

   1. Ouvrez la [console IAM](https://console.aws.amazon.com//iam/).

   1. Dans le panneau de navigation, choisissez **Rôles**.

   1. Choisissez un **rôle géré par AWS **.

   1. Choisissez **Autorisations, Attacher des stratégies**.

   1. Pour réduire le nombre de stratégies disponibles à attacher, utilisez **Filter (Filtrer)**.

   1. Sélectionnez la stratégie appropriée, puis choisissez **Attach policy (Attacher la stratégie)**.

1. Consultez [Rôle IAM d'exécution de tâche Amazon ECS](task_execution_IAM_role.md) pour vérifier si vous avez un ecsTaskExecution rôle et comment vous pouvez en créer un si vous n'en avez pas.

   Nous recommandons que les stratégies de rôle soient personnalisées pour les autorisations minimales dans un environnement de production réel. Pour suivre ce didacticiel, vérifiez que les politiques AWS gérées suivantes sont associées à votre ecsTaskExecution rôle. Attachez les stratégies si elles ne sont pas déjà attachées. Utilisez la procédure décrite dans la section précédente pour associer les politiques AWS gérées.
   + SecretsManagerReadWrite
   + Amazon FSx ReadOnlyAccess
   + Amazon SSMRead OnlyAccess
   + Amazon ECSTask ExecutionRolePolicy

## Étape 2 : Créer un Active Directory (AD) Windows
<a name="wfsx-create-ads"></a>

1. Suivez les étapes décrites dans la section [Création de votre Microsoft AD AWS géré](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_getting_started.html#ms_ad_getting_started_create_directory) dans le *Guide d'administration du AWS Directory Service*. Utilisez le VPC que vous avez désigné pour ce didacticiel. À l'étape 3 de la *création de votre Microsoft AD AWS géré*, enregistrez le nom d'utilisateur et le mot de passe administrateur à utiliser lors de l'étape suivante. Notez également le nom DNS complet du répertoire pour les prochaines étapes. Vous pouvez réaliser l’étape suivante pendant la création d’Active Directory.

1. Créez un AWS secret du Gestionnaire de Secrets à utiliser dans les étapes suivantes. Pour plus d'informations, voir [Commencer à utiliser Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html#get-started) dans le *Guide de l'utilisateur de AWS Secrets Manager*.

   1. Ouvrez la [console Secrets Manager](https://console.aws.amazon.com//secretsmanager/).

   1. Cliquez sur **Store a new secret (Stocker un nouveau secret)**.

   1. Sélectionnez **Other type of secrets (Autres types de secrets)**.

   1. Pour **Secret key/value (Valeur clé secrète)** dans la première ligne, créez une clé **username** avec la valeur **admin**. Cliquez sur **\$1 Add row (\$1 Ajouter une ligne)**.

   1. Dans la nouvelle ligne, créez une clé **password**. Pour obtenir de la valeur, saisissez le mot de passe que vous avez saisi à l'étape 3 de la *section Création de votre annuaire AD AWS géré*.

   1. Cliquez sur **Next (Suivant)**.

   1. Fournissez un nom et une description de secret. Cliquez sur **Suivant**.

   1. Cliquez sur **Suivant**. Cliquez sur **Store (Stocker)**.

   1. À partir de la page **Secrets**, cliquez sur le secret que vous venez de créer.

   1. Enregistrez l'ARN du nouveau secret pour l'utiliser dans les étapes suivantes.

   1. Vous pouvez passer à l'étape suivante pendant la création de votre répertoire Active Directory.

## Étape 3 : Vérifier et mettre à jour votre groupe de sécurité
<a name="wfsx-sg"></a>

Dans cette étape, vous vérifiez et mettez à jour les règles du groupe de sécurité que vous utilisez. Pour cela, vous pouvez utiliser le groupe de sécurité par défaut qui a été créé pour votre VPC.

**Vérifiez et mettez à jour le groupe de sécurité.**

Vous devez créer ou modifier votre groupe de sécurité pour envoyer des données depuis et vers les ports, comme indiqué dans la section [Groupes de sécurité Amazon VPC](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/limit-access-security-groups.html#fsx-vpc-security-groups) du guide de l'*utilisateur FSx pour les serveurs de fichiers Windows*. Pour ce faire, créez la règle entrante du groupe de sécurité affichée dans la première ligne du tableau suivant des règles entrantes. Cette règle autorise le trafic entrant à partir d'interfaces réseau (et de leurs instances associées) affectées au groupe de sécurité. Toutes les ressources cloud que vous créez se trouvent au sein du même VPC et sont rattachées au même groupe de sécurité. Par conséquent, cette règle permet d'envoyer du trafic vers et FSx depuis le système de fichiers Windows File Server, Active Directory et l'instance ECS selon les besoins. Les autres règles entrantes autorisent le trafic à servir le site web et l'accès RDP pour la connexion à votre instance ECS.

Le tableau suivant indique les règles entrantes de groupe de sécurité requises pour ce didacticiel.


| Type | Protocole | Plage de ports | Source | 
| --- | --- | --- | --- | 
|  Tout le trafic  |  Tous  |  Tous  |  *sg-securitygroup*  | 
|  HTTPS  |  TCP  |  443  |  0.0.0.0/0  | 
|  RDP  |  TCP  |  3389  |  l'adresse IP de votre ordinateur portable  | 

Le tableau suivant indique les règles sortantes du groupe de sécurité requises pour ce didacticiel.


| Type | Protocole | Plage de ports | Destination | 
| --- | --- | --- | --- | 
|  Tout le trafic  |  Tous  |  Tous  |  0.0.0.0/0  | 

1. Ouvrez la [console EC2](https://console.aws.amazon.com//ec2/) et sélectionnez **Security groups (Groupes de sécurité)** depuis le menu de gauche.

1. Dans la liste des groupes de sécurité qui s'affiche, cochez la case située à gauche du groupe de sécurité que vous utilisez pour ce didacticiel.

   Les informations de votre groupe de sécurité s'affichent.

1. Modifiez les règles entrantes et sortantes en sélectionnant l'onglet **Inbound rules** (Règles entrantes) ou **Outbound rules** (Règles sortantes) et en cliquant sur **Edit inbound rules** (Modifier les règles entrantes) ou **Edit outbound rules** (Modifier les règles sortantes). Modifiez les règles pour qu'elles correspondent à celles affichées dans les tableaux précédents. Lorsque vous aurez créé votre instance EC2 plus tard dans ce didacticiel, modifiez la règle entrante RDP source avec l’adresse IP publique de votre instance EC2, comme décrit dans la section [Connexion à votre instance Windows à l’aide du protocole RDP](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connecting_to_windows_instance.html) du *Guide de l’utilisateur Amazon EC2*.

## Étape 4 : Création d'un système de fichiers FSx pour Windows File Server
<a name="wfsx-create-fsx"></a>

Une fois que votre groupe de sécurité a été vérifié et mis à jour et que votre Active Directory a été créé et est en état actif, créez le système de fichiers FSx pour Windows File Server dans le même VPC que votre Active Directory. Suivez les étapes ci-dessous pour créer un système de fichiers FSx pour serveur de fichiers Windows pour vos tâches Windows.

**Créez votre premier système de fichiers.**

1. Ouvrez la [ FSx console Amazon](https://console.aws.amazon.com//fsx/).

1. Dans Sur le tableau de bord, choisissez **Create file system (Créer un système de fichiers)** pour ouvrir l'assistant de création de système de fichiers.

1. Sur la page **Sélectionner le type de système FSx de fichiers****, choisissez Windows File Server**, puis **Next**. La page **Create file system (Créer un système de fichiers)** s'affiche.

1. Dans la section **File system details (Informations du système de fichiers)**, indiquez un nom pour votre système de fichiers. Donner un nom à vos systèmes de fichiers facilite leur recherche et leur gestion. Vous pouvez utiliser jusqu'à 256 caractères Unicode. Les caractères autorisés sont les lettres, les chiffres, les espaces et les caractères spéciaux suivants : signe plus (\$1), signe moins (-), signe égal (=), point (.), trait de soulignement (\$1), deux points (:) et barre oblique (/).

1. Pour **Deployment type (Type de déploiement)**, choisissez **Single-AZ (Mono-AZ)** afin de déployer un système de fichiers qui est déployé dans une seule zone de disponibilité. *Mono-AZ 2* est la dernière génération de systèmes de fichiers de zone de disponibilité unique et prend en charge le stockage SSD et HDD.

1. Pour **Storage type (Type de stockage)**, choisissez **HDD**.

1. Pour **Storage capacity (Capacité de stockage)**, saisissez la capacité de stockage minimale. 

1. Conservez la valeur par défaut de **Throughput capacity (Capacité de débit)**.

1. Dans la section **Réseau et sécurité**, choisissez le même Amazon VPC que celui que vous avez choisi pour votre Directory Service annuaire.

1. Pour **VPC Security Groups (Groupes de sécurité VPC)**, choisissez le groupe de sécurité que vous avez vérifié à l'*Étape 3 : Vérifier et mettre à jour votre groupe de sécurité*.

1. Pour **Windows authentication** (Authentification Windows), choisissez **AWS Managed Microsoft Active Directory** (Annuaire Microsoft Active Directory géré par ), puis choisissez votre répertoire Directory Service dans la liste.

1. Pour **Encryption (Chiffrement)**, conservez la valeur par défaut du paramètre **Encryption key (Clé de chiffrement)**, **aws/fsx (default) (aws/fsx [par défaut])**.

1. Conservez les paramètres par défaut pour **Maintenance preferences (Préférences de maintenance)**.

1. Cliquez sur **Next (Suivant)**.

1. Vérifiez la configuration du système de fichiers qui s'affiche sur la page **Create file system (Créer un système de fichiers)**. Pour référence, notez les paramètres du système de fichiers que vous pouvez modifier une fois le système de fichiers créé. Choisissez **Create file system** (Créer un système de fichiers). 

1. Notez l'ID du système de fichiers. Vous en aurez besoin dans une étape ultérieure.

   Vous pouvez passer aux étapes suivantes pour créer un cluster et une instance EC2 lors de la création du système de fichiers FSx pour Windows File Server.

## Étape 5 : créer un cluster Amazon ECS
<a name="wfsx-create-cluster"></a>

**Création d'un cluster à l'aide de la console Amazon ECS**

1. Ouvrez la console à la [https://console.aws.amazon.com/ecs/version 2](https://console.aws.amazon.com/ecs/v2).

1. Dans la barre de navigation, sélectionnez la région à utiliser.

1. Dans le panneau de navigation, choisissez **Clusters**.

1. Sur la page **Clusters**, choisissez **Create Cluster** (Créer un cluster).

1. Sous **Cluster configuration** (Configuration de cluster), pour **Cluster name** (Nom du cluster), saisissez **windows-fsx-cluster**.

1. Étendez **l'infrastructure**, AWS Fargate effacez (sans serveur), puis sélectionnez les instances **Amazon EC2**.

   1. Pour créer un groupe Auto Scaling, depuis **Auto Scaling group (ASG)** (Groupe Auto Scaling [ASG]), sélectionnez **Create new group** (Créer un nouveau groupe), puis fournissez les détails suivants sur le groupe :
     + Dans **Système d'exploitation/Architecture**, choisissez **Windows Server 2019 Core**.
     + Pour **Type d'instance EC2**, choisissez t2.medium ou t2.micro.

1. Choisissez **Créer**.

## Étape 6 : créer une instance Amazon EC2 optimisée pour Amazon ECS
<a name="wfsx-create-instance"></a>

Créez une instance de conteneur Windows Amazon ECS.

**Pour créer une instance Amazon ECS**

1. Utilisez la commande `aws ssm get-parameters` pour récupérer le nom d'AMI de la région qui héberge votre VPC. Pour plus d'informations, consultez [Extraction des métadonnées d'AMI optimisée pour Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/retrieve-ecs-optimized_windows_AMI.html).

1. Utilisez la console Amazon EC2 pour lancer l'instance.

   1. Ouvrez la console Amazon EC2 à l’adresse [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

   1. Dans la barre de navigation, sélectionnez la région à utiliser.

   1. Sur le **tableau de bord EC2**, sélectionnez **Launch instance (Lancer une instance)**.

   1. Pour **Name (Nom)**, saisissez un nom unique.

   1. Pour **Images de l'application et du SE (Amazon Machine Image)**, dans le champ de **recherche**, saisissez le nom de l'AMI que vous avez récupérée.

   1. Pour **Type d'instance**, choisissez t2.medium ou t2.micro.

   1. Pour **Key pair (login)** (Paire de clés (connexion)), choisissez une paire de clés. Si vous ne spécifiez pas de paire de clés, vous 

   1. Sous **Paramètres réseau**, pour **VPC** et **Sous-réseau**, choisissez votre VPC et un sous-réseau public.

   1. Sous **Network Settings** (Paramètres réseau), pour **Security group** (Groupe de sécurité), choisissez un groupe de sécurité existant ou créez-en un nouveau. Assurez-vous que le groupe de sécurité que vous choisissez possède les règles entrantes et sortantes définies dans [Prérequis pour le didacticiel](#wfsx-prerequisites).

   1. Sous **Network settings** (Paramètres réseau), pour **Auto-assign Public IP** (Attribuer automatiquement l'adresse IP publique), sélectionnez **Enable** (Activer). 

   1. Développez **Détails avancés**, puis pour **Répertoire de jonction de domaines**, sélectionnez l'ID de l'Active Directory que vous avez créé. Cette option de jonction de domaines joint votre répertoire AD lorsque l'instance EC2 est lancée.

   1. Sous **Détails avancés**, pour le **profil d'instance IAM**, sélectionnez **ecsInstanceRole**.

   1. Configurez votre instance de conteneur Amazon ECS avec les données utilisateur suivantes. Sous **Détails avancés**, collez le script suivant dans le champ **Données utilisateur**, en le *cluster\$1name* remplaçant par le nom de votre cluster.

      ```
      <powershell>
      Initialize-ECSAgent -Cluster windows-fsx-cluster -EnableTaskIAMRole
      </powershell>
      ```

   1. Lorsque vous êtes prêt, cochez la case de confirmation, puis sélectionnez **Launch Instances** (Lancer des instances). 

   1. Une page de confirmation indique que l'instance est en cours de lancement. Sélectionnez **View Instances** (Afficher les instances) pour fermer la page de confirmation et revenir à la console.

1. Ouvrez la console à la [https://console.aws.amazon.com/ecs/version 2](https://console.aws.amazon.com/ecs/v2).

1. Dans le volet de navigation, choisissez **Clusters**, puis choisissez **windows-fsx-cluster**.

1. Choisissez l'onglet **Infrastructure** et vérifiez que votre instance a été enregistrée dans le **windows-fsx-cluster**cluster.

## Étape 7 : Enregistrement d'une définition de tâche Windows
<a name="register_windows_task_def"></a>

Avant de pouvoir exécuter des conteneurs Windows dans votre cluster Amazon ECS, vous devez enregistrer une définition de tâche. L'exemple de définition de tâche suivant affiche une page Web simple. La tâche lance deux conteneurs qui ont accès au système de FSx fichiers. Le premier conteneur écrit un fichier HTML dans le système de fichiers. Le deuxième conteneur télécharge le fichier HTML à partir du système de fichiers et sert la page web.

1. Ouvrez la console à la [https://console.aws.amazon.com/ecs/version 2](https://console.aws.amazon.com/ecs/v2).

1. Dans le panneau de navigation, choisissez **Task definitions** (Définition des tâches).

1. Choisissez **Create new task definition** (Créer une nouvelle définition de tâche), puis **Create new task definition with JSON** (Créer une nouvelle définition de tâche avec JSON).

1. Dans la zone de l'éditeur JSON, remplacez les valeurs de votre rôle d'exécution des tâches et les informations relatives à votre système de FSx fichiers, puis choisissez **Enregistrer**.

   ```
   {
       "containerDefinitions": [
           {
               "entryPoint": [
                   "powershell",
                   "-Command"
               ],
               "portMappings": [],
               "command": ["New-Item -Path C:\\fsx-windows-dir\\index.html -ItemType file -Value '<html> <head> <title>Amazon ECS Sample App</title> <style>body {margin-top: 40px; background-color: #333;} </style> </head><body> <div style=color:white;text-align:center> <h1>Amazon ECS Sample App</h1> <h2>It Works!</h2> <p>You are using Amazon FSx for Windows File Server file system for persistent container storage.</p>' -Force"],
               "cpu": 512,
               "memory": 256,
               "image": "mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2019",
               "essential": false,
               "name": "container1",
               "mountPoints": [
                   {
                       "sourceVolume": "fsx-windows-dir",
                       "containerPath": "C:\\fsx-windows-dir",
                       "readOnly": false
                   }
               ]
           },
           {
               "entryPoint": [
                   "powershell",
                   "-Command"
               ],
               "portMappings": [
                   {
                       "hostPort": 443,
                       "protocol": "tcp",
                       "containerPort": 80
                   }
               ],
               "command": ["Remove-Item -Recurse C:\\inetpub\\wwwroot\\* -Force; Start-Sleep -Seconds 120; Move-Item -Path C:\\fsx-windows-dir\\index.html -Destination C:\\inetpub\\wwwroot\\index.html -Force; C:\\ServiceMonitor.exe w3svc"],
               "mountPoints": [
                   {
                       "sourceVolume": "fsx-windows-dir",
                       "containerPath": "C:\\fsx-windows-dir",
                       "readOnly": false
                   }
               ],
               "cpu": 512,
               "memory": 256,
               "image": "mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2019",
               "essential": true,
               "name": "container2"
           }
       ],
       "family": "fsx-windows",
       "executionRoleArn": "arn:aws:iam::111122223333:role/ecsTaskExecutionRole",
       "volumes": [
           {
               "name": "fsx-windows-dir",
               "fsxWindowsFileServerVolumeConfiguration": {
                   "fileSystemId": "fs-0eeb5730b2EXAMPLE",
                   "authorizationConfig": {
                       "domain": "example.com",
                       "credentialsParameter": "arn:arn-1234"
                   },
                   "rootDirectory": "share"
               }
           }
       ]
   }
   ```

## Étape 8 : Exécuter une tâche et afficher les résultats
<a name="wfsx-run-task"></a>

Avant d'exécuter la tâche, vérifiez que l'état de votre système de fichiers FSx pour Windows File Server est **disponible**. Si c'est le cas, vous pouvez exécuter une tâche à l'aide de la définition de tâche que vous avez créée. La tâche commence par créer des conteneurs qui remanient un fichier HTML sur eux à l'aide du système de fichiers. Après le remaniement, un serveur web sert la page HTML simple.

**Note**  
Il se peut que vous ne parveniez pas à vous connecter au site web depuis un VPN.

**Exécutez une tâche et affichez les résultats à l'aide de la console Amazon ECS.**

1. Ouvrez la console à la [https://console.aws.amazon.com/ecs/version 2](https://console.aws.amazon.com/ecs/v2).

1. Dans le volet de navigation, choisissez **Clusters**, puis choisissez **windows-fsx-cluster**.

1. Choisissez l'onglet **Tâches**, puis **Exécuter une nouvelle tâche**.

1. Pour **Launch Type** (Type de lancement), choisissez **EC2**.

1. Sous Configuration du déploiement, pour **Définition de tâche**, sélectionnez **fsx-windows**, puis sélectionnez **Créer**.

1. Lorsque le statut de votre tâche est **EN COURS D'EXÉCUTION**, sélectionnez l'ID de la tâche.

1. Sous **Conteneurs**, lorsque le statut container1 est **ARRÊTÉ**, sélectionnez container2 pour afficher les détails du conteneur.

1.  Dans **Informations sur le conteneur pour container2**, sélectionnez **Liaisons réseau**, puis cliquez sur l'adresse IP externe associée au conteneur. Votre navigateur s'ouvre et affiche le message suivant.

   ```
   Amazon ECS Sample App
   It Works! 
   You are using Amazon FSx for Windows File Server file system for persistent container storage.
   ```
**Note**  
L'affichage du message peut prendre quelques minutes. Si ce message ne s'affiche pas après plusieurs minutes, vérifiez que vous n'exécutez pas dans un VPN et assurez-vous que le groupe de sécurité de votre instance de conteneur autorise le trafic HTTP réseau entrant sur le port 443.

## Étape 9 : nettoyer
<a name="wfsx-cleanup"></a>

**Note**  
La suppression du système de fichiers Windows File Server ou FSx de l'AD prend 20 à 45 minutes. Vous devez attendre que les opérations FSx de suppression du système de fichiers du serveur de fichiers Windows soient terminées avant de démarrer les opérations de suppression AD.

**Supprimer FSx pour le système de fichiers Windows File Server.**

1. Ouvrez la [ FSx console Amazon](https://console.aws.amazon.com//fsx/)

1. Cliquez sur le bouton radio situé à gauche du système FSx de fichiers Windows File Server que vous venez de créer.

1. Choisissez **Actions**.

1. Sélectionnez **Delete file system (Supprimer le système de fichiers)**.

**Supprimez le répertoire AD.**

1. Ouvrez la [Directory Service console](https://console.aws.amazon.com//directoryservicev2/).

1. Cliquez sur la case d'option située à gauche du répertoire AD que vous venez de créer.

1. Choisissez **Actions**.

1. Sélectionnez **Delete directory (Supprimer le répertoire)**.

**Supprimez le cluster.**

1. Ouvrez la console à la [https://console.aws.amazon.com/ecs/version 2](https://console.aws.amazon.com/ecs/v2).

1. Dans le volet de navigation, choisissez **Clusters**, puis choisissez **windows-fsx-cluster**.

1. Choisissez **Supprimer le cluster**.

1. Saisissez l'expression, puis choisissez **Supprimer**.

**Résiliez l'instance EC2.**

1. Ouvrez la [console Amazon EC2](https://console.aws.amazon.com//ec2/).

1. Dans le menu de gauche, sélectionnez **Instances**.

1. Cochez la case située à gauche de l'instance EC2 que vous avez créée.

1. Cliquez sur **État de l'instance**, puis sur **Résilier l'instance**.

**Supprimez le secret.**

1. Ouvrez la [console Secrets Manager](https://console.aws.amazon.com//secretsmanager/).

1. Sélectionnez le secret que vous avez créé pour cette démonstration.

1. Cliquez sur **Actions**.

1. Sélectionnez **Delete secret (Supprimer le secret)**.

# Utilisation de volumes Docker avec Amazon ECS
<a name="docker-volumes"></a>

Lorsque vous utilisez des volumes Docker, le pilote `local` intégré ou un pilote de volume tiers peut être utilisé. Les volumes Docker sont gérés par Docker et un répertoire est créé dans `/var/lib/docker/volumes` sur l'instance de conteneur qui contient les données du volume.

Pour utiliser des volumes Docker, spécifiez un `dockerVolumeConfiguration` dans votre définition de tâche. Pour plus d’informations, consultez la section [Volumes](https://docs.docker.com/engine/storage/volumes/) dans la documentation Docker.

Certains cas d'utilisation courants pour les volumes Docker sont les suivants :
+ Fournir des volumes de données permanent à utiliser avec des conteneurs
+ Partager un volume de données défini à différents emplacements sur différents conteneurs situés sur la même instance de conteneur
+ Définir un volume de données vide, non permanent et le monter dans plusieurs conteneurs au sein d’une même tâche
+ Fournir un volume de données à votre tâche qui est gérée par un pilote tiers

## Considérations relatives à l’utilisation des volumes Docker
<a name="docker-volume-considerations"></a>

Tenez compte des éléments suivants lorsque vous utilisez des volumes Docker :
+ Les volumes Docker sont pris en charge uniquement en utilisant le type de lancement EC2 ou des instances externes.
+ Les conteneurs Windows prennent uniquement en charge l'utilisation du pilote `local`.
+ Si un pilote tiers est utilisé, assurez-vous qu'il est installé et actif sur l'instance de conteneur avant le démarrage de l'agent de conteneur. Si le pilote tiers n'est pas actif avant le démarrage de l'agent, vous pouvez redémarrer l'agent de conteneur à l'aide de l'une des commandes suivantes :
  + Pour l'AMI Amazon Linux 2 optimisée pour Amazon ECS :

    ```
    sudo systemctl restart ecs
    ```
  + Pour l'AMI Amazon Linux optimisée pour Amazon ECS :

    ```
    sudo stop ecs && sudo start ecs
    ```

Pour plus d’informations sur la manière de spécifier un volume Docker dans une définition de tâche, consultez la section [Spécification d’un volume Docker dans une définition de tâche Amazon ECS](specify-volume-config.md).

# Spécification d’un volume Docker dans une définition de tâche Amazon ECS
<a name="specify-volume-config"></a>

Avant que vos conteneurs puissent utiliser des volumes de données, vous devez spécifier les configurations du volume et du point de montage dans votre définition de tâche. Cette section décrit la configuration du volume pour un conteneur. Pour les tâches qui utilisent un volume Docker, spécifiez une propriété `dockerVolumeConfiguration`. Pour les tâches qui utilisent un volume hôte de montage lié, spécifiez un `host` et éventuellement un `sourcePath`.

La définition de tâche JSON indiquée ci-dessous illustre la syntaxe des objets `volumes` et `mountPoints` pour un conteneur :

```
{
    "containerDefinitions": [
        {
            "mountPoints": [
                {
                    "sourceVolume": "string",
                    "containerPath": "/path/to/mount_volume",
                    "readOnly": boolean
                }
            ]
        }
    ],
    "volumes": [
        {
            "name": "string",
            "dockerVolumeConfiguration": {
                "scope": "string",
                "autoprovision": boolean,
                "driver": "string",
                "driverOpts": {
                    "key": "value"
                },
                "labels": {
                    "key": "value"
                }
            }
        }
    ]
}
```

`name`  
Type : chaîne  
Obligatoire : non  
Nom du volume. Jusqu’à 255 lettres (majuscules et minuscules), chiffres, traits d’union (`-`) et traits de soulignement (`_`) sont autorisés. Ce nom est référencé dans le paramètre `sourceVolume` de l’objet `mountPoints` de définition du conteneur.

`dockerVolumeConfiguration`  
Type : [DockerVolumeConfiguration](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DockerVolumeConfiguration.html)Objet  
Obligatoire : non  
Ce paramètre est spécifié lorsque vous utilisez des volumes Docker. Les volumes Docker sont pris en charge uniquement lors de l’exécution de tâches sur des instances EC2. Les conteneurs Windows prennent uniquement en charge l’utilisation du pilote `local`. Pour utiliser des montages liés, spécifiez plutôt un paramètre `host`.    
`scope`  
Type : Chaîne  
Valeurs valides : `task` \$1 `shared`  
Obligatoire : non  
Portée du volume Docker, qui détermine son cycle de vie. Les volumes Docker destinés à un élément `task` sont automatiquement mis en service lorsque la tâche commence, et détruits lorsque la tâche s'arrête. Les volumes Docker définis comme `shared` ne sont pas supprimés lorsque la tâche s'arrête.  
`autoprovision`  
Type : Boolean  
Valeur par défaut : `false`  
Obligatoire : non  
Si cette valeur est `true`, le volume Docker est créé s'il n'existe pas déjà. Ce champ n’est utilisé que si `scope` a la valeur `shared`. Si le champ `scope` a la valeur `task`, ce paramètre doit être omis.  
`driver`  
Type : chaîne  
Obligatoire : non  
Pilote de volume Docker à utiliser. La valeur du pilote doit correspondre au nom du pilote fourni par Docker, car ce nom est utilisé pour le placement des tâches. Si le pilote a été installé à l’aide de l’interface CLI du plug-in Docker, utilisez `docker plugin ls` pour récupérer le nom du pilote à partir de votre instance de conteneur. Si le pilote a été installé à l’aide d’une autre méthode, utilisez la découverte du plug-in Docker pour récupérer le nom du pilote.  
`driverOpts`  
Type : chaîne  
Obligatoire : non  
Mappage des options spécifiques au pilote Docker à transmettre. Ce paramètre correspond à `DriverOpts` dans la section « Créer un volume » de Docker.  
`labels`  
Type : chaîne  
Obligatoire : non  
Métadonnées personnalisées à ajouter à votre volume Docker.

`mountPoints`  
Type : tableau d'objets  
Obligatoire : non  
Les points de montage pour les volumes de données dans votre conteneur. Ce paramètre correspond à `Volumes` dans l’API Docker create-container et à l’option `--volume` de docker run.  
Les conteneurs Windows peuvent monter des répertoires entiers sur le même lecteur que `$env:ProgramData`. Les conteneurs Windows ne peuvent pas monter de répertoires sur un autre lecteur, et les points de montage ne peuvent pas être utilisés sur plusieurs lecteurs. Vous devez spécifier des points de montage pour associer un volume Amazon EBS directement à une tâche Amazon ECS.    
`sourceVolume`  
Type : Chaîne  
Obligatoire : oui, lorsque des objets `mountPoints` sont utilisés  
Nom du volume à monter.  
`containerPath`  
Type : Chaîne  
Obligatoire : oui, lorsque des objets `mountPoints` sont utilisés  
Le chemin dans le conteneur où le volume sera monté.  
`readOnly`  
Type : booléen  
Obligatoire : non  
Si cette valeur est `true`, le conteneur ne peut accéder au volume qu'en lecture. Si cette valeur est `false`, le conteneur peut écrire sur le volume. La valeur par défaut est `false`.  
Pour les tâches exécutées sur des instances EC2 exécutant le système d’exploitation Windows, laissez la valeur `false` par défaut.

# Exemples de volumes Docker pour Amazon ECS
<a name="docker-volume-examples"></a>

Les exemples suivants montrent comment fournir un stockage éphémère pour un conteneur et comment fournir un volume partagé pour plusieurs conteneurs, et comment fournir un stockage persistant NFS pour un conteneur.

**Pour fournir un stockage éphémère à un conteneur à l’aide d’un volume Docker**

Dans cet exemple, un conteneur utilise un volume de données vide qui est éliminé une fois la tâche terminée. Un exemple d'utilisation est que vous pourriez avoir un conteneur qui doit accéder à un emplacement de stockage de fichiers de travail pendant une tâche. Cette tâche peut être réalisée à l'aide d'un volume Docker.

1. Dans la section `volumes` de la définition de tâche, définissez un volume de données avec les valeurs `name` et `DockerVolumeConfiguration`. Dans cet exemple, nous spécifions la portée sous la forme `task`. Le volume est donc supprimé après l'arrêt de la tâche et il utilise le pilote `local` intégré.

   ```
   "volumes": [
       {
           "name": "scratch",
           "dockerVolumeConfiguration" : {
               "scope": "task",
               "driver": "local",
               "labels": {
                   "scratch": "space"
               }
           }
       }
   ]
   ```

1. Dans la section `containerDefinitions`, définissez un conteneur avec des valeurs `mountPoints` qui font référence au nom du volume défini et la valeur `containerPath` sur laquelle monter le volume sur le conteneur.

   ```
   "containerDefinitions": [
       {
           "name": "container-1",
           "mountPoints": [
               {
                 "sourceVolume": "scratch",
                 "containerPath": "/var/scratch"
               }
           ]
       }
   ]
   ```

**Pour fournir un stockage persistant à plusieurs conteneurs à l’aide d’un volume Docker**

Dans cet exemple, vous voulez un volume partagé qui sera utilisé par plusieurs conteneurs et vous souhaitez qu'il persiste après l'arrêt des tâches qui l'utilisent. Le pilote `local` intégré est en cours d'utilisation. Ainsi, le volume est toujours lié au cycle de vie de l'instance de conteneur.

1. Dans la section `volumes` de la définition de tâche, définissez un volume de données avec les valeurs `name` et `DockerVolumeConfiguration`. Dans cet exemple, spécifiez une portée `shared` pour que le volume persiste, définissez autoprovision sur `true`. C'est ainsi que le volume est créé pour être utilisé. Ensuite, utilisez également le pilote `local` intégré.

   ```
   "volumes": [
       {
           "name": "database",
           "dockerVolumeConfiguration" : {
               "scope": "shared",
               "autoprovision": true,
               "driver": "local",
               "labels": {
                   "database": "database_name"
               }
           }
       }
   ]
   ```

1. Dans la section `containerDefinitions`, définissez un conteneur avec des valeurs `mountPoints` qui font référence au nom du volume défini et la valeur `containerPath` sur laquelle monter le volume sur le conteneur.

   ```
   "containerDefinitions": [
       {
           "name": "container-1",
           "mountPoints": [
           {
             "sourceVolume": "database",
             "containerPath": "/var/database"
           }
         ]
       },
       {
         "name": "container-2",
         "mountPoints": [
           {
             "sourceVolume": "database",
             "containerPath": "/var/database"
           }
         ]
       }
     ]
   ```

**Pour fournir un stockage permanent NFS pour un conteneur à l'aide d'un volume Docker**

 Dans cet exemple, un conteneur utilise un volume de données NFS qui est automatiquement monté lorsque la tâche démarre et démonté lorsque la tâche s'arrête. Cela utilise le pilote `local` intégré Docker. Un exemple d'utilisation est que vous pourriez avoir un stockage NFS local et que vous devez y accéder à l'aide d'une tâche ECS Anywhere. Cela peut être réalisé à l'aide d'un volume Docker avec option de pilote NFS.

1. Dans la section `volumes` de la définition de tâche, définissez un volume de données avec les valeurs `name` et `DockerVolumeConfiguration`. Dans cet exemple, spécifiez une portée `task` de telle sorte que le volume soit démonté une fois la tâche terminée. Utilisez le pilote `local` et configurez le `driverOpts` avec le `type`, `device` et les options `o` en conséquence. Remplacez `NFS_SERVER` par le point de terminaison du serveur NFS.

   ```
   "volumes": [
          {
              "name": "NFS",
              "dockerVolumeConfiguration" : {
                  "scope": "task",
                  "driver": "local",
                  "driverOpts": {
                      "type": "nfs",
                      "device": "$NFS_SERVER:/mnt/nfs",
                      "o": "addr=$NFS_SERVER"
                  }
              }
          }
      ]
   ```

1. Dans la section `containerDefinitions`, définissez un conteneur avec des valeurs `mountPoints` qui font référence au nom du volume défini et la valeur `containerPath` sur laquelle monter le volume sur le conteneur.

   ```
   "containerDefinitions": [
          {
              "name": "container-1",
              "mountPoints": [
                  {
                    "sourceVolume": "NFS",
                    "containerPath": "/var/nfsmount"
                  }
              ]
          }
      ]
   ```

# Utilisation de montages liés avec Amazon ECS
<a name="bind-mounts"></a>

Avec les montages liés, un fichier ou un répertoire sur un hôte, tel qu’une instance Amazon EC2, est monté dans un conteneur. Les montages liés sont pris en charge lorsque vous exécutez des tâches sur des instances Fargate ou Amazon EC2. Les montages liés sont liés au cycle de vie du conteneur qui les utilise. Une fois que tous les conteneurs qui utilisent un montage lié sont arrêtés, par exemple lorsqu'une tâche est arrêtée, les données sont supprimées. Pour les tâches hébergées sur des instances Amazon EC2, les données peuvent être liées au cycle de vie de l’instance Amazon EC2 hôte en spécifiant un `host` et une valeur `sourcePath` facultative dans votre définition de tâche. Pour de plus amples informations, consultez la section [Montages liés](https://docs.docker.com/engine/storage/bind-mounts/) dans la documentation Docker.

Voici quelques cas d'utilisation courants pour les montages liés.
+ Pour fournir un volume de données vide à monter dans un ou plusieurs conteneurs.
+ Pour monter un volume de données hôte dans un ou plusieurs conteneurs.
+ Pour partager un volume de données d'un conteneur source avec d'autres conteneurs dans la même tâche.
+ Pour exposer un chemin d'accès et son contenu d'un fichier Dockerfile à un ou plusieurs conteneurs.

## Considérations relatives à l'utilisation des montages liés
<a name="bind-mount-considerations"></a>

Lorsque vous utilisez des montages liés, tenez compte des éléments suivants.
+ Par défaut, les tâches hébergées sur AWS Fargate une version de plate-forme `1.4.0` ou ultérieure (Linux) `1.0.0` ou ultérieure (Windows) reçoivent un minimum de 20 GiB de stockage éphémère pour les montages liés. Vous pouvez augmenter la quantité totale de stockage éphémère jusqu’à un maximum de 200 Gio en spécifiant le paramètre `ephemeralStorage` dans votre définition de tâche.
+ Pour exposer des fichiers d'un fichier Dockerfile à un volume de données lorsqu'une tâche est exécutée, le plan de données Amazon ECS recherche une directive `VOLUME`. Si le chemin absolu spécifié dans la directive `VOLUME` est le même que le `containerPath` spécifié dans la définition de tâche, les données du chemin de directive `VOLUME` sont copiées sur le volume de données. Dans l'exemple Dockerfile suivant, un fichier nommé `examplefile` dans le répertoire `/var/log/exported` est écrit sur l'hôte, puis monté à l'intérieur du conteneur.

  ```
  FROM public.ecr.aws/amazonlinux/amazonlinux:latest
  RUN mkdir -p /var/log/exported
  RUN touch /var/log/exported/examplefile
  VOLUME ["/var/log/exported"]
  ```

  Par défaut, les autorisations de volume sont définies sur `0755` et le propriétaire en tant que `root`. Vous pouvez personnaliser ces autorisations dans le fichier Dockerfile. L'exemple suivant définit le propriétaire du répertoire en tant que `node`.

  ```
  FROM public.ecr.aws/amazonlinux/amazonlinux:latest
  RUN yum install -y shadow-utils && yum clean all
  RUN useradd node
  RUN mkdir -p /var/log/exported && chown node:node /var/log/exported
  RUN touch /var/log/exported/examplefile
  USER node
  VOLUME ["/var/log/exported"]
  ```
+ Pour les tâches hébergées sur des instances Amazon EC2, lorsque les valeurs `host` et `sourcePath` ne sont pas spécifiées, le démon Docker gère le montage lié à votre place. Lorsqu'aucun conteneur ne fait référence à ce montage lié, le service de nettoyage des tâches de l'agent de conteneur Amazon ECS finit par le supprimer. Par défaut, cela se produit trois heures après la sortie du conteneur. Toutefois, vous pouvez configurer cette durée avec la variable de l'agent `ECS_ENGINE_TASK_CLEANUP_WAIT_DURATION`. Pour de plus amples informations, veuillez consulter [Configuration de l'agent de conteneur Amazon ECS](ecs-agent-config.md). Si vous avez besoin de conserver ces données au-delà du cycle de vie de conteneur, spécifiez une valeur `sourcePath` pour le montage lié.
+ Pour les tâches hébergées sur les instances gérées Amazon ECS, certaines parties du système de fichiers racine sont en lecture seule. Read/write les montages par liaison doivent utiliser des répertoires inscriptibles, par exemple `/var` pour les données persistantes ou `/tmp` pour les données temporaires. Toute tentative de création de montages par read/write liaison vers d'autres répertoires entraîne l'échec du lancement de la tâche avec une erreur similaire à la suivante :

  ```
  error creating empty volume: error while creating volume path '/path': mkdir /path: read-only file system
  ```

  Les montages de liaison en lecture seule (configurés `"readOnly": true` dans le `mountPoints` paramètre) peuvent pointer vers n'importe quel répertoire accessible sur l'hôte.

  Pour consulter la liste complète des chemins accessibles en écriture, vous pouvez exécuter une tâche sur une instance gérée Amazon ECS et l'utiliser pour inspecter la table de montage de l'instance. Créez une définition de tâche avec les paramètres suivants pour accéder au système de fichiers hôte :

  ```
  {
      "pidMode": "host",
      "containerDefinitions": [{
          "privileged": true,
          ...
      }]
  }
  ```

  Exécutez ensuite les commandes suivantes depuis le conteneur :

  ```
  # List writable mounts
  cat /proc/1/root/proc/1/mounts | awk '$4 ~ /^rw,/ || $4 == "rw" {print $2}' | sort
  
  # List read-only mounts
  cat /proc/1/root/proc/1/mounts | awk '$4 ~ /^ro,/ || $4 == "ro" {print $2}' | sort
  ```
**Important**  
Le `privileged` paramètre accorde au conteneur des fonctionnalités étendues sur l'hôte, équivalentes à un accès root. Dans cet exemple, il est utilisé pour inspecter la table de montage de l'hôte à des fins de diagnostic. Pour de plus amples informations, veuillez consulter [Évitez d'exécuter des conteneurs dotés de privilèges (Amazon EC2)](security-tasks-containers.md#security-tasks-containers-recommendations-avoid-privileged-containers).

  Pour plus d'informations sur l'exécution interactive de commandes dans des conteneurs, consultez[Surveillance des conteneurs Amazon ECS avec ECS Exec](ecs-exec.md).

# Spécification d’un montage lié dans une définition de tâche Amazon ECS
<a name="specify-bind-mount-config"></a>

Pour les tâches Amazon ECS hébergées sur des instances Fargate ou Amazon EC2, l’extrait JSON de définition de tâche suivant montre la syntaxe des objets `volumes`, `mountPoints` et `ephemeralStorage` pour une définition de tâche.

```
{
   "family": "",
   ...
   "containerDefinitions" : [
      {
         "mountPoints" : [
            {
               "containerPath" : "/path/to/mount_volume",
               "sourceVolume" : "string"
            }
          ],
          "name" : "string"
       }
    ],
    ...
    "volumes" : [
       {
          "name" : "string"
       }
    ],
    "ephemeralStorage": {
	   "sizeInGiB": integer
    }
}
```

Pour les tâches Amazon ECS hébergées sur des instances Amazon EC2, vous pouvez utiliser le paramètre `host` facultatif et un `sourcePath` lorsque vous spécifiez les détails du volume de tâches. Lorsqu'il est spécifié, il lie le montage lié au cycle de vie de la tâche plutôt qu'au conteneur.

```
"volumes" : [
    {
        "host" : {
            "sourcePath" : "string"
        },
        "name" : "string"
    }
]
```

Voici des descriptions plus détaillées de chaque paramètre de définition de tâche.

`name`  
Type : chaîne  
Obligatoire : non  
Nom du volume. Jusqu’à 255 lettres (majuscules et minuscules), chiffres, traits d’union (`-`) et traits de soulignement (`_`) sont autorisés. Ce nom est référencé dans le paramètre `sourceVolume` de l’objet `mountPoints` de définition du conteneur.

`host`  
Obligatoire : non  
Le paramètre `host` est utilisé pour lier le cycle de vie du montage lié à l'instance Amazon EC2 hôte, plutôt qu'à la tâche et à l'endroit où elle est stockée. Si le paramètre `host` est vide, le démon Docker attribue un chemin hôte au volume de données, mais la persistance des données après l'arrêt des conteneurs qui lui sont associés n'est pas garantie.  
Les conteneurs Windows peuvent monter des répertoires entiers sur le même lecteur que `$env:ProgramData`.  
Le `sourcePath` paramètre est pris en charge uniquement lors de l'utilisation de tâches hébergées sur des instances Amazon EC2 ou des instances gérées Amazon ECS.  
`sourcePath`  
Type : chaîne  
Obligatoire : non  
Lorsque le paramètre `host` est utilisé, spécifiez un paramètre `sourcePath` pour déclarer le chemin d'accès sur l'instance Amazon EC2 hôte qui est présentée au conteneur. Si ce paramètre est vide, le démon Docker attribue un chemin hôte pour vous. Si le paramètre `host` contient un emplacement de fichier `sourcePath`, le volume de données persiste à l'emplacement spécifié sur l'instance Amazon EC2 hôte jusqu'à ce que vous le supprimiez manuellement. Si la valeur `sourcePath` n'existe pas sur l'instance Amazon EC2 hôte, le démon Docker la crée. Si l'emplacement n'existe pas, le contenu du chemin source est exporté.

`mountPoints`  
Type : tableau d'objets  
Obligatoire : non  
Les points de montage pour les volumes de données dans votre conteneur. Ce paramètre correspond à `Volumes` dans l’API Docker create-container et à l’option `--volume` de docker run.  
Les conteneurs Windows peuvent monter des répertoires entiers sur le même lecteur que `$env:ProgramData`. Les conteneurs Windows ne peuvent pas monter de répertoires sur un autre lecteur, et les points de montage ne peuvent pas être utilisés sur plusieurs lecteurs. Vous devez spécifier des points de montage pour associer un volume Amazon EBS directement à une tâche Amazon ECS.    
`sourceVolume`  
Type : Chaîne  
Obligatoire : oui, lorsque des objets `mountPoints` sont utilisés  
Nom du volume à monter.  
`containerPath`  
Type : Chaîne  
Obligatoire : oui, lorsque des objets `mountPoints` sont utilisés  
Le chemin dans le conteneur où le volume sera monté.  
`readOnly`  
Type : booléen  
Obligatoire : non  
Si cette valeur est `true`, le conteneur ne peut accéder au volume qu'en lecture. Si cette valeur est `false`, le conteneur peut écrire sur le volume. La valeur par défaut est `false`.  
Pour les tâches exécutées sur des instances EC2 exécutant le système d’exploitation Windows, laissez la valeur `false` par défaut.

`ephemeralStorage`  
Type : objet  
Obligatoire : non  
Quantité de magasin éphémère à allouer pour la tâche. Ce paramètre est utilisé pour augmenter la quantité totale de stockage éphémère disponible, au-delà de la quantité par défaut, pour les tâches hébergées sur AWS Fargate une version de plate-forme `1.4.0` ou ultérieure (Linux) `1.0.0` ou ultérieure (Windows).  
Vous pouvez utiliser la CLI Copilot CloudFormation, le AWS SDK ou l'interface de ligne de commande pour spécifier un stockage éphémère pour un montage par liaison.

# Exemples de montage lié pour Amazon ECS
<a name="bind-mount-examples"></a>

Les exemples suivants couvrent les cas d’utilisation courants pour l’utilisation d’un montage lié pour vos conteneurs.

**Pour allouer une quantité accrue d'espace de stockage éphémère pour une tâche Fargate**

Pour les tâches Amazon ECS hébergées sur Fargate à l'aide de la version `1.4.0` de la plateforme ou une version ultérieure (Linux) ou `1.0.0` (Windows), vous pouvez allouer plus que la quantité de magasins éphémères par défaut pour les conteneurs de votre tâche à utiliser. Cet exemple peut être intégré dans les autres exemples afin d'allouer plus de stockage éphémère pour vos tâches Fargate.
+ Dans la définition de la tâche, définissez un objet `ephemeralStorage`. La valeur `sizeInGiB` doit être un nombre entier compris entre `21` et `200` est exprimée en GiB.

  ```
  "ephemeralStorage": {
      "sizeInGiB": integer
  }
  ```

**Pour fournir un volume de données vide pour un ou plusieurs conteneurs**

Dans certains cas, vous voudrez fournir aux conteneurs dans une tâche un peu d'espace vide. Supposons par exemple que deux conteneurs de base de données doivent accéder au même emplacement de stockage temporaire pendant une tâche. Cela peut être réalisé à l'aide d'un montage lié.

1. Dans la section `volumes` de la définition de tâche, définissez un montage lié nommé `database_scratch`.

   ```
     "volumes": [
       {
         "name": "database_scratch"
       }
     ]
   ```

1. Dans la section `containerDefinitions`, créez les définitions de conteneur de base de données. Cela permet de monter le volume.

   ```
   "containerDefinitions": [
       {
         "name": "database1",
         "image": "my-repo/database",
         "cpu": 100,
         "memory": 100,
         "essential": true,
         "mountPoints": [
           {
             "sourceVolume": "database_scratch",
             "containerPath": "/var/scratch"
           }
         ]
       },
       {
         "name": "database2",
         "image": "my-repo/database",
         "cpu": 100,
         "memory": 100,
         "essential": true,
         "mountPoints": [
           {
             "sourceVolume": "database_scratch",
             "containerPath": "/var/scratch"
           }
         ]
       }
     ]
   ```

**Pour exposer un chemin d'accès et son contenu d'un fichier Dockerfile à un ou plusieurs conteneurs.**

Dans cet exemple, vous avez un fichier Dockerfile qui écrit les données que vous souhaitez monter à l'intérieur d'un conteneur. Cet exemple fonctionne pour les tâches hébergées sur des instances Fargate ou Amazon EC2.

1. Créez un fichier Dockerfile. L'exemple suivant utilise l'image du conteneur Amazon Linux 2 publique et crée un fichier nommé `examplefile` dans le répertoire `/var/log/exported` que nous voulons monter à l'intérieur du conteneur. Le répertoire `VOLUME` doit spécifier un chemin absolu.

   ```
   FROM public.ecr.aws/amazonlinux/amazonlinux:latest
   RUN mkdir -p /var/log/exported
   RUN touch /var/log/exported/examplefile
   VOLUME ["/var/log/exported"]
   ```

   Par défaut, les autorisations de volume sont définies sur `0755` et le propriétaire en tant que `root`. Ces autorisations peuvent être modifiées dans le fichier Dockerfile. L'exemple suivant définit le propriétaire du répertoire `/var/log/exported` en tant que `node`.

   ```
   FROM public.ecr.aws/amazonlinux/amazonlinux:latest
   RUN yum install -y shadow-utils && yum clean all
   RUN useradd node
   RUN mkdir -p /var/log/exported && chown node:node /var/log/exported					    
   USER node
   RUN touch /var/log/exported/examplefile
   VOLUME ["/var/log/exported"]
   ```

1. Dans la section `volumes` de la définition de tâche, définissez un volume nommé `application_logs`.

   ```
     "volumes": [
       {
         "name": "application_logs"
       }
     ]
   ```

1. Dans la section `containerDefinitions`, créez les définitions de conteneur d'application. Cela permet de monter le stockage. La valeur `containerPath` doit correspondre au chemin absolu spécifié dans la directive `VOLUME` du Dockerfile.

   ```
     "containerDefinitions": [
       {
         "name": "application1",
         "image": "my-repo/application",
         "cpu": 100,
         "memory": 100,
         "essential": true,
         "mountPoints": [
           {
             "sourceVolume": "application_logs",
             "containerPath": "/var/log/exported"
           }
         ]
       },
       {
         "name": "application2",
         "image": "my-repo/application",
         "cpu": 100,
         "memory": 100,
         "essential": true,
         "mountPoints": [
           {
             "sourceVolume": "application_logs",
             "containerPath": "/var/log/exported"
           }
         ]
       }
     ]
   ```

**Pour fournir un volume de données vide pour un conteneur lié au cycle de vie de l'instance Amazon EC2 hôte**

Pour les tâches hébergées sur des instances Amazon EC2, vous pouvez utiliser des montages liés et lier les données au cycle de vie de l'instance Amazon EC2 hôte. Vous pouvez effectuer cette opération en utilisant le paramètre `host` et en spécifiant une valeur `sourcePath`. Tous les fichiers qui existent sur le `sourcePath` sont présentés dans les conteneurs à la valeur `containerPath`. Tous les fichiers écrits dans la valeur `containerPath` sont écrits dans la valeur `sourcePath` de l'instance Amazon EC2 hôte.
**Important**  
Amazon ECS ne synchronise pas votre stockage entre les instances Amazon EC2. Les tâches qui utilisent un stockage permanent peuvent être placées sur n'importe quelle instance Amazon EC2 disposant de la capacité nécessaire dans votre cluster. Si vos tâches nécessitent un stockage permanent après l'arrêt et le redémarrage, spécifiez toujours la même instance Amazon EC2 au moment du lancement de la tâche à l'aide de AWS CLI [la](https://docs.aws.amazon.com/cli/latest/reference/ecs/start-task.html) commande start-task. Vous pouvez également utiliser des volumes Amazon EFS pour le stockage permanent. Pour de plus amples informations, veuillez consulter [Utilisation des volumes Amazon EFS avec Amazon ECS](efs-volumes.md).

1. Dans la section `volumes` de la définition de tâche, définissez un montage lié avec les valeurs `name` et `sourcePath`. Dans l'exemple suivant, l'instance Amazon EC2 hôte contient des données sous `/ecs/webdata` que vous souhaitez monter à l'intérieur du conteneur.

   ```
     "volumes": [
       {
         "name": "webdata",
         "host": {
           "sourcePath": "/ecs/webdata"
         }
       }
     ]
   ```

1. Dans la section `containerDefinitions`, définissez un conteneur avec une valeur `mountPoints` qui fait référence au nom du montage lié défini et la valeur `containerPath` sur laquelle monter le montage lié sur le conteneur.

   ```
     "containerDefinitions": [
       {
         "name": "web",
         "image": "public.ecr.aws/docker/library/nginx:latest",
         "cpu": 99,
         "memory": 100,
         "portMappings": [
           {
             "containerPort": 80,
             "hostPort": 80
           }
         ],
         "essential": true,
         "mountPoints": [
           {
             "sourceVolume": "webdata",
             "containerPath": "/usr/share/nginx/html"
           }
         ]
       }
     ]
   ```

**Pour monter un volume défini sur plusieurs conteneurs à différents emplacements**

Vous pouvez définir un volume de données dans une définition de tâche et monter ce volume à différents emplacements de différents conteneurs. Par exemple, votre conteneur hôte possède un dossier de données de site web à l'adresse `/data/webroot`. Vous voudrez peut-être monter ce volume de données en lecture seule sur deux serveurs web qui ont des racines de documents différentes.

1. Dans la section `volumes` de la définition de tâche, définissez un volume de données nommé `webroot` et ayant le chemin source `/data/webroot`.

   ```
     "volumes": [
       {
         "name": "webroot",
         "host": {
           "sourcePath": "/data/webroot"
         }
       }
     ]
   ```

1. Dans la section `containerDefinitions`, définissez un conteneur pour chaque serveur web avec des valeurs `mountPoints` qui associent le volume `webroot` à la valeur `containerPath` pointant vers la racine du document pour ce conteneur.

   ```
     "containerDefinitions": [
       {
         "name": "web-server-1",
         "image": "my-repo/ubuntu-apache",
         "cpu": 100,
         "memory": 100,
         "portMappings": [
           {
             "containerPort": 80,
             "hostPort": 80
           }
         ],
         "essential": true,
         "mountPoints": [
           {
             "sourceVolume": "webroot",
             "containerPath": "/var/www/html",
             "readOnly": true
           }
         ]
       },
       {
         "name": "web-server-2",
         "image": "my-repo/sles11-apache",
         "cpu": 100,
         "memory": 100,
         "portMappings": [
           {
             "containerPort": 8080,
             "hostPort": 8080
           }
         ],
         "essential": true,
         "mountPoints": [
           {
             "sourceVolume": "webroot",
             "containerPath": "/srv/www/htdocs",
             "readOnly": true
           }
         ]
       }
     ]
   ```

**Pour monter les volumes à partir d'un autre conteneur à l'aide de `volumesFrom`**

Pour les tâches hébergées sur des instances Amazon EC2, vous pouvez définir un ou plusieurs volumes sur un conteneur, puis utiliser le paramètre `volumesFrom` dans une définition du conteneur différente, au sein de la même tâche, pour monter tous les volumes du `sourceContainer` à leurs points de montage définis à l'origine. Le paramètre `volumesFrom` s'applique aux volumes définis dans la définition de tâche et à ceux qui sont intégrés à l'image au sein d'un Dockerfile.

1. (Facultatif) Pour partager un volume qui est intégré à une image, suivez les instructions `VOLUME` du fichier Dockerfile. L'exemple de Dockerfile suivant utilise une image `httpd`, puis ajoute un volume et le monte à l'emplacement `dockerfile_volume` dans la racine du document Apache. Il s'agit du dossier utilisé par le serveur web `httpd`.

   ```
   FROM httpd
   VOLUME ["/usr/local/apache2/htdocs/dockerfile_volume"]
   ```

   Vous pouvez créer une image avec ce Dockerfile, la transférer dans un référentiel (comme Docker Hub), puis l'utiliser dans votre définition de tâche. L’exemple d’image `my-repo/httpd_dockerfile_volume` utilisée dans les étapes suivantes a été créée avec le Dockerfile précédent.

1. Créez une définition de tâche qui définit les autres volumes et points de montage pour les conteneurs. Dans la section `volumes` de cet exemple, vous créez un volume vide appelé `empty` qui est géré par le démon Docker. Il existe également un volume hôte défini qui est appelé `host_etc`. Il exporte le dossier `/etc` dans l'instance de conteneur hôte.

   ```
   {
     "family": "test-volumes-from",
     "volumes": [
       {
         "name": "empty",
         "host": {}
       },
       {
         "name": "host_etc",
         "host": {
           "sourcePath": "/etc"
         }
       }
     ],
   ```

   Dans la section des définitions de conteneur, créez un conteneur qui monte les volumes définis précédemment. Dans cet exemple, le conteneur `web` monte les volumes `empty` et `host_etc`. Il s'agit du conteneur qui utilise l'image créée avec un volume dans le Dockerfile.

   ```
   "containerDefinitions": [
       {
         "name": "web",
         "image": "my-repo/httpd_dockerfile_volume",
         "cpu": 100,
         "memory": 500,
         "portMappings": [
           {
             "containerPort": 80,
             "hostPort": 80
           }
         ],
         "mountPoints": [
           {
             "sourceVolume": "empty",
             "containerPath": "/usr/local/apache2/htdocs/empty_volume"
           },
           {
             "sourceVolume": "host_etc",
             "containerPath": "/usr/local/apache2/htdocs/host_etc"
           }
         ],
         "essential": true
       },
   ```

   Créez un autre conteneur qui utilise `volumesFrom` pour monter tous les volumes qui sont associés au conteneur `web`. Tous les volumes du conteneur `web` sont également montés sur le conteneur `busybox`. Cela inclut le volume spécifié dans le Dockerfile qui a été utilisé pour générer l'image `my-repo/httpd_dockerfile_volume`.

   ```
       {
         "name": "busybox",
         "image": "busybox",
         "volumesFrom": [
           {
             "sourceContainer": "web"
           }
         ],
         "cpu": 100,
         "memory": 500,
         "entryPoint": [
           "sh",
           "-c"
         ],
         "command": [
           "echo $(date) > /usr/local/apache2/htdocs/empty_volume/date && echo $(date) > /usr/local/apache2/htdocs/host_etc/date && echo $(date) > /usr/local/apache2/htdocs/dockerfile_volume/date"
         ],
         "essential": false
       }
     ]
   }
   ```

   Lorsque la tâche est exécutée, les deux conteneurs montent les volumes, et la fonction `command` du conteneur `busybox` écrit la date et l'heure dans un fichier. Ce fichier est appelé `date` dans chacun des dossiers de volumes. Les dossiers sont alors visibles sur le site web affiché par le conteneur `web`.
**Note**  
Étant donné que le conteneur `busybox` exécute une commande rapide avant de s'arrêter, il doit être défini en tant que `"essential": false` dans la définition de conteneur. Dans le cas contraire, il arrête l'ensemble de la tâche lorsqu'il s'arrête.