翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
GitHub Actions を使用した Elastic Beanstalk へのデプロイ
GitHub Actions
ワークフローの例: Beanstalk Standard 環境
次のワークフロー例では、mainブランチにプッシュするたびにアプリケーションを Beanstalk Standard 環境にデプロイします。リポジトリの に .yml ファイルを作成します.github/workflows/。アクションは、環境が存在しない場合、環境を作成します。この場合、 solution-stack-name (または platform-arn) はプラットフォームを選択し、 で説明されているインスタンスプロファイルとサービスロールを指定option-settingsする必要がありますElastic Beanstalk サービスロール、インスタンスプロファイル、ユーザーポリシー。環境がすでに存在する場合、これらの入力はオプションです。
例 Beanstalk Standard 環境の GitHub Actions ワークフロー
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-roleaws-region:us-east-1- name: Deploy to Elastic Beanstalk uses: aws-actions/aws-elasticbeanstalk-deploy@v1 with: aws-region:us-east-1application-name:my-applicationenvironment-name:my-application-envsolution-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" } ]
このワークフローでは、リポジトリをチェックアウトし、OpenID Connect (OIDC)
ワークフローの例: Beanstalk クラスター環境
Beanstalk クラスター環境はコンテナイメージを実行するため、ソースバンドル自体をデプロイすることはできません。Beanstalk クラスター環境にデプロイするには、ソリューションスタックまたはプラットフォーム ARN の代わりに、次のいずれかの入力を設定します。
-
image-uri– ワークフローが構築し、Amazon Elastic Container Registry (Amazon ECR) などのレジストリにプッシュしたコンテナイメージの URI。アクションは、イメージから直接アプリケーションバージョンを作成し、ソースバンドルを Amazon S3 にアップロードしません。 -
build-configuration– AWS CodeBuild が引き受けCodeBuildServiceRoleる やビルドタイプなど、ソースからイメージを構築する方法を Elastic Beanstalk に指示する JSON オブジェクト。アクションは、ソースバンドルを Amazon S3 にアップロードし、ビルド設定でアプリケーションバージョンを作成し、ビルドが完了するのを待ってからデプロイします。ビルド設定については、「」を参照してくださいBeanstalk クラスター環境のコンテナイメージの構築。
次のワークフロー例では、イメージを構築し、Amazon ECR にプッシュして、Beanstalk クラスター環境にデプロイします。アクションは、環境が存在しない場合、環境を作成します。この場合、 option-settingsは、「」で説明されているクラスター、ノード、およびオブザーバビリティロールを提供する必要がありBeanstalk クラスターのアクセス許可、GitHub Actions が引き受けるロールがそれらを渡すことを許可する必要があります。
例 Beanstalk クラスター環境の GitHub Actions ワークフロー
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-roleaws-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-1application-name:my-cluster-appenvironment-name:my-cluster-envimage-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 }}" } ]
image-uri または が設定されている場合、deployment-timeout入力のデフォルトbuild-configurationは 900 秒ではなく 2400 秒です。一連のサブネット上の最初の Beanstalk クラスター環境は Amazon EKS クラスターをプロビジョニングします。これには 15~20 分かかります。同じサブネット上のそれ以降の環境はクラスターを再利用し、数分でデプロイします。
必要なアクセス許可、build-configuration例、入力の完全なリスト、および両方の環境タイプに関するその他の設定オプションについては、GitHub の「Elastic Beanstalk Deploy action README
その他のリソース
-
GitHub での Elastic Beanstalk デプロイアクション
-
GitHub で AWS 認証情報アクションを設定する
-
Configuring OpenID Connect in Amazon Web Services
(GitHub ドキュメント)