GitHub ActionsでLambda関数をデプロイする方法

GitHub ActionsでLambda関数をデプロイする方法

2025年8月7日、AWS LambdaがGitHub Actionsでのデプロイをサポートするようになりました。

何が嬉しいのか

従来の方法でGitHub ActionsでランタイムがpythonのLambda関数をデプロイするためのワークフローの一例を見てみます。

name: Deploy to AWS Lambda

on:
  push:
    branches: [ "main" ]

permissions:
  id-token: write
  contents: read

jobs:
  deploy:
    name: Deploy
    runs-on: ubuntu-latest

    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

      - name: Configure AWS credentials
        uses: aws-actions/configure-aws-credentials@v4
        with:
          role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }}
          aws-region: ${{ env.AWS_REGION }}

      - name: Set up Python
        uses: actions/setup-python@v5
        with:
          python-version: '3.12'

      - name: Build Python source code
        run: |
          cd my-lambda-function-directory
          pip install -r requirements.txt -t .
          zip -r ../deployment-package.zip ./*

      - name: get-caller-identity is allowed to run on role.
        run: aws sts get-caller-identity

      - name: lambda update
        run: |
          aws lambda update-function-code --function-name MyLambdaHandler --zip-file fileb://deployment-package.zip --publish

従来のワークフローでは、AWS CLIが正しく動作するための確認として、必須ではないですがOIDC認証確認のステップを踏むことが一般的でした。またLambdaデプロイもAWS CLIコマンドによるものでした。

一方、今回サポートされたaws-actions/aws-lambda-deployを用いたワークフローではどうなるでしょうか?

name: Deploy to AWS Lambda

on:
  push:
    branches: [ "main" ]

permissions:
  id-token: write
  contents: read

jobs:
  deploy:
    name: Deploy
    runs-on: ubuntu-latest

    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Configure AWS credentials
        uses: aws-actions/configure-aws-credentials@v4
        with:
          role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }}
          aws-region: ${{ env.AWS_REGION }}

      - name: Deploy Lambda Function
        uses: aws-actions/aws-lambda-deploy@v1
        with:
          function-name: MyLambdaHandler
          code-artifacts-dir: my-lambda-function-directory
          handler: my_module.handler
          runtime: python3.12

aws-actions/aws-lambda-deployを用いたワークフローでは、OIDC認証確認のステップが不要になりました。またソースコードのパッケージ化も不要になり、Lambda関数のデプロイステップが簡潔に書けるようになりました。

また個人的に嬉しい点は、本来であればコマンドライン引数や環境変数に設定値を渡す必要があったパラメータをinputsパラメータで設定できることです。

例えばs3-bucket, s3-keyパラメータを指定すれば、デプロイパッケージを特定のS3バケットやバケット内のオブジェクトにアップロードしてデプロイできます。

その他にもKMSやX-Ray、SQSといったAWSサービスと連携することもできるみたいです。

\ シェアする /

この記事を書いた人

プロフィール画像

1996年生まれ。中部大学大学院にてコンピュータビジョン関連の深層学習の研究に注力したのち、2021年4月に株式会社medibaに入社。 KDDIグループ企業各社のDeveloperが集い、エンジニアが楽しめるイベントを提供するコミュニティ「KGDC」のイベント運営も行っています。

記事に関する質問は、フッター掲載の各種SNSにてお問い合わせください。