

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Authentifizierung mit Image-Repositorys
<a name="docker-configuration.remote-repo"></a>

In diesem Thema wird beschrieben, wie Sie sich mit Elastic Beanstalk bei Online-Image-Repositorys authentifizieren. Bei privaten Repositorys muss Elastic Beanstalk sich authentifizieren, bevor es Ihre Images abrufen und bereitstellen kann. Für Amazon ECR Public ist die Authentifizierung optional, bietet jedoch höhere Ratenlimits und eine verbesserte Zuverlässigkeit.

## Verwenden von Images aus einem Amazon ECR-Repository
<a name="docker-images-ecr"></a>

Sie können Ihre benutzerdefinierten Docker-Images in AWS [Amazon Elastic Container Registry](https://aws.amazon.com/ecr) (Amazon ECR) speichern. 

[Wenn Sie Ihre Docker-Images in Amazon ECR speichern, authentifiziert sich Elastic Beanstalk automatisch mit dem Instance-Profil Ihrer Umgebung bei der Amazon ECR-Registry.](concepts-roles-instance.md) Daher müssen Sie Ihren Instances die Erlaubnis erteilen, auf die Bilder in Ihrem Amazon ECR-Repository zuzugreifen. Fügen Sie dazu dem Instance-Profil Ihrer Umgebung Berechtigungen hinzu, indem Sie die von [Amazon EC2 ContainerRegistryReadOnly](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEC2ContainerRegistryReadOnly.html) verwaltete Richtlinie an das Instance-Profil anhängen. Dadurch erhalten Sie schreibgeschützten Zugriff auf alle Amazon ECR-Repositorys in Ihrem Konto. Sie haben auch die Möglichkeit, nur auf ein einzelnes Repository zuzugreifen, indem Sie die folgende Vorlage verwenden, um eine benutzerdefinierte Richtlinie zu erstellen:

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

------

Ersetzen Sie den Amazon-Ressourcennamen (ARN) in der oben genannten Policy durch den ARN Ihres Repository.

Sie müssen die Bildinformationen in Ihrer `Dockerrun.aws.json` Datei angeben. Die Konfiguration ist je nachdem, welche Plattform Sie verwenden, unterschiedlich.

Verwenden Sie für die von [ECS verwaltete Docker-Plattform](create_deploy_docker_v2config.md) den `image` Schlüssel in einem Container-Definitionsobjekt****:

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

Für die [Docker-Plattform](single-container-docker-configuration.md) verweisen Sie auf das Bild per URL. Die URL gehört zur `Image` Definition Ihrer `Dockerrun.aws.json` Datei:

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

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

Konfigurieren Sie Elastic Beanstalk so, dass es sich vor der Bereitstellung bei Ihrem privaten Repository authentifiziert, um den Zugriff auf Ihre Container-Images zu ermöglichen.

Dieser Ansatz verwendet die *Prebuild-Phase* des Elastic Beanstalk Beanstalk-Bereitstellungsprozesses mit zwei Komponenten:
+ [ebextensions zur Definition von Umgebungsvariablen](ebextensions.md), die Repository-Anmeldeinformationen speichern
+ [Plattform-Hook-Skripte](platforms-linux-extend.hooks.md), die **docker login** vor dem Abrufen von Bildern ausgeführt werden

Die Hook-Skripte rufen einen Benutzernamen und ein Passwort aus Umgebungsvariablen ab, die aus einem einzigen AWS Secrets Manager Geheimnis im JSON-Format aufgefüllt werden. Für diese Funktion sind Elastic Beanstalk Docker und von ECS verwaltete Docker-Plattformen erforderlich, die am oder nach dem 13. [Januar](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2026-01-13-al2023.html) 2026 veröffentlicht wurden. [Weitere Informationen finden Sie unter Environment Secrets.](AWSHowTo.secrets.env-vars.md)

**So konfigurieren Sie Elastic Beanstalk für die Authentifizierung bei Ihrem privaten Repository mit AWS Secrets Manager**
**Anmerkung**  
Bevor Sie fortfahren, stellen Sie sicher, dass Sie Ihre Anmeldeinformationen in eingerichtet AWS Secrets Manager und die erforderlichen IAM-Berechtigungen konfiguriert haben. Einzelheiten finden Sie unter [Voraussetzungen für die Konfiguration von Geheimnissen als Umgebungsvariablen](AWSHowTo.secrets.env-vars.md#AWSHowTo.secrets.configure-env-vars.prerequisites). 

1. Erstellen Sie die folgende Verzeichnisstruktur für Ihr Projekt:

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

1. Wird verwendet [AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html), um die Anmeldeinformationen Ihres privaten Repositorys als geheimen JSON-formatierten Schlüssel zu speichern.

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

1. Erstellen Sie die folgende Datei `env.config` und platzieren Sie sie im Verzeichnis `.ebextensions`, wie in der obigen Verzeichnisstruktur gezeigt. Diese Konfiguration verwendet den [aws:elasticbeanstalk:application:environmentsecrets](command-options-general.md#command-options-general-elasticbeanstalk-application-environmentsecrets) Namespace mit [JSON-Schlüsselextraktion](AWSHowTo.secrets.env-vars.md#AWSHowTo.secrets.json), um die Umgebungsvariablen `USER` und `PASSWD` Elastic Beanstalk aus einzelnen Feldern im Secret zu initialisieren.

   ```
   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. Erstellen Sie die folgende `01login.sh` Skriptdatei und platzieren Sie sie an den folgenden Speicherorten (auch in der vorherigen Verzeichnisstruktur dargestellt):
   + `.platform/confighooks/prebuild/01login.sh`
   + `.platform/hooks/prebuild/01login.sh`

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

   Das `01login.sh` Skript verwendet die in **Schritt 3** konfigurierten Umgebungsvariablen und übergibt das Passwort an **docker login** via`stdin`. Weitere Informationen zur Docker-Authentifizierung finden Sie unter [docker login](https://docs.docker.com/engine/reference/commandline/login/) in der Docker-Dokumentation.
**Hinweise**  
Die von ECS verwaltete Docker-Plattform verwendet die native ECS-Syntax für die Referenzierung von Geheimnissen. Weitere Informationen finden Sie unter [Weitergabe von Secrets Manager Manager-Geheimnissen durch Amazon ECS-Umgebungsvariablen](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/secrets-envvar-secrets-manager.html) im *Amazon Elastic Container Service Developer Guide*.
Weitere Informationen zu Plattform-Hooks finden Sie unter [Plattform-Hooks](platforms-linux-extend.hooks.md) Extending *Elastic Beanstalk Linux platforms*.

Sobald die Authentifizierung konfiguriert ist, kann Elastic Beanstalk Images aus Ihrem privaten Repository abrufen und bereitstellen.

## Verwenden der Datei `Dockerrun.aws.json`
<a name="docker-configuration.remote-repo.dockerrun-aws"></a>

In diesem Abschnitt wird eine andere Methode für die Authentifizierung von Elastic Beanstalk bei einem privaten Repository beschrieben. Dabei wird eine Authentifizierungsdatei mit dem Docker-Befehl erstellt und in einen Amazon S3-Bucket hochgeladen. In der Datei `Dockerrun.aws.json` müssen auch die Bucket-Informationen eingeschlossen werden.

**So generieren Sie eine Authentifizierungsdatei und stellen sie in Elastic Beanstalk bereit**

1. Erstellen Sie eine Authentifizierungsdatei mit dem **docker login**-Befehl. Für Repositorys auf Docker Hub führen Sie au **docker login**:

   ```
   $ docker login
   ```

   Für andere Registrys fügen Sie die URL des Registry-Servers ein:

   ```
   $ docker login registry-server-url
   ```
**Anmerkung**  
Wenn Ihre Elastic Beanstalk-Umgebung die Amazon Linux AMI-Docker-Plattformversion verwendet (vor Amazon Linux 2), lesen Sie die entsprechenden Informationen unter [Docker-Konfiguration auf Amazon Linux AMI (Vorgängerversion von Amazon Linux 2)](create_deploy_docker.container.console.md#docker-alami).

   Weitere Informationen zur Authentifizierungsdatei finden Sie unter [ Store images on Docker Hub ](https://docs.docker.com/docker-hub/repos/) und [ docker login ](https://docs.docker.com/engine/reference/commandline/login/) auf der Docker-Website.

1. Laden Sie eine Kopie der Authentifizierungsdatei mit dem Namen `.dockercfg` in einen sicheren Amazon S3-Bucket hoch.
   + Der Amazon S3 S3-Bucket muss in derselben AWS-Region Umgebung gehostet werden, in der er verwendet wird. Elastic Beanstalk kann keine Dateien von einem Amazon S3-Bucket herunterladen, der in anderen Regionen gehostet wird.
   + Erteilen Sie Berechtigungen für den Vorgang `s3:GetObject` für die IAM-Rolle im Instance-Profil. Weitere Informationen finden Sie unter [Elastic Beanstalk Instance-Profile verwalten](iam-instanceprofile.md).

1. Schließen Sie die Amazon S3-Bucket-Informationen in den `Authentication`-Parameter der Datei `Dockerrun.aws.json` ein.

   Das folgende Beispiel zeigt die Verwendung einer Authentifizierungsdatei mit dem Namen `mydockercfg` in einem Bucket namens `amzn-s3-demo-bucket`, um ein privates Image in einem Drittanbieter-Registry zu verwenden. Die richtige Versionsnummer für `AWSEBDockerrunVersion` finden Sie in der Anmerkung, die dem Beispiel folgt.

   ```
   {
     "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"
   }
   ```
**`Dockerrun.aws.json`-Versionen**  
 Der `AWSEBDockerrunVersion`-Parameter gibt die Version der `Dockerrun.aws.json`-Datei an.  
Der Docker AL2 und die AL2023 Plattformen verwenden die folgenden Versionen der Datei.  
`Dockerrun.aws.json v3`— Umgebungen, die Docker Compose verwenden.
`Dockerrun.aws.json v1`— Umgebungen, die Docker Compose nicht verwenden.
*ECS, das auf Amazon Linux 2 ausgeführt* wird, und *ECS, das auf läuft*, AL2023 verwendet die `Dockerrun.aws.json v2` Datei. Die ausgemusterte Plattform *ECS-The Multicontainer Docker Amazon Linux AMI (AL1)* verwendete ebenfalls dieselbe Version.

Wenn sich Elastic Beanstalk bei der Onlineregistrierung authentifizieren kann, die als Host für das private Repository fungiert, können Ihre Images bereitgestellt und abgerufen werden.

## Verwenden von Bildern aus Amazon ECR Public
<a name="docker-images-ecr-public"></a>

Amazon ECR Public ist eine öffentliche Container-Registry, die Docker-Images hostet. Öffentliche Amazon ECR Repositorys sind zwar öffentlich zugänglich, aber die Authentifizierung bietet höhere Ratenlimits und eine höhere Zuverlässigkeit für Ihre Bereitstellungen.

**Anmerkung**  
Die öffentliche Amazon ECR-Authentifizierung wird in den Regionen (`cn-*`) und AWS GovCloud Regionen (`us-gov-*`) China nicht unterstützt. In diesen Regionen verwendet Elastic Beanstalk nicht authentifizierte Pulls.

Um die öffentliche Amazon ECR-Authentifizierung zu aktivieren, fügen Sie dem [Instance-Profil](concepts-roles-instance.md) Ihrer Umgebung die folgenden Berechtigungen hinzu. Weitere Informationen zur Amazon ECR Public Authentication finden Sie unter [Registry authentication in Amazon ECR public](https://docs.aws.amazon.com/AmazonECR/latest/public/public-registries.html) im *Amazon Elastic Container Registry Public User Guide*:

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

****  

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

------

Sobald diese Berechtigungen mit Ihrem Instance-Profil verknüpft sind, authentifiziert sich Elastic Beanstalk automatisch bei den öffentlichen Registern von Amazon ECR. Sie können Amazon ECR Public Images im `public.ecr.aws/registry-alias/repository-name:tag` Standardformat in Ihrer `Dockerrun.aws.json` Datei oder Dockerfile referenzieren.