View a markdown version of this page

Verwenden von Aktionen zur Bereitstellung auf Elastic Beanstalk GitHub - AWS Elastic Beanstalk

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.

Verwenden von Aktionen zur Bereitstellung auf Elastic Beanstalk GitHub

GitHub Aktionen können Ihre Anwendung automatisch auf Elastic Beanstalk bereitstellen, wenn Sie Codeänderungen an Ihr Repository übertragen. Die Elastic Beanstalk Deploy-Aktion bietet eine einfache YAML-Oberfläche, über die Anwendungsversionen erstellt und in Ihrer Elastic Beanstalk-Umgebung bereitgestellt werden. Sie können die Aktion mit beiden Elastic Beanstalk-Umgebungstypen verwenden. Bei einer Beanstalk Standard-Umgebung verpackt die Aktion Ihr Repository in ein Quellpaket und lädt es auf Amazon S3 hoch. Bei einer Beanstalk Cluster-Umgebung erstellt die Aktion die Anwendungsversion stattdessen aus einem Container-Image, entweder einem Image, das Ihr Workflow bereits erstellt hat, oder einem Image, das Elastic Beanstalk aus Ihrer Quelle erstellt. Die Eingaben, die Sie festlegen, wählen den Umgebungstyp aus.

Beispiel für einen Arbeitsablauf: Beanstalk Standard-Umgebung

Im folgenden Beispielworkflow wird jedes Mal, wenn Sie zum Branch wechseln, eine Anwendung in einer Beanstalk Standard-Umgebung bereitgestellt. main Erstellen Sie eine .yml Datei in Ihrem Repository unter. .github/workflows/ Die Aktion erstellt die Umgebung, falls sie nicht existiert. In diesem Fall wählt solution-stack-name (oderplatform-arn) die Plattform aus und option-settings muss das Instanzprofil und die Servicerolle bereitstellen, wie unter beschriebenRollen, Instanzprofile und Benutzerrichtlinien von Elastic Beanstalk Service. Wenn die Umgebung bereits vorhanden ist, sind diese Eingaben optional.

Beispiel GitHub Aktionsablauf für eine Beanstalk Standard-Umgebung
name: Deploy to Elastic Beanstalk on: push: branches: - main permissions: id-token: write contents: read jobs: deploy: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Configure AWS credentials uses: aws-actions/configure-aws-credentials@v4 with: role-to-assume: arn:aws:iam::123456789012:role/my-github-actions-role aws-region: us-east-1 - name: Deploy to Elastic Beanstalk uses: aws-actions/aws-elasticbeanstalk-deploy@v1 with: aws-region: us-east-1 application-name: my-application environment-name: my-application-env solution-stack-name: '64bit Amazon Linux 2023 v4.10.0 running Go 1' option-settings: | [ { "Namespace": "aws:autoscaling:launchconfiguration", "OptionName": "IamInstanceProfile", "Value": "aws-elasticbeanstalk-ec2-role" }, { "Namespace": "aws:elasticbeanstalk:environment", "OptionName": "ServiceRole", "Value": "aws-elasticbeanstalk-service-role" } ]

Dieser Workflow checkt Ihr Repository aus, verwendet OpenID Connect (OIDC) zur Authentifizierung AWS über die Aktion „ AWS Anmeldeinformationen konfigurieren“ und stellt dann Ihre Anwendung in Elastic Beanstalk bereit. Die Aktion „Bereitstellen“ packt Ihre Repository-Inhalte, lädt das Quellpaket auf Amazon S3 hoch, erstellt eine neue Anwendungsversion und erstellt oder aktualisiert Ihre Umgebung. Standardmäßig wartet es, bis die Bereitstellung abgeschlossen ist und die Umgebung wieder in einen fehlerfreien Zustand zurückkehrt.

Beispiel für einen Arbeitsablauf: Beanstalk Cluster-Umgebung

