在Amazon S3存储桶中完成上载后获取通知

时间:2015-09-04 04:46:49

标签: amazon-web-services amazon-s3

在S3 Bucket中完成上传后,有没有办法得到通知?要求是我需要在桶中完成视频上传后提供用户链接。默认情况下,我现在提供视频开始30分钟后的链接,无论视频上传5分钟还是40分钟。那么有什么方法可以提供上传已完成信息的任何API吗?

3 个答案:

答案 0 :(得分:11)

发生以下任何情况时,可以在Amazon S3中触发通知:

  • s3:ObjectCreated:*
  • s3:ObjectCreated:Put
  • s3:ObjectCreated:Post
  • s3:ObjectCreated:Copy
  • s3:ObjectCreated:CompleteMultipartUpload
  • s3:ObjectRemoved:*
  • s3:ObjectRemoved:Delete
  • s3:ObjectRemoved:DeleteMarkerCreated
  • s3:ReducedRedundancyLostObject

通知可以通过三个目的地发送:

  • 亚马逊简单通知服务(SNS),可以通过电子邮件,HTTP / S端点,短信,移动推送通知发送通知
  • 亚马逊简单排队服务(SQS)
  • 亚马逊Lambda (目前并非在所有地区都有)

请参阅:Configuring Amazon S3 Event Notifications

最合适的选择取决于您的编程偏好以及您的应用编写方式:

  • 使用SNS推送到HTTP端点以触发应用中的某些代码
  • 编写一些代码以定期检查SQS队列
  • 在Node.js或Java
  • 中编写Lambda函数

一旦触发,您的代码就需要确定谁上传了视频,检索其用户详细信息,然后向他们发送电子邮件通知。如果您控制正在上传的对象的密钥(文件名),这将是最简单的,因为这将有助于确定要通知的用户。

答案 1 :(得分:1)

当文件上传到S3时,您可以使用Amazon Lambda向Amazon SNS发布消息(或以任何其他方式通知您)。

  1. 为Lambda函数设置S3触发器。请参阅本教程:http://docs.aws.amazon.com/lambda/latest/dg/walkthrough-s3-events-adminuser.html

  2. 在Lambda函数中,发送通知。您可以使用SNS,SES,SQS等

答案 2 :(得分:0)

没有直接的方法可以判断S3存储桶中的上传是否完整。你可以做一件简单的事情,经过大量的研究,我已经遵循了它,并且工作正常。

按照此link并按照您的要求每隔30秒左右读取文件大小,当文件大小未更改为两个同时读数时再次检查保证的大小,因为它可能是由于两个同时读数的大小可能没有改变的网络拥塞。