Skip to content

Fix Docker container entrypoint issue in Amazon Linux 2 workflow #32

Fix Docker container entrypoint issue in Amazon Linux 2 workflow

Fix Docker container entrypoint issue in Amazon Linux 2 workflow #32

Workflow file for this run

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コンテナで依存関係をビルド
docker run --rm -v $(pwd):/var/task public.ecr.aws/lambda/python:3.10 \
bash -c "
cd /var/task
python -m pip install --upgrade pip
pip install -r requirements.txt -t ./package
echo 'Dependencies installed for Amazon Linux 2'
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: 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 }}"