Amazon S3 Storage Lens を AWS CLI で触ってみる
2020-11-21先日、 Amazon S3 Storage Lens というサービス (機能) がリリースされました。これは S3 のオブジェクトストレージ使用状況などを可視化できるサービスです。今回はその Amazon S3 Storage Lens を AWS CLI を使って触ってみます。
目次
Amazon S3 Storage Lens とは
Amazon S3 Storage Lens について、公式ドキュメントでは次のように書かれています。
Amazon S3 Storage Lens provides a single view of object storage usage and activity across your Amazon S3 storage. With drill-down options to generate insights at the organization, account, bucket, object, or even prefix level. S3 Storage Lens analyzes storage metrics to deliver contextual recommendations to help optimize storage costs and apply best practices on data protection.
Using Amazon S3 Storage Lens - Amazon Simple Storage Service
内容を翻訳して要約すると、 Amazon S3 のストレージ使用状況、アクティビティに関する様々な情報をダッシュボードで表示できるサービスです。 AWS Organizations にも対応しており、 Organizations に所属している AWS アカウントの情報も表示することができます。
詳細についてはクラメソさんのブログで既に紹介されています。
まだ日本語のドキュメントは用意されていないようですが、英語では下記のドキュメントを参照してください。
AWS CLI で触ってみる
では、早速 AWS CLI を使って Amazon S3 Storage Lens を操作してみます。AWS CLI の v1 と v2 それぞれの最新バージョンは、2020/11/21 時点で 1.18.183
と 2.1.3
となっています。
(aws-cli-v1) $ aws --version
aws-cli/1.18.183 Python/3.8.5 Darwin/19.6.0 botocore/1.19.23
$ aws --version
aws-cli/2.1.3 Python/3.7.4 Darwin/19.6.0 exe/x86_64
以降のコマンドは 2.1.3
で実行した結果です。
Storage Lens に関連するコマンド
Amazon S3 Storage Lens に関する AWS CLI のコマンドは s3control
に含まれています。
$ aws s3control help | grep storage-lens
o delete-storage-lens-configuration
o delete-storage-lens-configuration-tagging
o get-storage-lens-configuration
o get-storage-lens-configuration-tagging
o list-storage-lens-configurations
o put-storage-lens-configuration
o put-storage-lens-configuration-tagging
既存の情報を取得してみる
Amazon S3 Storage Lens ではダッシュボードを作成して S3 に関する情報を可視化するのですが、デフォルトでバージニア北部 (us-east-1
) に一つダッシュボードが作成されています。なので、まずはその情報を取得してみます。
list-storage-lens-configurations
まずは list-storage-lens-configurations
です。
$ aws s3control list-storage-lens-configurations help
...
SYNOPSIS
list-storage-lens-configurations
--account-id <value>
[--next-token <value>]
[--cli-input-json <value>]
[--generate-cli-skeleton <value>]
--account-id
のみが必須のパラメータになっています。実際に実行してみますが、 アカウント ID についても CLI で取得しておきます。
$ AWS_ACCOUNT_ID=$( \
aws sts get-caller-identity \
--query 'Account' \
--output text \
)
$ aws s3control list-storage-lens-configurations \
--account-id ${AWS_ACCOUNT_ID} \
--region us-east-1
{
"StorageLensConfigurationList": [
{
"Id": "default-account-dashboard",
"StorageLensArn": "arn:aws:s3:us-east-1:************:storage-lens/default-account-dashboard",
"HomeRegion": "us-east-1",
"IsEnabled": true
}
]
}
get-storage-lens-configuration
ダッシュボードの詳細情報を取得するには get-storage-lens-configuration
コマンドを使います。
$ aws s3control get-storage-lens-configuration help
...
SYNOPSIS
get-storage-lens-configuration
--config-id <value>
--account-id <value>
[--cli-input-json <value>]
[--generate-cli-skeleton <value>]
--config-id
と --account-id
が必須パラメータになっています。 --config-id
には先ほど取得した StorageLensConfigurationList[0].Id
の値を指定します。
$ aws s3control get-storage-lens-configuration \
--account-id ${AWS_ACCOUNT_ID} \
--config-id default-account-dashboard \
--region us-east-1
{
"StorageLensConfiguration": {
"Id": "default-account-dashboard",
"AccountLevel": {
"BucketLevel": {}
},
"IsEnabled": true,
"StorageLensArn": "arn:aws:s3:us-east-1:************:storage-lens/default-account-dashboard"
}
}
デフォルトのダッシュボードということもあってあまり情報がありません。
get-storage-lens-configuration-tagging
ダッシュボードに対して付与されたタグ情報を取得するには get-storage-lens-configuration-tagging
コマンドを使います。
$ aws s3control get-storage-lens-configuration-tagging help
...
SYNOPSIS
get-storage-lens-configuration-tagging
--config-id <value>
--account-id <value>
[--cli-input-json <value>]
[--generate-cli-skeleton <value>]
get-storage-lens-configuration
と同じく --config-id
と --account-id
が必須パラメータになっているので、それぞれ先ほどと同じ値を指定して実行してみます。
$ aws s3control get-storage-lens-configuration-tagging \
--account-id ${AWS_ACCOUNT_ID} \
--config-id default-account-dashboard \
--region us-east-1
{
"Tags": []
}
タグがついてないので空の情報です。
デフォルトのダッシュボードでは StorageLensConfiguration
の情報が乏しかったので、実際にはにどんな情報が含まれるのか調べてみます。
StorageLensConfiguration の内容
デフォルトのダッシュボードでは内容が乏しかったですが、実際にはどんな情報 (設定項目) が含まれるのか、 put-storage-lens-configuration
の --generate-cli-skeleton
で確認してみます。
$ aws s3control put-storage-lens-configuration \
--generate-cli-skeleton
{
"ConfigId": "",
"AccountId": "",
"StorageLensConfiguration": {
"Id": "",
"AccountLevel": {
"ActivityMetrics": {
"IsEnabled": true
},
"BucketLevel": {
"ActivityMetrics": {
"IsEnabled": true
},
"PrefixLevel": {
"StorageMetrics": {
"IsEnabled": true,
"SelectionCriteria": {
"Delimiter": "",
"MaxDepth": 0,
"MinStorageBytesPercentage": null
}
}
}
}
},
"Include": {
"Buckets": [
""
],
"Regions": [
""
]
},
"Exclude": {
"Buckets": [
""
],
"Regions": [
""
]
},
"DataExport": {
"S3BucketDestination": {
"Format": "Parquet",
"OutputSchemaVersion": "V_1",
"AccountId": "",
"Arn": "",
"Prefix": "",
"Encryption": {
"SSES3": {},
"SSEKMS": {
"KeyId": ""
}
}
}
},
"IsEnabled": true,
"AwsOrg": {
"Arn": ""
},
"StorageLensArn": ""
},
"Tags": [
{
"Key": "",
"Value": ""
}
]
}
色んな情報 (設定項目) がありますが、コストが発生するかどうかという観点では、下記の項目に注意が必要です。
- AccountLevel
- ActivityMetrics
- IsEnabled
- BucketLevel
- ActivityMetrics
- IsEnabled
- PrefixLevel
- StorageMetrics
- IsEnabled
- StorageMetrics
- ActivityMetrics
- ActivityMetrics
上記の各 IsEnabled
には true
または false
を指定しますが、それぞれのメトリクスの取得は有料となるので、無料で Storage Lens を使いたい場合は false
を指定します。
StorageLensConfiguration.AccountLevel.DataExport
では、取得したメトリクスのデータを指定した S3 バケットに出力することができます。
ダッシュボードを作成する
続いては、 AWS CLI を使って Storage Lens のダッシュボードを作成してみます。使用するコマンドは put-storage-lens-configuration
です。
$ aws s3control put-storage-lens-configuration help
...
SYNOPSIS
put-storage-lens-configuration
--config-id <value>
--account-id <value>
--storage-lens-configuration <value>
[--tags <value>]
[--cli-input-json | --cli-input-yaml]
[--generate-cli-skeleton <value>]
今回は、無料で使えるダッシュボードを作成してみます。設定項目の概要としては下記のとおりです。
- メトリクスは無料で取得できる使用率メトリクス () のみ
- 対象のリージョンは 東京
ap-northeast-1
- データは S3 バケットにエクスポート
以上の要件を満たすダッシュボードを作成するために、次のような JSON を config.json
という名前で作成します。
{
"Id": "free-dashboard-sample",
"AccountLevel": {
"BucketLevel": {}
},
"Include": {
"Regions": [
"ap-northeast-1"
]
},
"DataExport": {
"S3BucketDestination": {
"Format": "Parquet",
"OutputSchemaVersion": "V_1",
"AccountId": "************",
"Arn": "arn:aws:s3:::storage-lens-export-************"
}
},
"IsEnabled": true
}
ダッシュボードを作成します。
$ aws s3control put-storage-lens-configuration \
--account-id ${AWS_ACCOUNT_ID} \
--config-id free-dashboard-sample \
--storage-lens-configuration file://config.json \
--region ap-northeast-1
実行後、特に出力はないので、 get-storage-lens
コマンドで正しく作成されていることを確認します。
$ aws s3control get-storage-lens-configuration \
--account-id ${AWS_ACCOUNT_ID} \
--config-id free-dashboard-sample \
--region ap-northeast-1
{
"StorageLensConfiguration": {
"Id": "free-dashboard-sample",
"AccountLevel": {
"BucketLevel": {}
},
"Include": {
"Regions": [
"ap-northeast-1"
]
},
"DataExport": {
"S3BucketDestination": {
"Format": "Parquet",
"OutputSchemaVersion": "V_1",
"AccountId": "************",
"Arn": "arn:aws:s3:::storage-lens-export-************"
}
},
"IsEnabled": true,
"StorageLensArn": "arn:aws:s3:ap-northeast-1:************:storage-lens/free-dashboard-sample"
}
}
マネジメントコンソール上では次のような形で設定を確認することができます。
まとめ
Amazon S3 Storage Lens を AWS CLI で触ってみた話でした。
re:Invent 前で怒涛のアップデート、新サービス・新機能の登場が続いていますが、AWS CLI ではほぼすぐにそれらのサービスを触ることができるようです。このあたりの対応スピードはすごいですね。
ただ、今回の Amazon S3 Storage Lens では v2 よりも v1 のほうが反映が早かったようです。(v1 は 1.18.181
で対応していましたが、その時の v2 の最新であった 2.1.2
では使えませんでした)
前に DynamoDB のリージョン間リストアが発表された際も、 v2 の対応は v1 よりもしばらくあとでした。
新サービス・新機能が出た際には、まずは v1 で試すのが良さそうです。
comments powered by Disqus