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


関連記事

[WordPressのSEO対策]PageSpeed Insightsのスコアを上げる方法

1 はじめに2 現状のスコアと改善点を確認する3 ブラウザキャッシュを活用する4 圧縮を有効にする5 HTML/CCS/JavaScriptを縮小する6 画像を最適化する7 レンダリングをブロックして ...

aws

ECSとCWLでのアラームの設定

1 はじめに1.1 全体の流れ2 CloudWatch Logsでロググループを作成する3 ECSでタスク定義を作成(更新)する4 CloudWatch Logsでメトリクスフィルタを作成する5 SN ...

配牌からアガれるかアガれないか予測する

1 はじめに1.1 趣旨1.2 筆者のスペック1.3 環境1.4 機能概要2 実装に関して2.1 教師データ2.2 前処理2.3 各ノードの重みの学習3 実際に使ってみた3.1 再テスト4 学習させた ...

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

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

aws

Amazon Linux 2でLet’s Encryptが使えない

1 はじめに2 Amazon Linux 22.1 Amazon Linux Extras Library3 Let’s Encrypt4 本題5 さいごに はじめに 知人からタイトルのよ ...

フォロー

blog-page_side_responsive

2023年10月
1234567
891011121314
15161718192021
22232425262728
293031  

アプリ情報

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