バケットによってサイズメトリクスが取得できない

0

S3を試用レベルで使っています。
バケットごとの使用量をAPI等で取得したいと思って調べています。aws s3 ls --recursive コマンドでも取得できますが、オブジェクト数が増えると処理時間がかかりそうなこと、1日ごとの値が取得できれば十分(リアルタイムでなくても良い)、ということから、CloudWatch のメトリクスを取得したいと思っています。

しかしながら、どのような方法を使っても、4つあるバケットのうち1つについてしかメトリクスを取得することができません。バケットの作り方が悪いのか、取得しようとしている方法が悪いのかわからないので、教えていただけると助かります。

バケット一覧
$ aws s3 ls
2018-10-05 17:19:07 samplebucket.owncloud01 → メトリクスを取得できる
2018-11-30 10:06:27 samplebucket.test01 → 取得不可
2018-07-26 16:23:53 samplebucketaws01 → 取得不可
2018-11-27 20:36:30 samplebucketaws02 → 取得不可
※samplebucketの部分はいわゆる伏せ字です
※バケットは4つとも us-east-1 に作成されています

aws s3 ls --recursive を使ったシェルスクリプトでは、全てのバケットの使用量が取得できました。
samplebucket.owncloud01 TotalObjects:3 TotalSize:3.7MiB
samplebucket.test01 Objects:0 Size:0Bytes
samplebucketaws01 Objects:2 Size:24.5MiB
samplebucketaws02 Objects:1 Size:25.0MiB

バケット設定のプロパティ(全てオフ)や、アクセス制限のパブリックアクセス設定、アクセスコントロールリスト、バケットポリシー、CORSの設定等は、全て同じでした。

サイズメトリクスは1日1回更新されるということなので、新しいバケットのメトリクスが取得できないのはわかりますが、もっと前に作成したバケットの情報が取得できない状況になっています。

(1)ブラウザのS3コンソール
メトリクスを取得できるバケットについてはグラフ等が表示されます。
取得できないバケットについては「ストレージに対して現在利用可能なメトリクスはありません」と表示されます。
メトリクス設定は「ストレージのメトリクス(free)」がデフォルトで選択済みになっていて、むしろ解除できない状態でした。

(2)CloudWatch
利用可能なストレージメトリクスとして、取得できるバケットの BucketSizeBytes と NumberOfObjects の2個が表示されます。他のバケットについては選択肢に出てきません。

(3)aws cli
メトリクスを取得できるバケット(samplebucket.owncloud01)とできないバケット(samplebucketaws01)を比較したところ下記のような感じでした。

メトリクスを取得できるバケット(samplebucket.owncloud01)
$ aws cloudwatch get-metric-statistics --region us-east-1 --namespace AWS/S3 --metric-name BucketSizeBytes --dimensions Name=BucketName,Value=samplebucket.owncloud01 Name=StorageType,Value=StandardStorage --statistics Sum --start-time 2018-10-31T00:00:00Z --end-time 2018-10-31T23:59:59Z --period 86400
{
"Datapoints": [
{
"Timestamp": "2018-10-31T00:00:00Z",
"Sum": 3850058.0,
"Unit": "Bytes"
}
],
"Label": "BucketSizeBytes"
}
※情報が返される

メトリクスを取得できないバケット(samplebucketaws01)
$ aws cloudwatch get-metric-statistics --region us-east-1 --namespace AWS/S3 --metric-name BucketSizeBytes --dimensions Name=BucketName,Value=samplebucketaws01 Name=StorageType,Value=StandardStorage --statistics Sum --start-time 2018-10-31T00:00:00Z --end-time 2018-10-31T23:59:59Z --period 86400
{
"Datapoints": [],
"Label": "BucketSizeBytes"
}
※情報が返されない

※aws コマンドに --debug オプションを指定して情報を比較しましたが両者に特に違いはありませんでした。

gefragt vor 5 Jahren303 Aufrufe
3 Antworten
0

(2)CloudWatch
利用可能なストレージメトリクスとして、取得できるバケットの BucketSizeBytes と NumberOfObjects の2個が表示されます。他のバケットについては選択肢に出てきません。

作成されたバケットのリージョンは全て us-east-1 でしょうか?
リージョンを切り替えても選択肢は表示されないでしょうか?

semnil
beantwortet vor 5 Jahren
0

返信ありがとうございます。

リージョンについては、aws s3api get-bucket-location --bucketname で取得すると4つとも null が返されてきます。null というのは us-east-1 を指していると解釈しています。他のリージョン(us-east-2, us-west-1, us-west-2)を試してみましたが、1件も表示されませんでした。

先週の金曜日(2018/11/30)にフォーラムに投稿し、今日(2018/12/03)まで設定等何も変えていませんが、CloudWatch のメトリクス一覧に他の2つのバケットも名前が表示されるようになりました(リージョンは全て us-east-1)。表示されたバケットの作成日は 2018/07/26 と 2018/11/27 なので、バケット作成後一定期間が経過したから云々という説明は合わない気がします。

CloudWatch のリストに表示されるのですがグラフがうまく表示されないのであれこれ試してみたところ、新しく表示されるようになった2つのバケットのメトリクスは 2018/11/30 05:00 UTC ~ 2018/12/01 05:00 UTC までの24時間しかグラフが表示されず、それ以外のデータは無いようです。
aws コマンドからも、その期間に合うような期間設定をするとデータを取得することができました。

AWS なんだからそんなもの、ということなんでしょうか。何か設定等で回避できるものでしょうか。AWS のドキュメントをすべて読んだわけではないので見落としがあるかもしれませんが、何かご意見がありましたらいただければありがたいです。

beantwortet vor 5 Jahren
0

ありがとうございます。同じようなタイミングで、こちらでも値を参照できない期間があったのですが、12/7 02:00JST 時点でもう一度確認してみたところ問題なく表示できているように見えます。
それからこのメトリクスはデータの取得間隔が日単位と広く、タイミングによっては値が取得できない可能性があるかもしれません。

あくまで憶測ですが、re:Invent 2018 の開催時期と重なるためリリースラッシュに伴う不具合が発生していた可能性もあるかもしれません。

semnil
beantwortet vor 5 Jahren

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen