

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.

# Konfiguration der Datei DockerRun.aws.json v2
<a name="create_deploy_docker_v2config"></a>

`Dockerrun.aws.json v2` ist eine Elastic-Beanstalk-Konfigurationsdatei, die beschreibt, wie eine Reihe von Docker-Containern bereitgestellt wird, die in einem ECS-Cluster in einer Elastic-Beanstalk-Umgebung bereitgestellt wird. Die Elastic Beanstalk-Plattform erstellt eine ECS-*Aufgabendefinition*, die eine ECS*-Container-Definition* beinhaltet. Diese Definitionen werden in der `Dockerrun.aws.json`-Konfigurationsdatei beschrieben.

Die Container-Definition in der `Dockerrun.aws.json`-Datei beschreibt die Container, die auf jeder Amazon-EC2-Instance im ECS-Cluster bereitgestellt werden sollen. In diesem Fall wird eine Amazon-EC2-Instance auch als *Host-Container-Instance* bezeichnet, da sie die Docker-Container hostet. Die Konfigurationsdatei beschreibt auch die Datenvolumen, die auf der Host-Container-Instance erstellt werden müssen, damit die Docker-Container gemountet werden können. Weitere Informationen und ein Diagramm der Komponenten in einer von ECS verwalteten Docker-Umgebung auf Elastic Beanstalk finden Sie unter [Überblick über die von ECS verwaltete Docker-Plattform](create_deploy_docker_ecs.md#create_deploy_docker_ecs_platform) weiter oben in diesem Kapitel.

 Eine `Dockerrun.aws.json`-Datei kann alleine verwendet oder mit einem zusätzlichen Quell-Code in einem einzigen Archiv zu einer ZIP-Datei gepackt werden. Quellcode, der mit einer `Dockerrun.aws.json`-Datei archiviert wird, wird in Amazon EC2-Container-Instances bereitgestellt und ist im `/var/app/current/`-Verzeichnis zugänglich.

**Topics**
+ [`Dockerrun.aws.json` v2](#create_deploy_docker_v2config_dockerrun)
+ [Volume-Format](#create_deploy_docker_v2config_volume_format)
+ [ARN-Format der Ausführungsrolle](#create_deploy_docker_v2config_executionRoleArn_format)
+ [Format der Containerdefinition](#create_deploy_docker_v2config_dockerrun_format)
+ [Authentifizierungsformat – Verwenden von Images aus einem privaten Repository](#docker-multicontainer-dockerrun-privaterepo)
+ [Beispiel Dockerrun.aws.json v2](#create_deploy_docker_v2config_example)

## `Dockerrun.aws.json` v2
<a name="create_deploy_docker_v2config_dockerrun"></a>

Der Abschnitt `Dockerrun.aws.json` enthält die folgenden Bereiche:

**AWSEBDockerrunVersion**  
Gibt die Versionsnummer als Wert `2` für ECS-verwaltete Docker-Umgebungen an.

**executionRoleArn **  
Gibt die IAM-Rollen zur Aufgabenausführung für verschiedene Zwecke und Dienste an, die mit Ihrem Konto verknüpft sind. Damit Ihre Anwendung Elastic Beanstalk [Beanstalk-Umgebungsvariablen verwenden kann, die als Secrets gespeichert](AWSHowTo.secrets.env-vars.md) sind, müssen Sie den ARN einer Aufgabenausführungsrolle angeben, die die erforderlichen Berechtigungen gewährt. In anderen häufigen Anwendungsfällen ist dieser Parameter möglicherweise ebenfalls erforderlich. Weitere Informationen finden Sie unter [ARN-Format der Ausführungsrolle](#create_deploy_docker_v2config_executionRoleArn_format).

**volumes**  
Erstellt Volumes aus Ordnern in der Amazon EC2-Container-Instance oder aus Ihrem Quell-Bundle (bereitgestellt in `/var/app/current`). Mounten Sie diese Volumen auf Pfade innerhalb Ihrer Docker-Container mit `mountPoints` im `containerDefinitions`-Abschnitt.

**containerDefinitions**  
Ein Array von Containerdefinitionen.

**Authentifizierung (optional)**  
Der Speicherort in Amazon S3 für eine `.dockercfg`-Datei, die Authentifizierungsdaten für ein privates Repository enthält.

Die Bereiche für die *Containerdefinition* und *Volumes* von `Dockerrun.aws.json` verwenden die gleiche Formatierung wie die entsprechenden Bereiche einer Amazon-ECS-Aufgabendefinition. Weitere Informationen zum Aufgabendefinitionsformat und eine vollständige Liste der Aufgabendefinitionsparameter finden Sie in den [Amazon-ECS-Aufgabendefinitionen](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_defintions.html) im *Entwicklerhandbuch für Amazon Elastic Container Service*.

## Volume-Format
<a name="create_deploy_docker_v2config_volume_format"></a>

Der *Volume*-Parameter erstellt Volumes aus Ordnern in der Amazon-EC2-Container-Instance oder aus Ihrem Quell-Bündel (bereitgestellt in `/var/app/current`).

 Volumes werden in folgendem Format angegeben: 

```
"volumes": [
    {
      "name": "{{volumename}}",
      "host": {
        "sourcePath": "{{/path/on/host/instance}}"
      }
    }
  ],
```

Mounten Sie diese Volumes auf Pfade innerhalb Ihrer Docker-Container mit `mountPoints` in der Containerdefinition.

Elastic Beanstalk konfiguriert zusätzliche Volumes für Protokolle, eines für jeden Container. Diese sollten von Ihren Docker-Containern bereitgestellt werden, um Protokolle an die Host-Instance zu schreiben. 

Weitere Informationen finden Sie in dem `mountPoints`-Feld im folgenden Abschnitt *Container-Definitionsformat*.

## ARN-Format der Ausführungsrolle
<a name="create_deploy_docker_v2config_executionRoleArn_format"></a>

Damit Ihre Anwendung Elastic Beanstalk [Beanstalk-Umgebungsvariablen verwenden kann, die als Secrets gespeichert sind](AWSHowTo.secrets.env-vars.md), müssen Sie eine IAM-Rolle für die Aufgabenausführung angeben. Die Rolle muss dem Amazon ECS-Container die Erlaubnis erteilen, AWS API-Aufrufe in Ihrem Namen durchzuführen, wobei AWS Secrets Manager Secrets oder AWS Systems Manager Parameter Store-Parameter verwendet werden, um sensible Daten zu referenzieren. Anweisungen zum Erstellen einer IAM-Rolle für die Aufgabenausführung mit den erforderlichen Berechtigungen für Ihr Konto finden Sie unter [Amazon ECS-IAM-Rolle zur Aufgabenausführung](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_execution_IAM_role.html) im Amazon Elastic Container Service Developer Guide.

```
{
"AWSEBDockerrunVersion": 2,
  "executionRoleArn": "arn:aws:iam::{{111122223333}}:role/ecsTaskExecutionRole",
```

### Zusätzliche Berechtigungen sind für die von Amazon ECS verwaltete Docker-Plattform erforderlich
<a name="create_deploy_docker_v2config_executionRoleArn_format_passRole"></a>

**ECS-Zuschüsse `iam:PassRole` für das EC2-Instanzprofil**  
Damit Ihr EC2-Instance-Profil dem ECS-Container diese Rolle zuweisen kann, müssen Sie die im folgenden Beispiel demonstrierte `iam:PassRole` Berechtigung angeben. Das `iam:PassRole` ermöglicht den EC2-Instances die Erlaubnis*, die Aufgabenausführungsrolle an den ECS-Container zu übergeben*.

In diesem Beispiel beschränken wir die EC2-Instance darauf, die Rolle nur an den ECS-Service zu übergeben. Diese Bedingung ist zwar nicht erforderlich, wir fügen sie jedoch hinzu, um den Umfang der geteilten Berechtigungen gemäß den bewährten Methoden zu reduzieren. Das erreichen wir mit dem `Condition` Element.

**Anmerkung**  
Für jede Verwendung der ECS IAM-Aufgabenausführungsrolle ist die `iam:PassRole` entsprechende Genehmigung erforderlich. Es gibt andere häufige Anwendungsfälle, für die die ECS-Rolle „Managed Service“ für die Ausführung von Aufgaben erforderlich ist. Weitere Informationen finden Sie unter [IAM-Rolle für die Ausführung von Amazon ECS-Aufgaben](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_execution_IAM_role.html) im Amazon Elastic Container Service Developer Guide.



**Example Richtlinie mit Genehmigung `iam:PassRole`**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "{{iam:PassRole}}",
            "Resource": [
                "{{arn:aws:iam::123456789012:role/ecs-task-execution-role}}"
            ],
            "Condition": {
                "StringLike": {
                    "{{iam:PassedToService}}": "{{ecs-tasks.amazonaws.com}}"
                }
            }
        }
    ]
}
```





**Zugriff auf Geheimnisse und Parameter für den Amazon ECS-Container-Agenten gewähren**  
Die IAM-Rolle für die Amazon ECS-Aufgabenausführung benötigt außerdem Berechtigungen für den Zugriff auf die Secrets und Parameterspeicher. Ähnlich wie bei den Anforderungen der EC2-Instance-Profilrolle benötigt der ECS-Container-Agent die Erlaubnis, die erforderlichen Secrets Manager- oder Systems Manager Manager-Ressourcen abzurufen. Weitere Informationen finden Sie unter [Secrets Manager- oder Systems Manager Manager-Berechtigungen](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_execution_IAM_role.html#task-execution-secrets) im *Amazon Elastic Container Service Developer Guide*

**Zugriff auf Geheimnisse und Parameter auf die Elastic Beanstalk EC2-Instances gewähren**  
Um als Umgebungsvariablen konfigurierte Geheimnisse zu unterstützen, müssen Sie Ihrem EC2-Instance-Profil auch Berechtigungen hinzufügen. Weitere Informationen erhalten Sie unter [Abrufen von Geheimnissen und Parametern für Elastic Beanstalk Beanstalk-Umgebungsvariablen](AWSHowTo.secrets.env-vars.md) und [Erforderliche IAM-Berechtigungen für Secrets Manager](AWSHowTo.secrets.IAM-permissions.md#AWSHowTo.secrets.IAM-permissions.secrets-manager).

Die folgenden Beispiele kombinieren das vorherige `iam:PassRole` Beispiel mit den Beispielen, auf die verwiesen [Erforderliche IAM-Berechtigungen für Secrets Manager](AWSHowTo.secrets.IAM-permissions.md#AWSHowTo.secrets.IAM-permissions.secrets-manager) wird. Sie fügen die Berechtigungen hinzu, die die EC2-Instances für den Zugriff auf die AWS Secrets Manager und die AWS Systems Manager Speicher zum Abrufen der Secrets und Parameterdaten benötigen, um die Elastic Beanstalk Beanstalk-Umgebungsvariablen zu initialisieren, die für Secrets konfiguriert wurden.

**Example Secrets Manager Manager-Richtlinie kombiniert mit `iam:PassRole` Berechtigungen**    
****  

```
{
    "Version": "{{2012-10-17}}",
    "Statement": [
       {
            "Effect": "Allow",
            "Action": "{{iam:PassRole}}",
            "Resource": [
                "{{arn:aws:iam::123456789012:role/ecs-task-execution-role}}"
            ],
            "Condition": {
                "StringLike": {
                    "{{iam:PassedToService}}": "{{ecs-tasks.amazonaws.com}}"
               }
            } 
        },
        {
            "Effect": "{{Allow}}",
            "Action": [
                "{{secretsmanager:GetSecretValue}}",
                "{{kms:Decrypt}}"          
            ],
            "Resource": [
                "{{arn:aws:secretsmanager:us-east-1:{{111122223333}}:secret:my-secret}}",
                "{{arn:aws:kms:us-east-1:{{111122223333}}:key/my-key}}"
            ]
        }
    ]
}
```

**Example Systems Manager Manager-Richtlinie kombiniert mit `iam:PassRole` Berechtigungen**    
****  

```
{
    "Version": "{{2012-10-17}}",
    "Statement": [
       {
            "Effect": "Allow",
            "Action": "{{iam:PassRole}}",
            "Resource": [
                "{{arn:aws:iam::123456789012:role/ecs-task-execution-role}}"
            ],
            "Condition": {
                "StringLike": {
                    "{{iam:PassedToService}}": "{{ecs-tasks.amazonaws.com}}"
               }
            } 
        },
        {
            "Effect": "{{Allow}}",
            "Action": [
                "{{ssm:GetParameter}}",
                "{{kms:Decrypt}}"
            ],
            "Resource": [
                "{{arn:aws:ssm:us-east-1:{{111122223333}}:parameter/my-parameter}}",
                "{{arn:aws:kms:us-east-1:{{111122223333}}:key/my-key}}"
            ]
        }
    ]
}
```

## Format der Containerdefinition
<a name="create_deploy_docker_v2config_dockerrun_format"></a>

Die folgenden Beispiele zeigen eine Teilmenge von Parametern, die allgemein im Abschnitt *containerDefinitions* verwendet werden. Weitere optionale Parameter sind verfügbar.

Die Elastic-Beanstalk-Plattform erstellt eine ECS-*Aufgabendefinition*, die eine ECS-*Container-Definition* beinhaltet. Beanstalk unterstützt eine Teilmenge von Parametern für die ECS-Container-Definition. Weitere Informationen finden Sie unter [Container-Definitionen](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html#container_definitions) im *Entwicklerhandbuch für Amazon Elastic Container Service*.

Eine `Dockerrun.aws.json`-Datei enthält ein Array aus einem oder mehreren Containerdefinitionsobjekten mit den folgenden Feldern:

**Name**  
Name des Containers. Weitere Informationen über die maximale Länge und die zulässigen Zeichen finden Sie unter [Standardparameter für Containerdefinition](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html#standard_container_definition_params).

**Abbild**  
Der Name eines Docker-Image in einem Online-Docker-Repository, aus dem Sie einen Docker-Container erstellt haben. Beachten Sie diese Konventionen:   
+  Abbilder in offiziellen Repositorys in Docker Hub verwenden einen einzelnen Namen (z. B. `ubuntu` oder `mongo`).
+ Images in anderen Repositorys in Docker Hub sind mit einem Organisationsnamen qualifiziert (z. B, `amazon/amazon-ecs-agent`.
+ Abbilder in anderen Online-Repositorys sind durch einen Domänennamen zusätzlich qualifiziert (z. B, `quay.io/assemblyline/ubuntu`).

**Umgebung**  
Ein Array an Umgebungsvariablen, die an den Container übergeben werden.  
Der folgende Eintrag definiert beispielsweise eine Umgebungsvariable mit dem Namen **Container** und dem Wert **PHP**:  

```
"environment": [
  {
    "name": "Container",
    "value": "PHP"
  }
],
```

**essential**  
„true“, wenn die Aufgabe stoppen soll, wenn der Container fehlschlägt. Unwesentliche Container können abschließen oder abstürzen, ohne dass dies Auswirkungen auf die restlichen Container in der Instance hat. 

**memory**  
Größe des Speichers auf der Container-Instance, die für den Container reserviert werden soll. Geben Sie eine Ganzzahl ungleich null für einen oder beide der Parameter `memory` oder `memoryReservation` in Containerdefinitionen an.

**memoryReservation**  
Die weiche Arbeitsspeichergrenze (in MiB) für die Reservierung für den Container. Geben Sie eine Ganzzahl ungleich null für einen oder beide der Parameter `memory` oder `memoryReservation` in Containerdefinitionen an.

**mountPoints**  
Volumes aus der Amazon EC2-Container-Instance, die gemountet werden soll und der Speicherort im Docker-Container-Dateisystem, an dem sie gemountet werden sollen. Wenn Sie Volumes mounten, die mit Anwendungs-Inhalte enthalten, kann Ihr Container die Daten lesen, die Sie in Ihrem Quell-Bundle hochladen. Wenn Sie Protokoll-Volumes für das Schreiben von Protokolldaten mounten, kann Elastic Beanstalk Protokolldaten von diese Volumes erfassen.   
 Elastic Beanstalk erstellt Protokoll-Volumes auf der Container-Instance, eines für jeden Docker-Container, unter `/var/log/containers/{{containername}}`. Diese Volumes haben die Bezeichnung `awseb-logs-{{containername}}` und sollten in das Verzeichnis innerhalb der Container-Dateistruktur bereitgestellt werden, in dem Protokolle geschrieben werden.   
Beispiel: Der folgende Mounting-Punkt weist den nginx-Protokoll-Standort im Container dem von Elastic Beanstalk generierten Volume für den `nginx-proxy`-Container zu.   

```
{
  "sourceVolume": "awseb-logs-nginx-proxy",
  "containerPath": "/var/log/nginx"
}
```

**portMappings**  
Ordnet Netzwerk-Ports auf dem Container Ports auf dem Host zu.

**links**  
Liste der Container, zu denen Link erstellt werden soll. Verknüpfte Container können sich gegenseitig erkennen und sicher kommunizieren. 

**volumesFrom**  
Mounten aller Volumes aus einem anderen Container. Zum Beispiel zum Mounten von Volumes aus einem Container mit dem Namen `web`:  

```
"volumesFrom": [
  {
    "sourceContainer": "web"
  }
],
```

## Authentifizierungsformat – Verwenden von Images aus einem privaten Repository
<a name="docker-multicontainer-dockerrun-privaterepo"></a>

Der `authentication`-Abschnitt enthält Authentifizierungsdaten für ein privates Repository. Dieser Eintrag ist optional.

Fügen Sie die Informationen über den Amazon S3-Bucket hinzu, der die Authentifizierungsdatei im `authentication`-Parameter der `Dockerrun.aws.json`-Datei enthält. Stellen Sie sicher, dass der `authentication`-Parameter einen gültigen Amazon S3-Bucket und -Schlüssel enthält. Der Amazon S3-Bucket muss in derselben Region gehostet sein wie die Umgebung, die ihn verwendet. Elastic Beanstalk lädt keine Dateien von Amazon S3-Buckets herunter, die in anderen Regionen gehostet werden.

Verwendet das folgende Format:

```
"authentication": {
    "bucket": "{{amzn-s3-demo-bucket}}",
    "key": "{{mydockercfg}}"
  },
```

Weitere Informationen zum Generieren und Hochladen der Authentifizierungsdatei finden Sie unter [Authentifizierung mit Image-RepositorysBenutzen AWS Secrets Manager](docker-configuration.remote-repo.md).

## Beispiel Dockerrun.aws.json v2
<a name="create_deploy_docker_v2config_example"></a>

Der folgende Codeausschnitt ist ein Beispiel, das die Syntax der `Dockerrun.aws.json`-Datei für eine Instance mit zwei Containern zeigt.

```
{
  "AWSEBDockerrunVersion": 2,
  "volumes": [
    {
      "name": "php-app",
      "host": {
        "sourcePath": "/var/app/current/php-app"
      }
    },
    {
      "name": "nginx-proxy-conf",
      "host": {
        "sourcePath": "/var/app/current/proxy/conf.d"
      }
    }
  ],
  "containerDefinitions": [
    {
      "name": "php-app",
      "image": "php:fpm",
      "environment": [
        {
          "name": "Container",
          "value": "PHP"
        }
      ],
      "essential": true,
      "memory": 128,
      "mountPoints": [
        {
          "sourceVolume": "php-app",
          "containerPath": "/var/www/html",
          "readOnly": true
        }
      ]
    },
    {
      "name": "nginx-proxy",
      "image": "nginx",
      "essential": true,
      "memory": 128,
      "portMappings": [
        {
          "hostPort": 80,
          "containerPort": 80
        }
      ],
      "links": [
        "php-app"
      ],
      "mountPoints": [
        {
          "sourceVolume": "php-app",
          "containerPath": "/var/www/html",
          "readOnly": true
        },
        {
          "sourceVolume": "nginx-proxy-conf",
          "containerPath": "/etc/nginx/conf.d",
          "readOnly": true
        },
        {
          "sourceVolume": "awseb-logs-nginx-proxy",
          "containerPath": "/var/log/nginx"
        }
      ]
    }
  ]
}
```