はじめに
0.9.51リリース系列で検証済み。コマンドは Python 3.10.2 以降と、環境に用意された AWS 認証情報を想定する。
前提
- Python
>=3.10.2, <4.0.0(pyproject.toml)。 - boto3 が到達できる AWS 認証情報 (環境変数または名前付きプロファイル)。
- 仮想環境を作れるシェル。
インストール
bash
python3 -m venv custodian
source custodian/bin/activate
pip install c7n最初の動く構成
最短で役立つポリシーは起動中の EC2 インスタンスを列挙するものである。既定の pull モードを使うため、アクションを足さない限り照会とレポートだけを行う。
ポリシーを
custodian.ymlに書く:yamlpolicies: - name: my-first-policy resource: aws.ec2 filters: - "State.Name": running検証する。検証は
run時にも自動で走る:bashcustodian validate custodian.ymlドライランする。リソースを照会するがアクションは実行しない:
bashcustodian run --dryrun -s out custodian.yml本番実行する:
bashcustodian run -s out custodian.yml
これらのコマンドは README のクイックスタートに対応する (README.md)。
動作確認
-s out フラグは出力ディレクトリである。実行後、マッチしたリソースは PullMode によって out/<policy-name>/resources.json に書かれる (c7n/policy.py:351)。このファイルを確認する:
bash
cat out/my-first-policy/resources.jsonマッチしたインスタンスの JSON 配列が出ればポリシーは動いてマッチした。空配列なら照会は走ったがフィルタに何も合致しなかったことを意味する。
次に読むもの
- Docker: 同じコマンドを
cloudcustodian/c7nイメージから実行できる。ポリシーファイルと出力ディレクトリをマウントし、認証情報を環境変数で渡す (README.md)。 - サーバレス・マルチアカウント運用、他プロバイダ、通知、フィルタ・アクションの完全なリファレンスは公式ドキュメントにある (cloudcustodian.io)。