【发布时间】:2018-11-11 12:53:05
【问题描述】:
我在路由 53 中有一个托管区域,并希望将 hostzone 对象的内容存储在 S3 中,但出现错误。我在想 Body 是正确的参数,但也许这是因为对象是 JSON 格式?
import boto3
import json
def allwork():
client = boto3.client('route53')
hostzone = client.list_hosted_zones()
bucket_name = "testlambda"
file_name = "r53data.txt"
lambda_path = "/tmp/" + file_name
s3_path = "10102018/" + file_name
s3 = boto3.resource("s3")
s3.Bucket(bucket_name).put_object(Key=s3_path, Body=hostzone)
allwork()
这是错误:
module initialization error: Parameter validation failed:
Invalid type for parameter Body, value: {u'HostedZones':
[{u'ResourceRecordSetCount': 7, u'CallerReference': '814E3.........
【问题讨论】:
-
你确定这是 JSON 格式而不是对象吗?
-
不是 100%,在这里查看文档:boto3.amazonaws.com/v1/documentation/api/latest/reference/…
-
看起来它返回一个dict,所以你需要在将它传递给put_object之前手动对其进行json编码。
-
感谢它的工作,更新以包括您的推荐!
标签: python amazon-web-services amazon-s3 aws-lambda boto3