image - 运行 AWS Lambda 函数后,如何将图像放回同一个 S3 存储桶中?

标签 image amazon-web-services amazon-s3 aws-lambda

我目前在 S3 中有两个存储桶 - 我们将它们称为 photosphotos-thumbnails。现在,当用户从我们的 iOS 应用程序上传图像时,我们直接将该照片上传到 photos 存储桶,这会触发 lambda 函数,将照片大小调整为缩略图并将缩略图上传到 照片缩略图存储桶。

现在,我想在原始存储桶 (photos) 中创建缩略图之前,对 photos 存储桶中的图像进行一些图像压缩。但是,如果我将压缩 lambda 函数设置为在 photos 存储桶中创建对象时触发,则它将陷入用户上传原始照片的永无止境的循环中,从而触发压缩并放回同一个桶中,再次触发压缩,等等。

有没有办法可以在它成为图像压缩的递归调用之前拦截它?或者是创建第三个存储桶的唯一方法?

最佳答案

第三个桶可能是最好的。如果你确实想使用同一个存储桶,只需选择一些标准来控制 photos 中的图像是否应该修改(可能是图像文件大小或其他),然后确保已经处理过一次的图像低于阈值。 lambda 仍然会运行两次,但第二次它会检查图像并发现它已经被处理过,因此不会再次处理它。据我所知,没有办法抑制 lambda 的第二次运行。

另一个选项可能是根据 how the object is created 进行过滤。 S3 中可以使用以下事件类型。使用一个用于用户上传的内容(也许是 POST?),另一个用于执行 lambda 的功能(也许是 PUT?)

  • s3:ObjectCreated:Put
  • s3:ObjectCreated:Post
  • s3:ObjectCreated:复制
  • s3:ObjectCreated:CompleteMultipartUpload

关于image - 运行 AWS Lambda 函数后,如何将图像放回同一个 S3 存储桶中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29174269/

相关文章:

php - 如何使用 SQLite 和 PHP 将图像保存到数据库?

python - 如何加载动画 GIF 并获取 Pygame 中的所有单独帧?

java - 如何在图片上写文字

javascript - 使用 Nodejs 编辑页面图像上传概念

python - 什么时候使用 dynamodb.client、dynamodb.resource 和 dynamodb.Table?

amazon-web-services - 续订时 AWS 托管证书的 ARN 是否会更改?

amazon-web-services - 如何获取 Alexa 语音服务注册码?

python - 您可以使用流而不是本地文件上传到S3吗?

javascript - 可以为AWS Javascript SDK为每个用户创建IAM对象吗?

javascript - 什么是 process.env.NODE_ENV