是否可以从AWS lambda向S3 bucket发出302重定向请求以触发下载



当对我的API网关+Lambda设置发出POST请求时,我想触发下载。我读到这是通过将文件转换为base64来完成的。但是,是否可以将文件写入S3存储桶并触发重定向?

import boto3
s3 = boto3.client('s3')
def main(event, context):
s3.upload_file(PATH,BUCKET_NAME,FILE_NAME)
# Make file accessable via URL and return redirect

确实如此!我不擅长Python,但步骤相当简单

  1. 将API网关配置为代理集成,以便Lambda函数可以设置返回代码(请参阅使用代理资源设置代理集成和Serverless.com-Lambda代理集成
  2. 将文件上传到S3存储桶
  3. 请确保用户可以访问该文件。bucket可以是公共的,或者通过ACL(请参阅访问控制列表(ACL(概述(或IAM进行受限访问
  4. 使用正确的响应代码返回正确的响应。我不确定,但它可能与下面的有效载荷相似
{
statusCode: 302,
headers: {
'Location': 'Your URL',
}
}