特定のセキュリティグループが関連づけられているLambda関数をワンライナーで取得してみた

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは。AWS事業本部トクヤマシュンです。

VPC Lambdaを運用していると、同一のセキュリティグループを複数のLambda関数に設定していることがあります。
特定のセキュリティグループがどのLambda関数に設定されているのか調査するとき、マネージメントコンソール経由だと少し面倒です。

そこで、今回は特定のセキュリティグループに関連づけられているLambda関数をワンライナーで取得する方法をご紹介します。
セキュリティグループのルール変更時の影響調査などにお役立てください。

いきなりワンライナー

VPC Lambdaが関連づけられているセキュリティグループが存在するリージョンのCloudShellで下記を実行します。

aws lambda list-functions --query "Functions[?not_null(VpcConfig.SecurityGroupIds)]|[?contains(VpcConfig.SecurityGroupIds,\`セキュリティグループID\`)].[FunctionName]" --output table

セキュリティグループIDは調査対象のものに適宜変更してください。

簡単な解説

今回のワンライナーではパイプを使って2つのqueryをつなげています。

前半部分は、Lambda関数がVpcConfig.SecurityGroupIds という属性を持っているか判定しています。
VPC Lambdaでない関数はこの属性を持っていないため、後半のqueryでエラーが出るのを防ぐためにこの処理を入れています。
参考:VPC Lambdaの一覧を取得するために実行したlist-functionsの結果にVpcConfigが含まれない時と含まれるけど中身が空の時がある

後半部分ではLambda関数に設定されているセキュリティグループのIDに調査対象のものが含まれるかを判定し、該当する関数の名前を抜き出しています。

実行例

下記前提とします。

  • 調査対象のセキュリティグループ
    • ID: sg-0c13462137fe66d64
    • リージョン: ap-northeast-1
  • 調査対象のセキュリティグループが関連づけられているLambda関数名
    • test-security-group-lambda1
    • test-security-group-lambda2

ap-northeast-1リージョンのCloudShellにて次のワンライナーを実行します。

aws lambda list-functions --query "Functions[?not_null(VpcConfig.SecurityGroupIds)]|[?contains(VpcConfig.SecurityGroupIds,\`sg-0c13462137fe66d64\`)].[FunctionName]" --output table

結果は次のとおりです。

---------------------------------
|         ListFunctions         |
+-------------------------------+
|  test-security-group-lambda1  |
|  test-security-group-lambda2  |
+-------------------------------+

調査対象のセキュリティグループが関連づけられているLambda関数名だけを抜き出すことができました。
以上でワンライナーの紹介は終了です。

趣味のスパイスカレー

私の趣味はスパイスカレー作りで、ブログに投稿していってます。
AWSには全然関係ありませんが、お付き合いいただけますと幸いです。

  • 合わせ出汁の鶏キーマ
  • ホタルイカとオクラのトマトマサラ
  • ナスのモージュ
  • ムング豆のダル
  • ナスのモージュ
  • キュウリとトマトのスパイスライタ

今回はスリランカカレーをベースとした2種あいがけ+副菜です。
意外かもしれないですが、オクラはカレーの具としては結構ポピュラーなんです。美味しいですよ。
ホタルイカももう終わりですね。ワタまで美味しい。季節を感じられるカレーが好きです◎

最後に

特定のセキュリティグループに関連づけられているLambda関数をワンライナーで取得する方法をご紹介しました。
セキュリティグループのルール変更時などにご利用ください。

今回のように少し複雑なAWS CLIのqueryオプションは、慣れてないとうまく書けず詰まってしまいますが、
使いこなせたらとても心強いツールです。
もっと仲良くなろうと思いました。

本ブログがどなたかのお役にたてば幸いです。