用boto3上传XML文件到s3桶



我试图将XML文件上传到AWS的s3桶中,使用lambda函数和HTTP请求。主要的问题是我不能转换HTTP请求体传递的XML文件。

import json
import boto3
s3 = boto3.client('s3')
def lambda_handler(event, context):
bucket = 'xmlresultmarco'

fileName = 'Test'+'.xml'

uploadByteStream = event
try:
s3.put_object(Bucket = bucket, Key = fileName, Body = uploadByteStream )
return "Upload completed"

except Exception as e:
return e
raise e

有人能帮我吗?

下面是一些帮助您入门的代码。

lambda函数的定义可能是这样的:

def download_lambda(event, context):
url = event['url']
bucket = event['bucket_name']
key = event['key']
download_url(url, bucket_name=bucket, key=key)

那么下载函数可能看起来像这样。我使用多部分来满足大文件。

def download_url(url, bucket_name, key):
response = requests.get(url, stream=True)
response.raise_for_status()
assert response.status_code == 200
obj = s3.Object(bucket_name, key)
multi_part_upload = obj.initiate_multipart_upload()
partNo = 1
parts = []
default_chunk_size = 1024*1024*10 # Must be at least 5mb
for chunk in response.iter_content(chunk_size=default_chunk_size):
if chunk:
part = multi_part_upload.Part(partNo)
response = part.upload(Body=chunk)
parts.append({
'PartNumber': partNo,
'ETag': response['ETag']
})
partNo += 1
part_info = {}
part_info['Parts'] = parts
multi_part_upload.complete(MultipartUpload=part_info)

根据Mark的观点,显然我这里没有处理任何XML转换。您需要在读取文件时弄清楚这一点。

最新更新