Server

LocalStackのLambdaをホットリロードさせる

投稿日:

はじめに

前回に引き続きAWS Lambdaについて取り扱っていきます。今回はLocakStackでホットリロードさせるための設定について紹介します。

全体の流れ

まず初めに、どのようにホットリロードを実現するかについて簡単に紹介します。

大まかな流れは以下のとおりです。

  • コードの変更を検知する(Watchman)
  • 実行ファイルををビルドして、Lambdaにdeployする

それぞれについて、もう少し深掘りします。

コードの変更を検知する

コードの変更の検知にはWatchmanを用います。

Watchmanの機能の1つとして、ファイルを監視しファイルが変更されたときにアクションをトリガーすることができます。

インストール方法については割愛しますので、適宜公式ドキュメントを確認の上、予めインストールしてください。

ファイルをビルドしてdeployする

実行ファイルのdeployについては、AWS CLIの update-function-code APIで行います。

ホットリロードを実現する

それでは、前回のコードをホットリロードできるように改修します。

deployスクリプトを作成する

前回のdeployスクリプトでは、Lambda関数を一度削除してから再度作り直していました。今回はSQS周りの設定などは使い回せるように、実行ファイルのみアップデートするdeployスクリプトを新たに作成します(既存のdeployスクリプトは初回だけ実行するため、lambda_create.shにリネームしておきます)。

新しいdeployスクリプトは以下のとおりです。

get_message/main.go をビルドしてZIP化し、 update-function-code でZIPをアップロードしています。

Watchmanのラッパースクリプトを作成する

つぎに、Watchmanのラッパースクリプトを作成します。

このスクリプトでは、 get_message ディレクトリを監視対象として、更新があった場合に lambda_deploy.sh を実行します。

スクリプトは以下のとおりです(こちらをほぼそのまま使用)。

get_message ディレクトリのファイルに変更があった場合、 lambda_deploy.sh が実行され、Lambdaが更新されます。

実際に動かしてみる

前回と同様に、LocakStack上にLambdaをdeployして実行すると、コンテナ内に以下のようなログが出力されます。

そして、先程作成した hot-reload.go を実行した状態で get_message/main.go を変更してみると、Lambdaが更新され、コンテナが削除されます。

この状態で再度Lambdaを動かしてみると、このようにログに hot reloaded のメッセージ(fmt.Printlnで出力させた)が表示されるようになっています。

これで、変更がLambdaに反映されていることが確認できました。

おまけ

おまけとして、Lambdaに実行ファイルではなくコンテナをdeployして実行する方法を紹介します。

やりかたは簡単で、ECRにDockerイメージをアップロードしておき、Lambda関数の作成時に「コンテナイメージ」を選択して、イメージのURIを指定するだけです。

その際、コンテナイメージの下記の項目を上書きすることができます。

  • ENTRYPOINT
  • CMD
  • WORKDIR

ENTRYPOINTとCMDに関してはカンマ区切りで複数の値を指定できます。

おすすめ書籍

エバンジェリストの知識と経験を1冊にまとめた AWS開発を《成功》させる技術 AWS運用入門 押さえておきたいAWSの基本と運用ノウハウ AWSではじめるインフラ構築入門 第2版 安全で堅牢な本番環境のつくり方

blog-page_footer_336




blog-page_footer_336




-Server
-

執筆者:

免責事項

このブログは、記事上部に記載のある投稿日時点の一般的な情報を提供するものであり、投資等の勧誘・法的・税務上の助言を提供するものではありません。仮想通貨の投資・損益計算は複雑であり、個々の取引状況や法律の変更によって異なる可能性があります。ブログに記載された情報は参考程度のものであり、特定の状況に基づいた行動の決定には専門家の助言を求めることをお勧めします。当ブログの情報に基づいた行動に関連して生じた損失やリスクについて、筆者は責任を負いかねます。最新の法律や税務情報を確認し、必要に応じて専門家に相談することをお勧めします。


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


関連記事

MyCoachのDocker環境を変えてみた

1 はじめに2 なんで改修しようと思ったか3 構成3.1 使用するコンテナ3.2 各Dockerfile3.3 docker-compose.yml3.4 Unicorn3.5 database.rb ...

CircleCIを使ってみた(RailsのRSpecとデプロイのサンプル)

1 はじめに2 導入するにあたって3 項目B4 補足4.1 開発環境とCI環境でdatabase.ymlが異なる5 さいごに はじめに 個人的に作成しているアプリケーションのCIツールとして、Circ ...

[CentOS7] systemdにサービスを登録して、サーバ起動時に自動でサービスを立ち上げる

1 はじめに2 chkconfigについてざっくり3 前提4 起動スクリプトを作成する5 Unitを定義する6 EnvironmentFileを作成する7 確認と設定7.1 systemdで管理できる ...

DockerでRails + Vue.jsの環境を作ってみる

1 はじめに1.1 前回までのあらすじ1.2 今回の趣旨1.3 環境2 MySQLのUTF-8対応3 Node.jsをRubyコンテナに組み込む4 Webpackerを使用してVue.jsをインストー ...

DockerのQuickstart:Compose and Railsをやってみた

1 はじめに1.1 環境1.2 Docker for Macのインストール2 Railsプロジェクトを作成するまで2.1 Railsのプロジェクトディレクトリの作成2.2 Dockerfileの作成2 ...

フォロー

blog-page_side_responsive

2023年10月
1234567
891011121314
15161718192021
22232425262728
293031  

アプリ情報

私たちは無料アプリもリリースしています、ぜひご覧ください。 下記のアイコンから無料でダウンロードできます。