amazon-web-services - 是否可以从 AWS lambda 向 S3 存储桶发出 302 重定向请求以触发下载?

标签 amazon-web-services amazon-s3 aws-lambda aws-api-gateway

我想在向我的 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 函数可以设置返回码(参见 Set up a Proxy Integration with a Proxy ResourceServerless.com - Lambda Proxy Integration
  2. 将您的文件上传到您的 S3 存储桶
  3. 确保用户可以访问该文件。桶可以是公共(public)的,或者 通过 ACL(请参阅 Access Control List (ACL) Overview)或 IAM 进行受限访问。
  4. 使用正确的响应代码返回正确的响应。我不确定,但它可能类似于下面的有效载荷
{
    statusCode: 302,
    headers: {
      'Location': 'Your URL',
    }
}

关于amazon-web-services - 是否可以从 AWS lambda 向 S3 存储桶发出 302 重定向请求以触发下载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58947630/

相关文章:

amazon-s3 - 使用 AWS Lambda 在 S3 中连接文件

javascript - 在 AWS Lambda 中使用 NodeJS 将 Woocommerce API 函数更改为异步/等待

firebase - 亚马逊 Lambda 到 Firebase

amazon-web-services - Amazon DynamoDB 原子写入

linux - Startx 和 VNC 无法在 AWS Lightsail CentOS7 上运行

php - AWS 创建 POST 策略 base64 编码 + 签名

amazon-web-services - 当从 S3 读取时,为什么我的 LZO 索引在 Amazon EMR 上需要很长时间?

java - 将 SpringCloud Finchley 升级到 RELEASE 时缺少 AmazonS3Client Bean

ruby-on-rails - 如何在 ruby​​ on rails 中使用 aws-s3 或 aws-sdk gem 跨存储桶复制文件

Java - 从 url 读取页面源返回未知字符