JRR*_*JRR 3 python amazon-s3 amazon-web-services boto3 aws-lambda
我在路由 53 中有一个托管区域,并且希望将主机区域对象的内容存储在 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()
Run Code Online (Sandbox Code Playgroud)
这是错误:
module initialization error: Parameter validation failed:
Invalid type for parameter Body, value: {u'HostedZones':
[{u'ResourceRecordSetCount': 7, u'CallerReference': '814E3.........
Run Code Online (Sandbox Code Playgroud)
tkausl 在评论中回答了这个问题:
Looks like it returns a dict, so you need to json encode it manually before passing it to put_object
Run Code Online (Sandbox Code Playgroud)
更新:
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()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9230 次 |
| 最近记录: |