AWS - 有没有一种方法可以在没有lambda的情况下异步接收事件

时间:2017-12-07 20:57:58

标签: amazon-web-services aws-lambda aws-sdk

我有一个一般的AWS问题。我已经开始使用AWS sdk,但看起来如果我想从AWS异步接收事件(例如:cloudwatch事件),lambda函数是唯一的方法。我想写一个简单的应用程序,为事件注册一个回调到AWS,但我找不到办法,直到现在,因为我不想使用lambda,我一直在从我的应用程序进行轮询。请告诉我,如果轮询是唯一的选择,或者是否有更好的方法可以在没有民意调查的情况下解决。

3 个答案:

答案 0 :(得分:3)

使用cloudwatch events,您可以设置规则并触发许多不同的目标,包括您可以从EC2实例轮询的SQS队列。

Lambda肯定是一个受欢迎的端点,但基于docs,还有其他目标可以将事件发送到

答案 1 :(得分:3)

来自the documentation

您可以将以下AWS服务配置为CloudWatch Events的目标:

Amazon EC2 instances
AWS Lambda functions
Streams in Amazon Kinesis Streams
Delivery streams in Amazon Kinesis Firehose
Amazon ECS tasks
SSM Run Command
SSM Automation
Step Functions state machines
Pipelines in AWS CodePipeline
Amazon Inspector assessment templates
Amazon SNS topics
Amazon SQS queues
Built-in targets
The default event bus of another AWS account

很多不仅仅是Lambda,所以我不确定你为什么在你的问题中声明Lambda是唯一的选择。 Amazon SNS topics#include <ctime> static double const TIME_EXPIRED = 120.0; // seconds void removeExpired() { while ( ! myList.empty() ) { double secondsElapsed = difftime(time(), myStructInList.entryTime); if (secondsElapsed > TIME_EXPIRED) { // remove element } } } 的选项都为亚马逊提供了一种方法,可以将事件“推送”到您的服务中,而不是要求您的服务进行投票。

答案 2 :(得分:2)

上述答案可能也有帮助,但解决问题的可能方法之一也可能就是其中之一。

您可以使用AWS SNS服务订阅AWS资源上的事件。并且SNS可以将事件发布到您的应用程序端点。这不过是pub / sub模型。

请参阅此链接http://docs.aws.amazon.com/sns/latest/api/API_Subscribe.html

终点可以是基于http或https的应用程序。