LoginSignup
3
2

More than 3 years have passed since last update.

AWS CLIを用いてLambda関数の情報とコードの一覧を取得する。

Posted at

はじめに

AWSを使用するに当たり適宜適当にlambdaの関数を作成していたら、いつの間にか管理がおろそかになってしまいました。。。
とりあえず AWS CLI を使えば現状あるものの一覧を取得できるみたいなのでトライしてみます。

手順

0. 事前準備

わたくしの環境

・ubuntu v20.04.1 LTS (Focal Fossa)
・aws-cli /2.1.3 Python/3.7.3 Linux/4.4.0-19041-Microsoft exe/x86_64.ubuntu.20

cliを使用するroleにはLambdaのListFunctionsとGetFunctionの権限を追加しておきましょう。

1. 関数の一覧を取得する

以下関数でlambda関数の一覧をcsvで取得できます。

aws lambda list-functions --region ap-northeast-1 | jq '.Functions[] |  [ .FunctionName ,  .Runtime ]' | jq -rs ' map([.[]])[]|@csv' < lambda-list.csv

'.Functions[] | [ .FunctionName , .Runtime ]'の中身を好きに設定することで他の情報も得ることができます。(Example : 'Output'の中身を好きに指定できます)

2. 関数名を指定して情報を取得する

以下コードで関数の情報を取得できます。

aws lambda get-function --function-name <関数の名前>

3. 関数名を指定してコードを取得する

さっき取得した情報の '.Code.Location' を使用してlambda関数のコードの中身を取得します。

url=$(aws lambda get-function --function-name <関数の名前>} | jq -r '.Code.Location')
curl -o lambda.zip ${url}

4. シェルスクリプトで全コード・情報取得自動化

最終的にこうなりました。
お好みでカスタマイズしてください。
人生初シェルスクリプトだったため、中々苦戦しました。

#!/bin/bash

aws lambda list-functions --region ap-northeast-1 | jq '.Functions[] |  [ .FunctionName ,  .Runtime ]' | jq -rs ' map([.[]])[]|@csv' > lambda-list.csv

while read row; do
  funcName=`echo ${row} | sed 's/"//g' | cut -d , -f 1` 
  funcType=`echo ${row} | sed 's/"//g' | cut -d , -f 2`

  mkdir ${funcName}
  cd ${funcName}
  aws lambda get-function --function-name ${funcName} > function.json
  url=$(aws lambda get-function --function-name ${funcName} | jq -r '.Code.Location')
  curl -o lambda.zip ${url}
  unzip lambda.zip
  rm lambda.zip
  cd ..

  echo "${funcName}処理完了"
done < lambda-list.csv
exit 0

終わりに

いかがだったでしょうか。
lambda関数の作成は乱雑になりがちだと思いますが、(もしかして自分だけでしょうか。。。)これを使えば一覧をサクッと取得できます。
そのうちlambda関数自体にローカルに保存するかどうかのフラグを立て、必要なものを必要に応じ管理できるよう改善していきたいと思います。

参考

シェルスクリプト(bash)にてsedコマンドを使用して文字列からダブルクォーテーションを削除する方法
bashでCSVを読み込み1行ずつループ処理する
【AWS】lambda のめんどくさい棚卸しを楽にするワンライナー
【備忘録】AWS CLI 便利オプション一覧

3
2
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
3
2