为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕桂英4014372 2021-08-14 16:43:44
我在 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()


查看完整回答
反对 回复 2021-08-14
  • 1 回答
  • 0 关注
  • 256 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信