
[英]Creating an AWS lambda function to split pdf files in a s3 bucket
[英]Writing a lambda function to upload files to my S3 bucket
我正在尝试编写一个 lambda function 来将文件上传到我的 S3 存储桶。
我是编码新手,所以我不明白为什么这不起作用。
我得到 Body 的“KeyError”。 谁能解释这意味着什么以及如何修复我的代码?
提前致谢。
import base64
import boto3
import json
import uuid
s3 = boto3.client('s3')
def lambda_handler(event, context):
print(event)
response = s3.put_object(
Bucket='s3-bucket',
Key=str(uuid.uuid4()) + '.jpg',
Body=event.body,
)
image = response['Body'].read()
return {
'headers': {
"Content-Type": "image/jpg",
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Headers": "Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token",
"Access-Control-Allow-Methods": "*",
"Access-Control-Allow-Credentials": True,
},
'statusCode': 200,
'body': base64.b64encode(image).decode('utf-8'),
'isBase64Encoded': True
}
我尝试用 Body=event['body'] 或 Body = event('body') 替换 Body = event.body 但它仍然不起作用。
我希望我的 lambda function 能够将文件上传到我的 S3 存储桶。
如果失败,您对put_object
的调用将引发异常。 你可以抓住这个并做出相应的回应,例如:
import boto3
from botocore.exceptions import ClientError
def lambda_handler(event, context):
print(event)
try:
response = s3.put_object(
Bucket='s3-bucket',
Key=str(uuid.uuid4()) + '.jpg',
Body=event.body)
return {
'headers': { ... },
'statusCode': 200
}
except ClientError as e:
print("Error from put_object:", event)
return {
'headers': { ... },
'statusCode': 500
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.