kawabatas技術ブログ

試してみたことを書いていきます

Github Actions から Lambda をデプロイする

個人のローカル PC からデプロイする場合

  • 他の人がデプロイしづらい
  • 個人のローカル PC 内のツールのバージョンが変わる

といった問題があり、Lambda や Cloud Functions 等も CI/CD からデプロイできた方が良さそうかもと感じている。

とりあえず、Lambda を Github Actions からデプロイするようにしてみた。

.github/workflows/ci.yml

name: deploy to lambda
on:
  push:
    branches:
      - main
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-go@v2
        with:
          go-version: "1.15"
      - name: Build binary
        run: GOOS=linux go build main.go && zip function.zip main
      - name: Configure AWS Credentials
        uses: aws-actions/configure-aws-credentials@v1
        with:
          aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
          aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
          aws-region: ap-northeast-1
      - name: Deploy AWS Lambda
        run: aws lambda update-function-code --function-name ラムダ関数名 --zip-file fileb://function.zip

Github Actions 公式、AWS 公式のモノのみでデプロイする形にしたが、こちらを使っても良さそう。

github.com

AWS ポリシーは上記リポジトリと同様で作成

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:PutObject",
        "iam:ListRoles",
        "lambda:UpdateFunctionCode",
        "lambda:CreateFunction",
        "lambda:UpdateFunctionConfiguration"
      ],
      "Resource": "*"
    }
  ]
}