Photoruction工事中!

Photoructionの開発ブログです!

AWS Lambdaで効率よく本番・検証環境をわける!

こんにちは!株式会社フォトラクションでWEB開発をしている下川原です。

Photoruction Advent Calendar 2022の4日目の記事になります。

はじめに

どんな人がこの記事を読むと幸せになるか。

  • AWS Lambdaで開発を進めてる人(言語問わず)
  • AWS Lambdaのソースをコピーして検証環境・本番環境を作っちゃってる人

AWS Lambdaを環境ごとに分ける!

1. 下準備

まずは、検証用、本番用にする直前のLambda関数ができていることが重要!

2.バージョンを作成する(AWS CLIで行う場合)

aws lambda publish-version --function-name myTestsFunctions --description "とりあえず動くようにした"

(説明)
aws lambda publish-version バージョンを作成するコマンド

オプション

--function-name 関数を指定

--description バージョン説明を記載(わかりやすい説明が良い)

コマンドを実行後の内容を控えておく。(Versionが大事)

{
  "FunctionName": "myTestsFunctions",
  "FunctionArn": "arn:aws:lambda:ap-northeast-1:******:function:myTestsFunctions:1",
  "Version": "1",
  ...
}

2.バージョンを作成する(AWSコンソールで行う場合)

lambda関数の画面からバージョン

[新しいバージョンを発行]

押すと、バージョン説明を入力してその時点のソースコードでバージョンができる

バージョン説明は、わかりやすくすると良い。

3.エイリアスを作成する(AWS CLIで行う場合)

aws lambda create-alias --function-name myTestsFunctions --name staging --function-version 1 --description "検証用"

・説明
aws lambda create-alias エイリアスを新たに作るコマンド

オプション

--function-name 関数を指定
--name エイリアスの名前(staging , production, develop用途に応じてどうぞ)
--function-version エイリアスに設定するバージョンを設定
--description バージョン説明を記載(わかりやすい説明が良い)

3. エイリアスを作成する(AWSコンソールで行う場合)

4.再度ソースコードの修正を行いたい場合

ソースコードの修正を終えて

手順2を再度行うことで、新しいバージョンを発行する。

そのあと、エイリアスを更新する

エイリアスを更新(AWS CLIで行う場合)

aws lambda update-alias --function-name myTestsFunctions --name staging --function-version 2

・説明
aws lambda update-alias エイリアスを更新するコマンド

オプション

--function-name 関数を指定
--name エイリアスの名前(staging , production, develop用途に応じてどうぞ)
--function-version エイリアスに設定するバージョンを設定
--description バージョン説明を記載(わかりやすい説明が良い)

エイリアスを更新(AWS コンソールで行う場合)

エイリアスの設定画面 > 一般設定 > 編集

新たなバージョンを選択して保存をする

さいごに

Lambda関数を本番用、ステージング用、開発用と別けるのではなく、

バージョン管理とエイリアスをしっかり設定することで、

即座に反映したい環境へ、反映ができるので活用していただきたい。

参考

https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/configuration-versions.html

https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/configuration-aliases.html#configuration-aliases-config

株式会社フォトラクションでは一緒に働く仲間を募集しています