Add Amazon Linux 2 compatible package building for GitHub Actions #29
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: Install dependencies for Amazon Linux 2 | |
| run: | | |
| python -m pip install --upgrade pip | |
| # Amazon Linux 2用のバイナリをダウンロード | |
| pip install --platform manylinux2014_x86_64 --only-binary=all --target ./package -r requirements.txt | |
| # ネイティブバイナリが必要な場合は、Amazon Linux 2コンテナでビルド | |
| docker run --rm -v $(pwd):/var/task public.ecr.aws/lambda/python:3.10 \ | |
| pip install -r requirements.txt -t /var/task/package | |
| # パッケージサイズを確認 | |
| du -sh ./package | |
| ls -la ./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: Debug AWS Role ARN | |
| run: | | |
| echo "Current branch: ${{ github.ref }}" | |
| echo "Branch condition: ${{ github.ref == 'refs/heads/main' }}" | |
| echo "Using role ARN: ${{ github.ref == 'refs/heads/main' && secrets.AWS_ROLE_ARN_PROD || secrets.AWS_ROLE_ARN_DEV }}" | |
| echo "AWS_ROLE_ARN_DEV exists: ${{ secrets.AWS_ROLE_ARN_DEV != '' }}" | |
| echo "AWS_ROLE_ARN_PROD exists: ${{ secrets.AWS_ROLE_ARN_PROD != '' }}" | |
| echo "AWS_ROLE_ARN_DEV length: ${{ secrets.AWS_ROLE_ARN_DEV != '' && 'non-empty' || 'empty' }}" | |
| echo "AWS_ROLE_ARN_PROD length: ${{ secrets.AWS_ROLE_ARN_PROD != '' && 'non-empty' || 'empty' }}" | |
| - 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 "Deployment completed for branch: ${{ github.ref }}" | |
| echo "Stack name: $STACK_NAME" | |
| echo "Environment: $ENVIRONMENT" | |
| echo "Commit: ${{ github.sha }}" |