我编写了一个函数,为我创建一个报告并将其上传到S3。但是,我在用内容填充CSV文件时遇到了问题。在这里您可以看到代码:
import boto3
import re
import csv
def lambda_handler(event,context):
client = boto3.client('ce')
response = client.get_cost_and_usage(
TimePeriod={
'Start': "2019-05-15",
'End': "2019-07-05"
},
Granularity='MONTHLY',
Metrics=['BlendedCost'],
GroupBy=[
{
'Type': 'TAG',
'Key': 'Project'
},
]
)
csv_testerinho = csv.writer(open("/tmp/csv_testerinho.csv", "w+"))
csv_testerinho.writerow(["Account Name", "Month", "Cost"])
#writing rows in csv
for detail in response:
csv_testerinho.writerow([response['Start'],
response['End'],
response['BlendedCost']
])
client = boto3.client('s3')
client.upload_file('/tmp/csv_testerinho.csv', 'bucket_name','final_testerinho.csv')
执行代码时,出现以下错误:
Response:
{
"errorMessage": "'Start'",
"errorType": "KeyError",
"stackTrace":
}
我要怎么做才能用通过API获得的信息填充CSV?你知道吗
您应该使用以下方法检索开始和结束时间,其中n是
ResultsByTime
列表的索引:或者你可以写:
因此,将此应用于代码:
您将需要再次检查我是如何检索和汇总混合成本的,因为解决这个问题并不是很简单。如果打印出返回的
response
dict对象,您将看到它包含的内容。你知道吗顺便说一句,你似乎正在写列标题帐户名称,月份和成本,但写行包含开始时间,结束时间和成本,这看起来是一个问题。你知道吗
有关响应的更多详细信息,请参见get_cost_and_usage reference。你知道吗
相关问题 更多 >
编程相关推荐