Fix S3 bucket naming - use different buckets for dev and prod environ… #39
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Deploy to AWS CloudFormation | |
| on: | |
| push: | |
| branches: | |
| - main | |
| - deploy | |
| env: | |
| AWS_REGION: ap-northeast-1 | |
| PROJECT_NAME: LambdaFramework | |
| permissions: | |
| id-token: write | |
| contents: read | |
| jobs: | |
| deploy: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Set up Python | |
| uses: actions/setup-python@v4 | |
| with: | |
| python-version: '3.10' | |
| - name: Build Amazon Linux 2 compatible package | |
| run: | | |
| # パッケージディレクトリを作成 | |
| mkdir -p package | |
| # manylinux2014_x86_64プラットフォームでバイナリをダウンロード | |
| python -m pip install --upgrade pip | |
| python -m pip install --platform manylinux2014_x86_64 --only-binary=:all: --no-deps --target ./package -r requirements.txt | |
| echo "Dependencies installed for Amazon Linux 2 compatibility" | |
| echo "Package directory contents:" | |
| ls -la package/ | |
| du -sh package/ | |
| - name: Create deployment package | |
| run: | | |
| # パッケージディレクトリを作成 | |
| mkdir -p deployment-package | |
| # Lambda関数のコードをコピー | |
| cp -r LambdaFramework/* deployment-package/ | |
| # 依存関係をコピー | |
| cp -r package/* deployment-package/ | |
| # パッケージを圧縮 | |
| cd deployment-package | |
| zip -r ../lambda-deployment-package.zip . | |
| cd .. | |
| echo "Deployment package created: lambda-deployment-package.zip" | |
| ls -la lambda-deployment-package.zip | |
| - name: Configure AWS credentials | |
| uses: aws-actions/configure-aws-credentials@v4 | |
| with: | |
| role-to-assume: ${{ github.ref == 'refs/heads/main' && secrets.AWS_ROLE_ARN_PROD || secrets.AWS_ROLE_ARN_DEV }} | |
| aws-region: ${{ env.AWS_REGION }} | |
| - name: Validate SAM template | |
| run: | | |
| # AWS認証情報の確認 | |
| aws sts get-caller-identity | |
| echo "AWS Region: $AWS_REGION" | |
| sam validate | |
| env: | |
| AWS_REGION: ${{ env.AWS_REGION }} | |
| - name: Deploy with SAM | |
| run: | | |
| STACK_NAME="LambdaFramework" | |
| # ブランチに基づいて環境設定を決定 | |
| if [ "${{ github.ref }}" = "refs/heads/main" ]; then | |
| ENVIRONMENT="production" | |
| S3_BUCKET="${{ vars.S3_BUCKET_PROD }}" | |
| else | |
| ENVIRONMENT="development" | |
| S3_BUCKET="${{ vars.S3_BUCKET_DEV }}" | |
| fi | |
| echo "Deploying to environment: $ENVIRONMENT" | |
| echo "Stack name: $STACK_NAME" | |
| echo "AWS Region: $AWS_REGION" | |
| echo "S3 Bucket: $S3_BUCKET" | |
| # カスタムパッケージを使用してビルド | |
| sam build --use-container | |
| sam deploy --no-confirm-changeset --no-fail-on-empty-changeset \ | |
| --stack-name $STACK_NAME \ | |
| --s3-bucket $S3_BUCKET \ | |
| --parameter-overrides ProjectName=${{ env.PROJECT_NAME }} Environment=$ENVIRONMENT | |
| env: | |
| AWS_REGION: ${{ env.AWS_REGION }} | |
| SAM_CLI_TELEMETRY: 0 | |
| - name: Deploy status | |
| if: always() | |
| run: | | |
| # ブランチに基づいて環境設定を決定 | |
| if [ "${{ github.ref }}" = "refs/heads/main" ]; then | |
| STACK_NAME="lambda-framework-prod" | |
| ENVIRONMENT="production" | |
| else | |
| STACK_NAME="lambda-framework-dev" | |
| ENVIRONMENT="development" | |
| fi | |
| echo "Amazon Linux 2 deployment completed for branch: ${{ github.ref }}" | |
| echo "Stack name: $STACK_NAME" | |
| echo "Environment: $ENVIRONMENT" | |
| echo "Commit: ${{ github.sha }}" |