JSON出力を作成する私は以下のコードがあります。Boto3
import boto3
import datetime
import json
now = datetime.datetime.now()
cw = boto3.client('cloudwatch', region_name='sa-east-1')
s3client = boto3.client('s3')
# Get a list of all buckets
allbuckets = s3client.list_buckets()
# Iterate through each bucket
for bucket in allbuckets['Buckets']:
# For each bucket item, look up the cooresponding metrics from CloudWatch
response = cw.get_metric_statistics(Namespace='AWS/S3',
MetricName='BucketSizeBytes',
Dimensions=[
{'Name': 'BucketName', 'Value': bucket['Name']},
{'Name': 'StorageType', 'Value': 'StandardStorage'},
],
Statistics=['Average'],
Period=3600,
StartTime=(now-datetime.timedelta(days=2)).isoformat(),
EndTime=now.isoformat()
)
for item in response["Datapoints"]:
data = {}
data['data'] = []
data['data'].append ({'#BUCKET_NAME': bucket["Name"]})
json_str = json.dumps(data)
print json_str
出力は次のとおりです。
{"data": [{"#BUCKET_NAME": "bucket1"}]}
{"data": [{"#BUCKET_NAME": "bucket2"}]}
{"data": [{"#BUCKET_NAME": "bucket3"}]}
{"data": [{"#BUCKET_NAME": "bucket4"}]}
が、私は次の形式で出力を必要とする:
{"data":[{"{#BUCKET_NAME}":"bucket1"},{"{#BUCKET_NAME}":"bucket2"},
{"{#BUCKET_NAME}":"bucket3"},{"{#BUCKET_NAME}":"bucket4"}]}
私を間違っている?
最後の 'for'ループで' item'を使用していません。コードが正しいと確信していますか?どのようにその出力を取得していますか? – helloV
はい...コードが実行されています。出力は "print json_str"です。 json_stringをテストしてファイルとファイルに書き込むと、同じ結果が得られます。 –
あなたはデータポイントを取得していないことを理解していますか、バケット名を取得しています。 – helloV