【发布时间】:2019-06-14 21:11:58
【问题描述】:
我在 Python 中创建了一个 lambda(使用无服务器),它将由 SQS 消息触发。
handler.py
s3 = boto3.resource('s3')
def process(event, context):
response = None
# for record in event['Records']:
record = event['Records'][0]
message = dict()
try:
message = json.loads(record['body'])
s3.meta.client.download_file(const.bucket_name, 'class/raw/photo/' + message['photo_name'], const.raw_filepath + message['photo_name'])
...
response = {
"statusCode": 200,
"body": json.dumps(event)
}
except Exception as ex:
error_msg = 'JOB_MSG: {}, EXCEPTION: {}'.format(message, ex)
logging.error(error_msg)
response = {
"statusCode": 500,
"body": json.dumps(ex)
}
return response
const.py
bucket_name = 'test'
raw_filepath = '/var/task/raw/'
我创建了一个文件夹“raw”,与文件 handler.py 处于同一级别,然后部署无服务器 lambda。
触发 lambda 时出现错误(来自 CloudWatch)。
No such file or directory: u'/var/task/raw/Student001.JPG.94BBBAce'
据我了解,无法访问 lambda 文件夹或无法在 lambda 中创建文件夹。
就最佳实践而言,我分享 lambda 的目标:
- 下载 S3 原始文件
- 调整文件大小并将新文件上传到另一个 S3 存储桶
欢迎提出任何建议。
【问题讨论】:
标签: python aws-lambda boto3 serverless-framework