Amazon s3 直接在EC2实例上订阅S3 bucket notifications SNS主题

Amazon s3 直接在EC2实例上订阅S3 bucket notifications SNS主题,amazon-s3,amazon-ec2,amazon-sqs,amazon-sns,aws-cli,Amazon S3,Amazon Ec2,Amazon Sqs,Amazon Sns,Aws Cli,我想在EC2实例上直接订阅一个S3 bucket notifications SNS主题,在这个实例中,我有一个正在运行的脚本正在侦听S3 bucket更新事件 我想我需要做: aws sns subscribe --topic-arn [ARN of S3 bucket update topic] --protocol [email, email-json, http, https, or sqs] 在这种情况下,什么协议才有意义?要回答您的问题,您需要在ec2实例上有一个端点,该端点可以接

我想在EC2实例上直接订阅一个S3 bucket notifications SNS主题,在这个实例中,我有一个正在运行的脚本正在侦听S3 bucket更新事件

我想我需要做:

aws sns subscribe --topic-arn [ARN of S3 bucket update topic] --protocol [email, email-json, http, https, or sqs]

在这种情况下,什么协议才有意义?

要回答您的问题,您需要在ec2实例上有一个端点,该端点可以接收和处理来自SNS的消息,因此协议将是
http
https
(取决于您在ec2实例上如何设置服务器)。您可以在中阅读更多关于此的信息

请务必注意您是如何编写脚本的,但如果它使用python/java/javascript或lambda支持的任何东西,则最好将代码部署在lambda函数中,并将消息发送到此lambda,您只需在其执行时付款(在另一种情况下,您的ec2实例需要始终启动并运行以侦听消息)。
lambda
是sns订阅的受支持协议

第三个选项是在图中引入SQS,您将在异步模式下运行(取决于您的需求,如果它是一个选项或不是)
您可以选择
sqs
作为SNS消息的协议值(阅读了解更多信息),并且需要ec2 Web服务在sqs队列中拾取消息

谢谢。ec2(而不是Lambda)的原因是什么因为我有一个web服务在EC2实例上持续运行,并且需要订阅S3 bucket update事件,这样脚本(它还不存在,但可能是bash或python脚本)就可以从S3下载更新的文件“需要在ec2实例上有一个端点,可以接收和处理来自SNS的消息",您能详细说明一下吗?端点,您的意思是我需要在EC2实例上运行一个单独的服务器,纯粹是为了提供一种从SNS接收HTTP/S消息的方法吗?理想情况下,如果可能的话,我希望避免这种情况。我所需要的只是让我的脚本订阅SNS事件,然后在S3存储桶更新时侦听事件。是否有没有简单的方法可以做到这一点?SQS在这里可以帮助吗?当使用http/s协议进行sns订阅时,您需要有一个端点可用(在您的ec2实例上),该端点能够处理sns使用的http POST请求(您可以在我提供的链接中阅读更多内容)如果您的web服务已经可以做到这一点,那么就可以了。如果您不想在ec2实例上直接使用端点,您也可以将sqs放在图片中。您可以选择
sqs
作为SNS消息的协议值(阅读了解更多信息)您需要ec2 Web服务来选择sqs队列中的消息。这取决于您正在构建的系统类型,如果您有http/s协议,您正在构建一个同步系统,因此您在s3中有一个更改,sns直接将其发送到您的ec2端点,然后您对其进行处理。使用图中的sqs,您是异步模式,在s3中更新,消息put在队列中,然后队列将被处理。有优点和缺点,您需要根据您的要求来决定