我想在向我的 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,但是步骤很简单
- 将您的 API 网关配置为代理集成,以便您的 Lambda 函数可以设置返回码(参见 Set up a Proxy Integration with a Proxy Resource 和 Serverless.com - Lambda Proxy Integration
- 将您的文件上传到您的 S3 存储桶
- 确保用户可以访问该文件。桶可以是公共(public)的,或者 通过 ACL(请参阅 Access Control List (ACL) Overview)或 IAM 进行受限访问。
- 使用正确的响应代码返回正确的响应。我不确定,但它可能类似于下面的有效载荷
{
statusCode: 302,
headers: {
'Location': 'Your URL',
}
}
关于amazon-web-services - 是否可以从 AWS lambda 向 S3 存储桶发出 302 重定向请求以触发下载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58947630/