LoginSignup
1
0

More than 3 years have passed since last update.

シェルスクリプトでLambdaとLayer登録する方法

Posted at

概要

シェルスクリプトでローカル環境からLambdaとLayerを登録した時の方法について記載します。
環境ごとにLambdaの登録先を変えられるようにしました。
Lambda関数はrubyで作成しています。

対応フロー

  • シェルを実行する前に、LambdaとLayerを作成する
  • AWSのアクセスキーとシークレットキーを取得する。
  • ローカル環境に取得したキーを設定する
  • Lambda登録のAWSコマンドを実行
  • Layer登録のAWSコマンドを実行
  • Layerの最新バージョンを登録したLambdaに紐つける
  • LambdaとLayerでファイルを分けて、シェルスクリプトの引数で環境を変えられるようにする

キーの設定

以下のコマンドを実行してアクセスキー、シークレットキー、region、output formatを指定する

aws configure --profile environment_name

Lambda登録用スクリプト

if [ "$1" == "environment_1" ]; then
  function_name="environment_1のLambda関数名"
elif [ "$1" == "environment_2" ]; then
  function_name="environment_2のLambda関数名"
else
  exit
fi
# 環境切り替え
export AWS_PROFILE=$1
# zipファイルは事前に作成しておく
# Lambda登録
aws lambda update-function-code --function-name ${function_name} --zip-file fileb://lambda.zip

Layer登録用スクリプト

if [ "$1" == "environment_1" ]; then
  layer_name="environment_1のLayer名"
  function_name="environment_1のLayer関数名"
elif [ "$1" == "environment_2" ]; then
  layer_name="environment_2のLayer名"
  function_name="environment_2のLayer関数名"
else
  exit
fi
# 環境切り替え
export AWS_PROFILE=$1
# zipファイルは事前に作成しておく
# Layer登録
aws lambda publish-layer-version --layer-name ${layer_name} --zip-file fileb://layer.zip --compatible-runtimes ruby2.7
# Layerの最新バージョンのARNを取得
import_layer_info=`aws lambda list-layer-versions --layer-name ${layer_name}`
latest_import_layer_arn=$(echo $import_layer_info | jq -r '.LayerVersions[0].LayerVersionArn')
# 最新のLayerをLambdaに紐つける
aws lambda update-function-configuration --function-name ${function_name} --layers ${latest_import_layer_arn}
1
0
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
1
0