

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.

# Authentification avec des référentiels d'images
<a name="docker-configuration.remote-repo"></a>

Cette rubrique explique comment s'authentifier auprès de référentiels d'images en ligne avec Elastic Beanstalk. Pour les référentiels privés, Elastic Beanstalk doit s'authentifier avant de pouvoir extraire et déployer vos images. Pour Amazon ECR Public, l'authentification est facultative mais fournit des limites de débit plus élevées et une fiabilité améliorée.

## Utilisation d'images à partir d'un référentiel Amazon ECR
<a name="docker-images-ecr"></a>

Vous pouvez stocker vos images Docker personnalisées dans AWS [Amazon Elastic Container Registry](https://aws.amazon.com/ecr) (Amazon ECR). 

[Lorsque vous stockez vos images Docker dans Amazon ECR, Elastic Beanstalk s'authentifie automatiquement auprès du registre Amazon ECR avec le profil d'instance de votre environnement.](concepts-roles-instance.md) Par conséquent, vous devez autoriser vos instances à accéder aux images de votre référentiel Amazon ECR. Pour ce faire, ajoutez des autorisations au profil d'instance de votre environnement en attachant la politique EC2 ContainerRegistryReadOnly gérée par [Amazon](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEC2ContainerRegistryReadOnly.html) au profil d'instance. Cela fournit un accès en lecture seule à tous les référentiels Amazon ECR de votre compte. Vous avez également la possibilité de n'accéder qu'à un seul référentiel en utilisant le modèle suivant pour créer une politique personnalisée :

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowEbAuth",
            "Effect": "Allow",
            "Action": [
                "ecr:GetAuthorizationToken"
            ],
            "Resource": [
                "*"
            ]
        },
        {
            "Sid": "AllowPull",
            "Effect": "Allow",
            "Resource": [
                "arn:aws:ecr:us-east-2:{{111122223333}}:repository/{{repository-name}}"
            ],
            "Action": [
                "ecr:GetAuthorizationToken",
                "ecr:BatchCheckLayerAvailability",
                "ecr:GetDownloadUrlForLayer",
                "ecr:GetRepositoryPolicy",
                "ecr:DescribeRepositories",
                "ecr:ListImages",
                "ecr:BatchGetImage"
            ]
        }
    ]
}
```

------

Remplacez le nom Amazon Resource Name (ARN) dans la stratégie ci-dessus par l'ARN de votre référentiel.

Vous devez spécifier les informations relatives à l'image dans votre `Dockerrun.aws.json` fichier. La configuration sera différente en fonction de la plateforme que vous utilisez.

Pour la [plateforme Docker gérée par ECS](create_deploy_docker_v2config.md), utilisez la `image` clé dans un objet **** de définition de conteneur :

```
"containerDefinitions": [
        {
        "name": "my-image",
        "image": "{{account-id}}.dkr.ecr.us-east-2.amazonaws.com/{{repository-name:latest}}",
```

Pour la [plateforme Docker](single-container-docker-configuration.md), reportez-vous à l'image par URL. L'URL se trouve dans la `Image` définition de votre `Dockerrun.aws.json` fichier :

```
  "Image": {
      "Name": "{{account-id}}.dkr.ecr.us-east-2.amazonaws.com/{{repository-name:latest}}",
      "Update": "true"
    },
```

## En utilisant AWS Secrets Manager
<a name="docker-configuration.remote-repo.secrets"></a>

Configurez Elastic Beanstalk pour qu'il s'authentifie auprès de votre référentiel privé avant le déploiement afin de permettre l'accès aux images de vos conteneurs.

Cette approche utilise la phase de *préconstruction* du processus de déploiement d'Elastic Beanstalk avec deux composants :
+ [ebextensions](ebextensions.md) pour définir les variables d'environnement qui stockent les informations d'identification du référentiel
+ [scripts de crochet de plateforme](platforms-linux-extend.hooks.md) à exécuter **docker login** avant d'extraire des images

Les scripts hook récupèrent un nom d'utilisateur et un mot de passe à partir de variables d'environnement renseignées à partir d'un AWS Secrets Manager secret unique au format JSON. [Cette fonctionnalité nécessite les plateformes Docker Elastic Beanstalk et Docker gérées par ECS publiées le 13 janvier 2026 ou après cette date.](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2026-01-13-al2023.html) Pour plus de détails, consultez la section [Secrets environnementaux](AWSHowTo.secrets.env-vars.md).

**Pour configurer Elastic Beanstalk afin de s'authentifier auprès de votre dépôt privé avec AWS Secrets Manager**
**Note**  
Avant de continuer, assurez-vous d'avoir configuré vos informations d'identification AWS Secrets Manager et les autorisations IAM nécessaires. Pour plus de détails, reportez-vous [à la section Conditions requises pour configurer les secrets en tant que variables d'environnement](AWSHowTo.secrets.env-vars.md#AWSHowTo.secrets.configure-env-vars.prerequisites). 

1. Créez la structure de répertoire suivante pour votre projet :

   ```
   ├── .ebextensions
   │   └── env.config
   ├── .platform
   │   ├── confighooks
   │   │   └── prebuild
   │   │       └── 01login.sh
   │   └── hooks
   │       └── prebuild
   │           └── 01login.sh
   ├── Dockerfile
   ```

1. Utilisez-le [AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html)pour enregistrer les informations d'identification de votre dépôt privé sous forme de secret au format JSON.

   ```
   aws secretsmanager create-secret --name repo-credentials \
       --secret-string '{"username":"myuser","password":"mypassword"}'
   ```

1. Créez le fichier `env.config` suivant et placez-le dans le répertoire `.ebextensions` comme indiqué dans la structure de répertoire précédente. Cette configuration utilise l'espace de [patte : tige de haricot élastique : application : secrets environnementaux](command-options-general.md#command-options-general-elasticbeanstalk-application-environmentsecrets) noms avec [extraction de clés JSON](AWSHowTo.secrets.env-vars.md#AWSHowTo.secrets.json) pour initialiser les variables d'environnement `USER` et Elastic `PASSWD` Beanstalk à partir de champs individuels du secret.

   ```
   option_settings:
     aws:elasticbeanstalk:application:environmentsecrets:
       USER: arn:aws:secretsmanager:us-east-1:111122223333:secret:repo-credentials-AbCd12:username
       PASSWD: arn:aws:secretsmanager:us-east-1:111122223333:secret:repo-credentials-AbCd12:password
   ```

1. Créez le fichier de `01login.sh` script suivant et placez-le aux emplacements suivants (également indiqués dans la structure de répertoire précédente) :
   + `.platform/confighooks/prebuild/01login.sh`
   + `.platform/hooks/prebuild/01login.sh`

   ```
   #!/bin/bash
   echo $PASSWD | docker login -u $USER --password-stdin
   ```

   Le `01login.sh` script utilise les variables d'environnement configurées à l'**étape 3** et transmet le mot de passe à **docker login** via`stdin`. Pour plus d'informations sur l'authentification Docker, consultez la section [Docker](https://docs.docker.com/engine/reference/commandline/login/) login dans la documentation Docker.
**Remarques**  
La plate-forme Docker gérée par ECS utilise la syntaxe native ECS pour référencer les secrets. Pour plus d'informations, consultez la section [Transmettre les secrets de Secrets Manager via les variables d'environnement Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/secrets-envvar-secrets-manager.html) dans le manuel *Amazon Elastic Container Service Developer Guide*.
Pour plus d'informations sur les hooks de plateforme, consultez la section *Extension [Hooks de plateforme](platforms-linux-extend.hooks.md) des plateformes Linux Elastic Beanstalk*.

Une fois l'authentification configurée, Elastic Beanstalk peut extraire et déployer des images depuis votre référentiel privé.

## Utilisation du fichier `Dockerrun.aws.json`
<a name="docker-configuration.remote-repo.dockerrun-aws"></a>

Cette section décrit une autre approche pour authentifier Elastic Beanstalk auprès d'un référentiel privé. Avec cette approche, vous générez un fichier d'authentification avec la commande Docker, puis téléchargez le fichier d'authentification dans un compartiment Amazon S3. Vous devez également inclure les informations du compartiment dans votre fichier `Dockerrun.aws.json`.

**Pour générer un fichier d'authentification et le fournir à Elastic Beanstalk**

1. Générez un fichier d'authentification avec la commande **docker login**. Pour les référentiels sur Docker Hub, exécutez **docker login**:

   ```
   $ docker login
   ```

   Pour d'autres registres, incluez l'URL du serveur de registre :

   ```
   $ docker login {{registry-server-url}}
   ```
**Note**  
Si votre environnement Elastic Beanstalk utilise la version de plateforme Docker AMI Amazon Linux (antérieure à Amazon Linux 2), lisez les informations dans [Configuration Docker sur l'AMI Amazon Linux (antérieure à Amazon Linux 2)](create_deploy_docker.container.console.md#docker-alami).

   Pour plus d'informations sur le fichier d'authentification, consultez [Store images on Docker Hub](https://docs.docker.com/docker-hub/repos/) et [docker login](https://docs.docker.com/engine/reference/commandline/login/) sur le site web de Docker.

1. Chargez une copie du fichier d'authentification nommé `.dockercfg` dans un compartiment Amazon S3 sécurisé.
   + Le compartiment Amazon S3 doit être hébergé dans le même Région AWS environnement que celui qui l'utilise. Elastic Beanstalk ne peut pas télécharger de fichiers à partir d'un compartiment Amazon S3 hébergé dans d'autres régions.
   + Accordez des autorisations pour l'opération `s3:GetObject` au rôle IAM dans le profil d'instance. Pour plus d'informations, consultez [Gestion des profils d'instance Elastic Beanstalk](iam-instanceprofile.md).

1. Incluez les informations sur le compartiment Amazon S3 dans le paramètre `Authentication` de votre fichier `Dockerrun.aws.json`.

   L'exemple suivant décrit comment utiliser un fichier d'authentification nommé `mydockercfg` dans un compartiment nommé `amzn-s3-demo-bucket` afin d'utiliser une image privée dans un registre tiers. Pour le numéro de version correct pour`AWSEBDockerrunVersion`, reportez-vous à la note qui suit l'exemple.

   ```
   {
     "AWSEBDockerrunVersion": "{{version-no}}",
     "Authentication": {
       "Bucket": "{{amzn-s3-demo-bucket}}",
       "Key": "{{mydockercfg}}"
     },
     "Image": {
       "Name": "quay.io/johndoe/private-image",
       "Update": "true"
     },
     "Ports": [
       {
         "ContainerPort": "1234"
       }
     ],
     "Volumes": [
       {
         "HostDirectory": "/var/app/mydb",
         "ContainerDirectory": "/etc/mysql"
       }
     ],
     "Logging": "/var/log/nginx"
   }
   ```
**Versions `Dockerrun.aws.json`**  
 Le paramètre `AWSEBDockerrunVersion` indique la version du fichier `Dockerrun.aws.json`.  
Le Docker AL2 et AL2023 les plateformes utilisent les versions suivantes du fichier.  
`Dockerrun.aws.json v3`— environnements utilisant Docker Compose.
`Dockerrun.aws.json v1`— environnements qui n'utilisent pas Docker Compose.
*ECS exécuté sur Amazon Linux 2* et *ECS exécuté sur* Amazon AL2023 utilisent le `Dockerrun.aws.json v2` fichier. La plate-forme retirée *ECS, l'AMI Multicontainer Docker Amazon Linux (AL1), utilisait également cette* même version.

Une fois qu'Elastic Beanstalk peut s'authentifier auprès du registre en ligne qui héberge le référentiel privé, vos images peuvent être déployées et extraites.

## Utilisation d'images provenant d'Amazon ECR Public
<a name="docker-images-ecr-public"></a>

Amazon ECR Public est un registre de conteneurs public qui héberge des images Docker. Bien que les référentiels publics Amazon ECR soient accessibles au public, l'authentification fournit des limites de débit plus élevées et une meilleure fiabilité pour vos déploiements.

**Note**  
L'authentification publique Amazon ECR n'est pas prise en charge dans les régions (`cn-*`) et les AWS GovCloud régions (`us-gov-*`) de Chine. Dans ces régions, Elastic Beanstalk utilisera des extractions non authentifiées.

Pour activer l'authentification Amazon ECR Public, ajoutez les autorisations suivantes au [profil d'instance](concepts-roles-instance.md) de votre environnement. Pour plus d'informations sur l'authentification Amazon ECR Public, consultez Authentification [du registre dans Amazon ECR public dans le Guide de l'utilisateur public](https://docs.aws.amazon.com/AmazonECR/latest/public/public-registries.html) *d'Amazon Elastic Container Registry* :

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
       {
          "Effect": "Allow",
          "Action": [
             "ecr-public:GetAuthorizationToken",
             "sts:GetServiceBearerToken"
          ],
          "Resource": "*"
       }
    ]
}
```

------

Une fois ces autorisations associées à votre profil d'instance, Elastic Beanstalk s'authentifie automatiquement auprès des registres publics Amazon ECR. Vous pouvez référencer des images Amazon ECR Public en utilisant le `public.ecr.aws/{{registry-alias}}/{{repository-name:tag}}` format standard de votre `Dockerrun.aws.json` fichier ou Dockerfile.