-
Notifications
You must be signed in to change notification settings - Fork 0
129 lines (108 loc) · 4.22 KB
/
Copy pathdeploy-amazonlinux2.yml
File metadata and controls
129 lines (108 loc) · 4.22 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
name: Deploy to AWS CloudFormation (Amazon Linux 2)
on:
push:
branches:
- main
- deploy
env:
AWS_REGION: ap-northeast-1
PROJECT_NAME: LambdaFramework
permissions:
id-token: write
contents: read
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Build Amazon Linux 2 compatible package
run: |
# 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 optimized deployment package
run: |
# パッケージディレクトリを作成
mkdir -p lambda-package
# Lambda関数のコードをコピー
cp -r LambdaFramework/* lambda-package/
# Amazon Linux 2用の依存関係をコピー
cp -r package/* lambda-package/
# 不要なファイルを削除(サイズ最適化)
find lambda-package -name "*.pyc" -delete
find lambda-package -name "__pycache__" -type d -exec rm -rf {} + 2>/dev/null || true
find lambda-package -name "*.dist-info" -type d -exec rm -rf {} + 2>/dev/null || true
# パッケージを圧縮
cd lambda-package
zip -r ../lambda-deployment-package.zip .
cd ..
echo "Optimized deployment package created"
ls -la lambda-deployment-package.zip
du -sh 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: Upload package to S3
run: |
# ブランチに基づいて環境設定を決定
if [ "${{ github.ref }}" = "refs/heads/main" ]; then
S3_BUCKET="${{ vars.S3_BUCKET_PROD }}"
ENVIRONMENT="production"
else
S3_BUCKET="${{ vars.S3_BUCKET_DEV }}"
ENVIRONMENT="development"
fi
# S3にパッケージをアップロード
aws s3 cp lambda-deployment-package.zip s3://$S3_BUCKET/lambda-packages/
echo "Package uploaded to s3://$S3_BUCKET/lambda-packages/"
- 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 }}"