当我使用 s3 presign url upload 上传文件时,AWS lambda 触发器不起作用

问题描述 投票:0回答:1

我制作了一个在 S3 文件上传时触发的 lambda 函数。

每当我手动上传文件时,lambda 触发器似乎都在工作。但是,当我使用 S3 预签名 URL(使用 API Gateway 和另一个 lambda 函数)将文件上传到 S3 存储桶时,即使文件已成功上传到 S3 存储桶,Lambda 触发器也不会被触发。

我确定 Lambda 是否需要更高的权限才能在预签名 URL 上传或其他操作时触发并处理文件。

amazon-web-services amazon-s3 aws-lambda aws-api-gateway pre-signed-url
1个回答
0
投票

我通过更改用于生成 s3 预签名 URL 的文件名字符找到了一个非常类似问题的解决方案:

我的目标是使用 AWS API 将文件上传到 s3,并在完成后调用 lambda 函数。

当我使用控制台将文件添加到 s3 存储桶时,lambda 函数正在工作。

当我使用 API 将文件添加到 s3 存储桶时,lambda 函数会正确触发,但随后生成错误:“调用 HeadObject 操作时发生错误 (403):禁止”

我在此官方 AWS 资源页面上使用了 python lambda 代码。

我发现文件名中的任何“空格”字符在 API 调用中都被 url 编码为“%20”,而这些字符又被 python lambda 代码替换为“+”字符。文件名中的“+”字符导致 lambda 函数生成 403 禁止响应。

删除文件名中的空格字符解决了我的问题。

© www.soinside.com 2019 - 2024. All rights reserved.