{"meta":{"title":"Bereitstellen in Amazon Elastic Container Service","intro":"Hier erfährst du, wie du im Rahmen eines CD-Workflows (Continuous Deployment) ein Projekt in Amazon Elastic Container Service (ECS) bereitstellst.","product":"GitHub Actions","breadcrumbs":[{"href":"/de/actions","title":"GitHub Actions"},{"href":"/de/actions/how-tos","title":"Anleitungen"},{"href":"/de/actions/how-tos/deploy","title":"Bereitstellen"},{"href":"/de/actions/how-tos/deploy/deploy-to-third-party-platforms","title":"Bereitstellen auf Drittanbieterplattformen"},{"href":"/de/actions/how-tos/deploy/deploy-to-third-party-platforms/amazon-elastic-container-service","title":"Amazon Elastic Container Service"}],"documentType":"article"},"body":"# Bereitstellen in Amazon Elastic Container Service\n\nHier erfährst du, wie du im Rahmen eines CD-Workflows (Continuous Deployment) ein Projekt in Amazon Elastic Container Service (ECS) bereitstellst.\n\n## Voraussetzungen\n\nBevor Sie Ihren GitHub Actions Workflow erstellen, müssen Sie zunächst die folgenden Einrichtungsschritte für Amazon ECR und ECS ausführen:\n\n1. Erstelle ein Amazon ECR-Repository, um deine Bilder zu speichern.\n\n   Verwende z. B. [die AWS CLI](https://aws.amazon.com/cli/):\n\n   ```bash copy\n   aws ecr create-repository \\\n       --repository-name MY_ECR_REPOSITORY \\\n       --region MY_AWS_REGION\n\n   ```\n\n   Stellen Sie sicher, dass Sie den gleichen Amazon ECR-Repositorynamen (hier dargestellt durch `MY_ECR_REPOSITORY`) für die `ECR_REPOSITORY`-Variable im folgenden Workflow verwenden.\n\n   Stellen Sie sicher, dass Sie denselben AWS-Regionswert für die `AWS_REGION`-Variable (hier dargestellt durch `MY_AWS_REGION`) im folgenden Workflow verwenden.\n\n2. Erstellen Sie eine Amazon ECS-Aufgabendefinition, einen Cluster und einen Dienst.\n\n   Ausführliche Informationen finden Sie im [Assistenten für die erste Schritte auf der Amazon ECS-Konsole](https://us-east-2.console.aws.amazon.com/ecs/home?region=us-east-2#/firstRun) oder in der [Anleitung mit ersten Schritten](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/getting-started-fargate.html) in der Amazon ECS-Dokumentation.\n\n   Notieren Sie unbedingt die Namen, die Sie für den Amazon ECS-Dienst und -Cluster festgelegt haben, und verwenden Sie sie für die `ECS_SERVICE`- und `ECS_CLUSTER`-Variablen im folgenden Workflow.\n\n3. Speichern Sie Ihre Amazon ECS-Aufgabendefinition als JSON-Datei in Ihrem GitHub Repository.\n\n   Das Format der Datei sollte mit der Ausgabe übereinstimmen, die generiert wird von:\n\n   ```bash copy\n\n   aws ecs register-task-definition --generate-cli-skeleton\n\n   ```\n\n   Stellen Sie sicher, dass Sie die `ECS_TASK_DEFINITION`-Variable im folgenden Workflow als Pfad zur JSON-Datei festlegen.\n\n   Stellen Sie sicher, dass Sie die `CONTAINER_NAME`-Variable im folgenden Workflow als Containernamen im `containerDefinitions`-Abschnitt der Aufgabendefinition festlegen.\n\n4. Erstellen Sie GitHub Actions Secrets mit den Namen `AWS_ACCESS_KEY_ID` und `AWS_SECRET_ACCESS_KEY`, um die Werte für Ihren Amazon-IAM-Zugriffsschlüssel zu speichern.\n\n   Weitere Informationen zum Erstellen von Secrets für GitHub Actions finden Sie unter [Verwenden von Geheimnissen in GitHub-Aktionen](/de/actions/how-tos/write-workflows/choose-what-workflows-do/use-secrets#creating-secrets-for-a-repository).\n\n   In der Dokumentation finden Sie zu jeder unten verwendeten Aktion die empfohlenen IAM-Richtlinien für den IAM-Benutzer und die Methoden zum Umgang mit den Anmeldeinformationen für den Zugriffsschlüssel.\n\n5. Konfiguriere optional auch eine Bereitstellungsumgebung. Umgebungen werden verwendet, um ein allgemeines Bereitstellungsziel wie `production`, `staging` oder `development` zu beschreiben. Wenn ein GitHub Actions Workflow in einer Umgebung bereitgestellt wird, wird die Umgebung auf der Hauptseite des Repositorys angezeigt. Du kannst Umgebungen verwenden, um für die Fortsetzung von Aufträgen eine Genehmigung zu erzwingen, einzuschränken, welche Branches einen Workflow auslösen können, Bereitstellungen mit benutzerdefinierten Bereitstellungsschutzregeln zu schützen oder den Zugriff auf Geheimnisse zu beschränken. Weitere Informationen zum Erstellen von Umgebungen findest du unter [Verwalten von Umgebungen für die Bereitstellung](/de/actions/how-tos/deploy/configure-and-manage-deployments/manage-environments).\n\n## Erstellen des Workflows\n\nNachdem die Voraussetzungen erfüllt sind, kannst du mit dem Erstellen des Workflows fortfahren.\n\nIm folgenden Beispielworkflow wird gezeigt, wie ein Containerimage erstellt und in Amazon ECR gepusht wird. Anschließend wird die Aufgabendefinition mit der neuen Image-ID aktualisiert und die Aufgabendefinition für Amazon ECS bereitgestellt.\n\nStellen Sie sicher, dass Sie eigene Werte für alle Variablen im `env`-Schlüssel des Workflows angeben.\n\nWenn du eine Bereitstellungsumgebung konfiguriert hast, ändere den Wert `environment` in den Namen deiner Umgebung. Wenn du keine Umgebung konfiguriert hast oder wenn sich dein Workflow in einem privaten Repository befindet und du GitHub Enterprise Cloud nicht verwendest, lösche den `environment`-Schlüssel.\n\n```yaml copy\n# Dieser Workflow verwendet Aktionen, die nicht von GitHub zertifiziert sind.\n# Sie werden von einem Drittanbieter bereitgestellt und unterliegen\n# separaten Nutzungsbedingungen, Datenschutzbestimmungen und Support\n# Onlinedokumentation.\n\n# GitHub empfiehlt, Aktionen an einen Commit-SHA anzuheften.\n# Um eine neuere Version zu erhalten, musst du den SHA aktualisieren.\n# Du kannst auch auf ein Tag oder einen Branch verweisen, aber die Aktion kann sich ohne Vorwarnung ändern.\n\nname: Deploy to Amazon ECS\n\non:\n  push:\n    branches:\n      - main\n\nenv:\n  AWS_REGION: MY_AWS_REGION                   # set this to your preferred AWS region, e.g. us-west-1\n  ECR_REPOSITORY: MY_ECR_REPOSITORY           # set this to your Amazon ECR repository name\n  ECS_SERVICE: MY_ECS_SERVICE                 # set this to your Amazon ECS service name\n  ECS_CLUSTER: MY_ECS_CLUSTER                 # set this to your Amazon ECS cluster name\n  ECS_TASK_DEFINITION: MY_ECS_TASK_DEFINITION # set this to the path to your Amazon ECS task definition\n                                               # file, e.g. .aws/task-definition.json\n  CONTAINER_NAME: MY_CONTAINER_NAME           # set this to the name of the container in the\n                                               # containerDefinitions section of your task definition\n\njobs:\n  deploy:\n    name: Deploy\n    runs-on: ubuntu-latest\n    environment: production\n\n    steps:\n      - name: Checkout\n        uses: actions/checkout@v6\n\n      - name: Configure AWS credentials\n        uses: aws-actions/configure-aws-credentials@0e613a0980cbf65ed5b322eb7a1e075d28913a83\n        with:\n          aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}\n          aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}\n          aws-region: ${{ env.AWS_REGION }}\n\n      - name: Login to Amazon ECR\n        id: login-ecr\n        uses: aws-actions/amazon-ecr-login@62f4f872db3836360b72999f4b87f1ff13310f3a\n\n      - name: Build, tag, and push image to Amazon ECR\n        id: build-image\n        env:\n          ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}\n          IMAGE_TAG: ${{ github.sha }}\n        run: |\n          # Build a docker container and\n          # push it to ECR so that it can\n          # be deployed to ECS.\n          docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG .\n          docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG\n          echo \"image=$ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG\" >> $GITHUB_OUTPUT\n\n      - name: Fill in the new image ID in the Amazon ECS task definition\n        id: task-def\n        uses: aws-actions/amazon-ecs-render-task-definition@c804dfbdd57f713b6c079302a4c01db7017a36fc\n        with:\n          task-definition: ${{ env.ECS_TASK_DEFINITION }}\n          container-name: ${{ env.CONTAINER_NAME }}\n          image: ${{ steps.build-image.outputs.image }}\n\n      - name: Deploy Amazon ECS task definition\n        uses: aws-actions/amazon-ecs-deploy-task-definition@df9643053eda01f169e64a0e60233aacca83799a\n        with:\n          task-definition: ${{ steps.task-def.outputs.task-definition }}\n          service: ${{ env.ECS_SERVICE }}\n          cluster: ${{ env.ECS_CLUSTER }}\n          wait-for-service-stability: true\n```\n\n## Weitere Informationen\n\nDie ursprüngliche Workflowvorlage finden Sie im [`aws.yml`](https://github.com/actions/starter-workflows/blob/main/deployments/aws.yml)GitHub Actions`starter-workflows` Repository.\n\nWeitere Informationen zu den in diesen Beispielen verwendeten Diensten findest du in der folgenden Dokumentation:\n\n* [Security best practices in IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) (Bewährte Sicherheitsmethoden in IAM) in der Amazon AWS-Dokumentation.\n* Offizielle AWS-Aktion [Configure AWS Credentials](https://github.com/aws-actions/configure-aws-credentials) (AWS-Anmeldeinformationen konfigurieren).\n* Offizielle AWS-Funktion [Amazon ECR „Login“](https://github.com/aws-actions/amazon-ecr-login).\n* Offizielle AWS-Aktion: Amazon ECS „Render Task Definition“.\n* Offizielle AWS-Aktion [Amazon ECS „Deploy Task Definition“](https://github.com/aws-actions/amazon-ecs-deploy-task-definition) (Aufgabendefinition bereitstellen)."}