我在 53 号路线中有一个托管区域,并希望将hostzone对象的内容存储在 S3 中,但出现错误。我认为 Body 是正确的参数,但也许这是因为对象是 JSON 格式?import boto3import jsondef 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.........
1 回答
阿波罗的战车
TA贡献1862条经验 获得超6个赞
tkausl 在评论中回答了这个问题:
Looks like it returns a dict, so you need to json encode it manually before passing it to put_object
更新:
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
hostzone2=json.dumps(hostzone, ensure_ascii=False)
s3 = boto3.resource("s3")
s3.Bucket(bucket_name).put_object(Key=s3_path, Body=hostzone2)
allwork()
添加回答
举报
0/150
提交
取消