AWS Lambda - S3 put_object 参数正文的无效类型

我在 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.........


慕桂英4014372
浏览 269回答 1
1回答

阿波罗的战车

tkausl 在评论中回答了这个问题:Looks like it returns a dict, so you need to json encode it manually before passing it to put_object 更新:import boto3import jsondef allwork():client = boto3.client('route53')hostzone = client.list_hosted_zones()bucket_name = "testlambda"file_name = "r53data.txt"lambda_path = "/tmp/" + file_names3_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()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python