기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
GitHub 작업을 사용하여 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가 수임하는 및 빌드 유형을 포함하여 소스에서 이미지를 빌드하는 방법을 Elastic Beanstalk에 알려주CodeBuildServiceRole는 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 클러스터 환경은 15~20분이 걸리는 Amazon EKS 클러스터를 프로비저닝합니다. 이후 동일한 서브넷의 환경은 클러스터를 재사용하고 몇 분 내에 배포합니다.
필요한 권한, build-configuration 예제, 전체 입력 목록 및 두 환경 유형에 대한 추가 구성 옵션은 GitHub의 Elastic Beanstalk Deploy 작업 README