何が嬉しいのか
従来の方法でGitHub Actionsでランタイムがpythonの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にてお問い合わせください。