AWSは最近、AWS LambdaがGitHub Actionsをサポートすると発表した。これにより、GitHub Actionsワークフロー内で宣言型設定を使用して、Lambda関数への変更を簡単にデプロイ可能になった。新しいオプションは、.zipファイルとコンテナイメージのデプロイの両方をサポートしている。
GitHub Actionsは、GitHubリポジトリに変更が加えられるたびに、コードのビルド、テスト、デプロイなどのタスクを自動的に実行するツールだ。AWS Lambda向けの新しいアクションは、OpenID Connect(OIDC)認証を使用してIAMと連携している。これにより、ランタイム、メモリサイズ、タイムアウト、環境変数などの関数設定の構成、ドライランモード、大容量の.zipファイルパッケージ向けのAmazon S3ベースのデプロイが可能だ。
OIDCは、GitHub ActionsワークフローがAWSの資格情報を長期的な秘密として保存することなく、AWSリソースにアクセスできる。AWSのプロダクトリードShridhar Pandey氏はLinkedInでコメントしている。
GitHubからLambda関数をデプロイするためにカスタムスクリプトを書いていたことを覚えていますか?その時代は終わりました!今では、GitHubリポジトリから簡単な宣言型の設定でLambda関数を自動的にデプロイできます (中略) サーバーレスアプリケーションのCI/CDパイプラインを簡素化する方法に特に興奮しています。一つ手間が減りました!
以前は、開発チームがGitHub ActionsからLambda関数をデプロイするためにカスタムスクリプトを作成し、パッケージ化、権限、エラー処理を手動で管理する必要があり、繰り返し作業やエラーのリスクが増加していた。新しいオプションは、宣言型のYAMLインターフェースを提供し、手動デプロイ手順の複雑さを排除する。
name: Deploy AWS Lambda on: push: branches: - main jobs: deploy: runs-on: ubuntu-latest permissions: id-token: write # Required for OIDC authentication contents: read # Required to check out the repository steps: - uses: actions/checkout@v4 - name: Configure AWS credentials uses: aws-actions/configure-aws-credentials@v4 with: role-to-assume: arn:aws:iam::123456789012:role/GitHubActionRole aws-region: us-east-1 - name: Deploy Lambda Function uses: aws-actions/aws-lambda-deploy@v1 with: function-name: my-lambda-function code-artifacts-dir: ./dist GitHub Actionsを使用したLambdaデプロイのワークフロー。出典:AWSドキュメント
GitHub Actionsを通じてLambda関数を公開する機能はコミュニティから好意的なフィードバックを受けており、多くの開発者がなぜこれほど時間がかかったのか疑問を呈している。ユーザーraize_the_roof氏はコメントしている。
これは長い間待ち望まれていました。統合があっても、ランナー環境を調整することで、ワークフローの終了速度に顕著な違いが生じることがあります(特に大規模なビルドの場合)。
記事「Why you probably don't want to use AWS' new GitHub Actions Lambda Deployment」で、SymphoniaのパートナーMike Roberts氏は次のように反論している。
機能的には、AWS Lambda CLIに数回のコールを行うのとまったく同じです。新しいアクションにはそれ以上のものはありません (中略) まだロールや権限の設定とデプロイが必要で、トリガー構成のデプロイも必要です。それに加えて、他の多くのことを省略しました!さらに、このアクションはLambda関数のビルドさえ行いません (中略) この方法でLambdaをデプロイするもう一つの問題は、開発環境からデプロイする方法と異なることです。
The Duckbill GroupのチーフクラウドエコノミストCorey Quinn氏はニュースレターで述べた。
率直に言って、私たちが本当に望んでいるのは、Google Cloud Runに対するAWSの答えです。つまり「コンテナイメージを渡して、それをスケールで実行してくれればいい」ということだ。
デプロイに必要なパラメータは、function-name、code-artifacts-dir、handler、runtimeだ。指定されたfunction-nameの関数が存在しない場合、roleパラメータも必要であり、CreateFunction APIを使用して、code-artifacts-dirから提供されたコードと構成パラメータで関数が作成される。AWSのDevOpsエンジニアOleksii Semeniuk氏は新機能をテストし、GitHub Actionsを使用してLambda関数をデプロイする方法に関する記事を公開した。Semeniuk氏は次のように結論している。
プロセスは非常に簡単で、以前必要だったオーバーヘッドを大幅に削減します。
Lambda関数向けの新しいGitHubアクションは、すべてのAWSリージョンで利用可能だ。