我有一个一般的AWS问题。我已经开始使用AWS sdk,但看起来如果我想从AWS异步接收事件(例如:cloudwatch事件),lambda函数是唯一的方法。我想写一个简单的应用程序,为事件注册一个回调到AWS,但我找不到办法,直到现在,因为我不想使用lambda,我一直在从我的应用程序进行轮询。请告诉我,如果轮询是唯一的选择,或者是否有更好的方法可以在没有民意调查的情况下解决。
答案 0 :(得分:3)
使用cloudwatch events,您可以设置规则并触发许多不同的目标,包括您可以从EC2实例轮询的SQS队列。
Lambda肯定是一个受欢迎的端点,但基于docs,还有其他目标可以将事件发送到
答案 1 :(得分:3)
您可以将以下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的应用程序。