📝

Steampipe を使って AWS 全リージョンを対象として Lambda 関数の情報を取得する

2022/10/02に公開

Steampipe とは

  • Steampipe は AWS に限らず様々なクラウドリソースを SQL によるクエリを実行してくれる CLI ツール
  • 今回のように複数リージョンに対して 1度 のクエリでデータを取得したい場合や、 SQL に慣れている場合に便利

https://steampipe.io/

対応しているサービスについてはプラグインページを確認すると良い

https://hub.steampipe.io/plugins

Steampipe をインストールする

シンプルな公式ドキュメントがあるので、こちらを見るのが早い

https://steampipe.io/downloads

Mac 環境では homebrew を使って以下のようなコマンドでインストール可能

brew tap turbot/tap
brew install steampipe

Steampipe の AWS プラグインをインストールする

Steampipe で AWS リソースを扱うため、プラグインをインストールする

https://hub.steampipe.io/plugins/turbot/aws

下記このようなコマンドでインストール可能

steampipe plugin install aws

クエリの対象を全リージョンとする

  • Steampipe デフォルトでは 1つ のリージョンに対してクエリを実行するようになっている
  • AWS プラグインの設定ファイルは ~/.steampipe/config/aws.spc に作成されるので、以下のように編集する
connection "aws" {
  plugin = "aws"

  # You may connect to one or more regions. If `regions` is not specified,
  # Steampipe will use a single default region using the same resolution
  # order as the AWS CLI:
  #  1. The `AWS_DEFAULT_REGION` or `AWS_REGION` environment variable
  #  2. The region specified in the active profile (`AWS_PROFILE` or default)
  regions = ["*"]

  # 途中は省略

}

Lambda 関数の情報を取得する

以下のコマンドで OK

MYQUERY="select arn from aws_lambda_function"
steampipe query ${MYQUERY}

個人的に、今回は nodejs12 ランタイムを使用している Lambda 関数の一覧が欲しかったので、その場合 WHERE 句で指定すれば OK

MYQUERY="select arn from aws_lambda_function where runtime = 'nodejs12.x'"
steampipe query ${MYQUERY}

# シンプルなテキストリストとして加工したい場合は --output で json 形式にできるので jq と組み合わせて、以下のように指定すると良い感じになる
steampipe query ${MYQUERY} --output json | jq --raw-output ".[].arn"

Steampipe で対話的にクエリをしたい場合、以下のコマンドで対話モードを起動できる。そこそこ補完も効くので使いやすい

steampipe query

どのようなテーブルやフィールドが扱えるかはリファレンスを参照すると良い

https://hub.steampipe.io/plugins/turbot/aws/tables

試した環境

% sw_vers
ProductName:	macOS
ProductVersion:	12.4
BuildVersion:	21F79
% steampipe -v
steampipe version 0.16.4
% steampipe plugin list
+--------------------------------------------------+---------+-------------+
| Name                                             | Version | Connections |
+--------------------------------------------------+---------+-------------+
| hub.steampipe.io/plugins/turbot/aws@latest       | 0.78.0  | aws         |
| hub.steampipe.io/plugins/turbot/steampipe@latest | 0.6.0   | steampipe   |
+--------------------------------------------------+---------+-------------+

Discussion