[英]Uploading an XML file to a s3 bucket with boto3
我正在尝试使用 lambda function 和 HTTP 请求将 XML 文件上传到 AWS 的 s3 存储桶。 主要问题是我无法转换由 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 function 的定义可能看起来像这样。
def download_lambda(event, context):
url = event['url']
bucket = event['bucket_name']
key = event['key']
download_url(url, bucket_name=bucket, key=key)
然后下载 function 可能看起来像这样。 我使用 multi-part 来处理大文件。
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)
很明显,根据马克的观点,我在这里没有处理任何 XML 转换。 您需要在阅读文件时弄清楚这一点。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.