In einer Beanstalk Cluster-Umgebung wird ein Container-Image ausgeführt, sodass kein eigenständiges Quellpaket darauf bereitgestellt werden kann. Für die Bereitstellung in einer Beanstalk-Cluster-Umgebung müssen Sie anstelle eines Lösungsstapels oder Plattform-ARN eine der folgenden Eingaben angeben:

  • image-uri— Die URI eines Container-Images, das Ihr Workflow bereits erstellt und an eine Registrierung wie Amazon Elastic Container Registry (Amazon ECR) übertragen hat. Die Aktion erstellt die Anwendungsversion direkt aus dem Image und lädt kein Quellpaket auf Amazon S3 hoch.

  • build-configuration— Ein JSON-Objekt, das Elastic Beanstalk mitteilt, wie das Image aus Ihrer Quelle erstellt werden soll, einschließlich der CodeBuildServiceRole AWS CodeBuild davon ausgehenden Daten und des Build-Typs. Die Aktion lädt Ihr Quellpaket auf Amazon S3 hoch, erstellt die Anwendungsversion mit der Build-Konfiguration und wartet vor der Bereitstellung, bis der Build abgeschlossen ist. Die Build-Einstellungen finden Sie unter. Erstellen von Container-Images für Beanstalk Cluster-Umgebungen

Der folgende Beispiel-Workflow erstellt ein Image, überträgt es an Amazon ECR und stellt es in einer Beanstalk Cluster-Umgebung bereit. Die Aktion erstellt die Umgebung, falls sie nicht existiert. In diesem Fall option-settings muss die unter beschriebenen Cluster-, Knoten- und Observability-Rollen bereitgestellt werdenBerechtigungen für Beanstalk Cluster, und die Rolle, die GitHub Actions annimmt, muss diese übernehmen dürfen.

Beispiel GitHub Aktionsablauf für eine Beanstalk-Cluster-Umgebung
name: Deploy to Elastic Beanstalk on: push: branches: - main permissions: id-token: write contents: read jobs: deploy: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Configure AWS credentials uses: aws-actions/configure-aws-credentials@v4 with: role-to-assume: arn:aws:iam::123456789012:role/my-github-actions-role aws-region: us-east-1 - name: Login to Amazon ECR id: ecr uses: aws-actions/amazon-ecr-login@v2 - name: Build and push container image run: | docker build --platform linux/amd64 -t ${{ steps.ecr.outputs.registry }}/my-app:${{ github.sha }} . docker push ${{ steps.ecr.outputs.registry }}/my-app:${{ github.sha }} - name: Deploy to Elastic Beanstalk uses: aws-actions/aws-elasticbeanstalk-deploy@v1 with: aws-region: us-east-1 application-name: my-cluster-app environment-name: my-cluster-env image-uri: ${{ steps.ecr.outputs.registry }}/my-app:${{ github.sha }} option-settings: | [ { "Namespace": "aws:elasticbeanstalk:eks", "OptionName": "cluster-role", "Value": "${{ secrets.CLUSTER_ROLE_ARN }}" }, { "Namespace": "aws:elasticbeanstalk:eks", "OptionName": "node-role", "Value": "${{ secrets.NODE_ROLE_ARN }}" }, { "Namespace": "aws:elasticbeanstalk:eks:environment", "OptionName": "observability-role", "Value": "${{ secrets.OBSERVABILITY_ROLE_ARN }}" } ]

Wenn image-uri oder gesetzt build-configuration ist, beträgt die deployment-timeout Eingabe standardmäßig 2400 Sekunden statt 900. Die erste Beanstalk-Cluster-Umgebung auf einer Reihe von Subnetzen stellt einen Amazon EKS-Cluster bereit, was 15 bis 20 Minuten dauert. Spätere Umgebungen in denselben Subnetzen verwenden den Cluster wieder und können in wenigen Minuten bereitgestellt werden.

Die erforderlichen Berechtigungen, das build-configuration Beispiel, die vollständige Liste der Eingaben und weitere Konfigurationsoptionen für beide Umgebungstypen finden Sie in der README-Datei zur Elastic Beanstalk Deploy-Aktion unter. GitHub

Weitere Ressourcen