0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWSでサーバーレス開発:Docker × ECR × Lambda × API GatewayにGitHub Actionsを追加してみた結果...

Posted at

はじめに

前回は、Dockerイメージを基にECRからLambdaを構築し、API GatewayをトリガーとしてLambdaから「Hello from Lambda!」を実装しました。

今回はその追加機能として、「GitHub Actions」を設定し、mainブランチに変更があった際に、コードをECRに自動デプロイする仕組みを構築します。

結果からお伝えすると、「GitHub Actions」を設定し、mainブランチに変更があった際のECRへの自動デプロイは実現できました。しかし、その後の「Lambda × API Gateway」の部分で問題が発生しました。

今回は、この問題がなぜ発生したのかに焦点を当てて、自分なりに考察をまとめていきます。

前回の続きになります

1本目では、ローカル環境でDockerfileを作成し、AWS CLIを使用してDockerイメージをECRにプッシュする手順を解説しました。

👉 Dockerイメージの作成とECRへのプッシュ

2本目では、Lambda関数を使用するために必要なIAMロールの作成や権限の設定について解説しました。

AWS CLIを使用してIAMの権限設定を行う方法を詳しくご紹介しています。

👉 IAMロールと権限設定について

3本目では、ECRにアップロードしたDockerイメージをAWS Lambdaで実行し、サーバーレス環境で「Hello from Lambda!」を実現する手順を紹介しました。

👉 Docker×ECR×Lambdaで「Hello from Lambda!」してみた

4本目では、ECRにプッシュしたDockerイメージを基にLambdaを実行し、API Gatewayを利用してHTTPリクエストに応じてLambda関数を呼び出す構成を構築しました。

👉 Docker × ECR × Lambda × API Gatewayを組み合わせたサーバーレスアーキテクチャを構築してみた

こんなイメージのことをしようと頑張りました(一部うまくいかなかった)

ローカル環境のDockerイメージをGitHub上のリポジトリのmainブランチにプッシュした際に、GitHub Actionsを使ってECRへ自動デプロイを行いました。

この手順自体は、過去の技術検証でも行っており、特につまずくことなくスムーズに作業できました。

この構成は、Dockerイメージを基にAWS Lambdaを構築し、API Gatewayをトリガーとして利用したサーバーレスアーキテクチャです。

Screenshot 2025-01-15 at 5.29.51.png

ECRを基にAWS Lambdaを構築し、API GatewayのHTTP APIをトリガーとして、ブラウザ上で『"Hello from Lambda!"』と表示することを目標にしていました。

しかし、ECRとLambdaの間でうまく連携できない部分があることが判明したため、その問題点を整理していきます。

どこがうまくいっていないのか?

今回、ローカル環境でGitHub上のmainリポジトリにプッシュがあった場合に、GitHub Actionsを使ってECRに自動デプロイすることは成功しました。

しかし、Lambda関数がECRの最新イメージURLを正しく読み込めず、古いイメージを使用し続ける問題が発生しました。

Screenshot 2025-01-15 at 9.37.33.png

そのため、変更を加えた内容が反映されない状態となっています。

この問題を解決する手段は、現時点では思いつかなかったため、技術検証をここで一旦断念しました。

以降では、実際にGitHub Actionsを実行した際の内容についてお伝えします。

GitHub Actionsを実行してみた

前提条件

GitHubリポジトリおよびGitHub Secretsの設定が完了していることが必要です。

これらの詳細手順については、以下の記事を参考にしてください。

👉 GitHubリポジトリの準備

Dockerfileと関連ファイルの変更をコミット

多くのリポジトリでは、mainがデフォルトブランチとして設定されています。

ここでは、変更したDockerfileや関連ファイルをコミットしてプッシュします。

git add Dockerfile
git commit -m "Update Dockerfile and related configurations"
git push origin main

GitHub Actionsの実行確認

変更をプッシュした後、GitHubの「Actions」タブに移動し、ワークフローが正しく実行されているか確認します。

Screenshot 2025-01-15 at 9.48.30.png

約39秒後、Dockerイメージが正常にECRへプッシュされていることが確認できました。

AWS管理コンソールでの確認

AWS管理コンソールのECRサービス画面で、想定通りDockerイメージがアップロードされていることを確認しました。

Screenshot 2025-01-15 at 9.54.42.png

まとめ

最後までお読みいただきありがとうございました。今回は、自分の思っている形を実現することができませんでしたが、自己分析できてまとめることができました

今回できなかった点については、おそらくラムダ関数などを使う必要があると思っていますので、また調べて実装してみようと思います

この内容がどなたかの技術の支えになれば幸いです。

おまけ:GitHub Actionsが成功したときのアイコンがかっこいい

いつも思うのですが、GitHub Actionsが成功した際にブラウザのアイコンに表示されるチェックマーク、とても気に入っています!笑

Screenshot 2025-01-15 at 11.32.35.png

このチェックマークをもっと見るためにも、技術を磨き続けていきたいと思います!

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?