在s3存储桶中为对象生成预签名的url,并在aws lambda

时间:2019-07-03 12:22:36

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

我正面临一个无法解决的问题。我希望生成一个预先签名的URL,并在该URL的前端重定向用户,以便他可以下载文件。因此,我在lambda函数上又添加了一个触发器,那就是API网关。这是我的代码:

import os
import boto3

def lambda_handler(event, context):
  url = ""
  for record in event['Records']:
      bucket = record['s3']['bucket']['name']
      file_key = record['s3']['object']['key']
      uri_duration = 90
      s3Client = boto3.client('s3')
      url = s3Client.generate_presigned_url('get_object', Params = 
      {'Bucket': bucket, 
     'Key': file_key}, 
      ExpiresIn = uri_duration)
      print(url)
  return {"location": url }

该代码应该将预签名的url保存在“位置”中,然后将其映射到API。问题是,在调试之后,我意识到此函数每次由API网关或从s3存储桶调用时都会运行一次。因此,我想问是否有人知道是否可以生成预签名的url,并以其他方式进行301重定向?抱歉,如果我的问题很明显,我是AWS的新手

0 个答案:

没有答案