📝
Steampipe を使って AWS 全リージョンを対象として Lambda 関数の情報を取得する
Steampipe とは
- Steampipe は AWS に限らず様々なクラウドリソースを SQL によるクエリを実行してくれる CLI ツール
- 今回のように複数リージョンに対して 1度 のクエリでデータを取得したい場合や、 SQL に慣れている場合に便利
対応しているサービスについてはプラグインページを確認すると良い
Steampipe をインストールする
シンプルな公式ドキュメントがあるので、こちらを見るのが早い
Mac 環境では homebrew を使って以下のようなコマンドでインストール可能
brew tap turbot/tap
brew install steampipe
Steampipe の AWS プラグインをインストールする
Steampipe で 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
どのようなテーブルやフィールドが扱えるかはリファレンスを参照すると良い
試した環境
% 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