こんにちは
今回はCloudFormationでシンプルなStorageLensを作成するコードの書き方についてです。
メトリクスの有料・無料を記述する部分が意外とややこしかったりするので、誰かのお役に立てば幸いです。
サンプルコード
StandardStorageLensConfiguration:
Type: AWS::S3::StorageLens
Properties:
StorageLensConfiguration:
Id: SampleStorageLensDashboard #StorageLensダッシュボード名
IsEnabled: true
AccountLevel: #アカウント単位のメトリクス設定(有料メトリクス)
ActivityMetrics: #--アクティビティメトリクス
IsEnabled: true
AdvancedCostOptimizationMetrics: #--高度なコスト最適化メトリクス
IsEnabled: true
AdvancedDataProtectionMetrics: #--高度なデータ保護メトリクス
IsEnabled: true
DetailedStatusCodesMetrics: #--詳細なステータスコードのメトリクス
IsEnabled: true
BucketLevel: #--バケット単位のメトリクス設定(有料メトリクス)
ActivityMetrics:
IsEnabled: true
AdvancedCostOptimizationMetrics:
IsEnabled: true
AdvancedDataProtectionMetrics:
IsEnabled: true
DetailedStatusCodesMetrics:
IsEnabled: true
PrefixLevel: #--プレフィックス集約の設定
StorageMetrics:
IsEnabled: true
SelectionCriteria:
MaxDepth: 10 #---プレフィックスの深さ
MinStorageBytesPercentage: 1 #---プレフィックスのしきい値 (%)
Delimiter: "/" #---区切り文字
Include: #対象とするリージョンとバケット
Buckets:
- BacketArn #--対象とするバケットArnを列挙
Regions:
- !Ref AWS::Region
Tags:
- Key: "tag1"
Value: "value1
説明
こちらのCloudFormationで作成されるStorageLensの構成は、以下のとおりです。
(マネジメントコンソールベースの順番と名称で記載しています。)
StorageLensの構成
- ダッシュボード名: SampleStorageLensDashboard
- ホームリージョン:(Stackを作成したリージョン)
- ステータス:有効
- タグ: キー:tag1 値:value1
- リージョンとバケットを選択:リージョンとバケットを含める
- 含めるリージョンを指定:(Stackを作成したリージョン)
- 含めるバケットを選択:「 Buckets:」で指定したバケット
- メトリクスの選択:高度なメトリクスとレコメンデーション
- 高度なメトリクス:有効
- アクティビティメトリクス
- 詳細なステータスコードのメトリクス
- 高度なコスト最適化メトリクス
- 高度なコスト最適化メトリクス
- CloudWatch パブリッシュ:無効
- プレフィックス集約:有効
- プレフィックスのしきい値 (%):1
- プレフィックスの深さ:10
- 区切り文字:/
- 高度なメトリクス:有効
- メトリクスのエクスポート:無効
今回はCloudWatchパブリッシュやメトリクスのエクスポート(S3に1日1回エクスポートする機能)などは設定していませんが、これらの機能もCFnで設定可能です。
無料メトリクスのみ利用したい場合
StandardStorageLensConfiguration:
Type: AWS::S3::StorageLens
Properties:
StorageLensConfiguration:
Id: SampleStorageLensDashboard
IsEnabled: true
AccountLevel: #無料メトリクスのみとする
BucketLevel: {}
Include:
Buckets:
- BacketArn
Regions:
- !Ref AWS::Region
Tags:
- Key: "tag1"
Value: "value1
無料メトリクスのみを利用したい場合は上記のようにしてください。
先程のコードとの変更点・ポイントは、AccountLevel 下の BucketLevel を要素としては指定するものの、内容を空欄としている点です。
AccountLevel、BucketLevel は必須項目のため、有料メトリクスは不要だからとこの部分のコード自体を削除すると、スタック作成時にエラーになってしまいます。
ここの書き方はちょっと感覚的ではないのでつまづく人も居そうです(私がそのひとり)。
以上、お役に立てば幸いです。
ご覧いただきありがとうございました。
参考情報
- https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/aws-resource-s3-storagelens.html
- https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-storagelensconfiguration.html
- https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-accountlevel.html
- https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-bucketlevel.html