gpt4 book ai didi

amazon-web-services - 我可以仅在 SQS 中的消息计数达到目标值时触发 lambda 吗?

转载 作者:行者123 更新时间:2023-12-01 10:19:51 24 4
gpt4 key购买 nike

我正在编写 AWS Lambda 以从 SQS 读取消息,然后在过滤后将一些消息保存到 S3。由于 80% 的消息会被过滤掉,我决定为 100000 条 SQS 消息编写一次 S3。

是否可以仅在 SQS 中的消息达到 10000 时才触发 Lambda?

最佳答案

AWS CloudWatch 的帮助下是可能的.

您可以配置一个 AWS CloudWatch 警报,一旦您的 SQS 队列收到 100000 条可见消息,它就会触发“AlarmAction”。如果出现“警报”,您将通知 SNS 主题,然后触发您的 AWS Lambda。

如果您正在使用 AWS CloudFormation它可能如下所示:

AWSTemplateFormatVersion: 2010-09-09
Resources:
Queue:
Type: AWS::SQS::Queue

QueueVisibleMessagesTopic:
Type: AWS::SNS::Topic

LambdaExecutionRole:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Version: 2012-10-17
Statement:
- Effect: Allow
Principal:
Service: lambda.amazonaws.com
Action: sts:AssumeRole
ManagedPolicyArns:
- arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole

Lambda:
Type: AWS::Lambda::Function
Properties:
Handler: handler.index
Role: !GetAtt LambdaExecutionRole.Arn
Runtime: nodejs8.10
MemorySize: 128
Timeout: 10

LambdaSubscription:
Type: AWS::SNS::Subscription
Properties:
Endpoint: !GetAtt Lambda.Arn
Protocol: lambda
TopicArn: !Ref QueueVisibleMessagesTopic

LambdaSubscriptionPermissions:
Type: AWS::Lambda::Permission
Properties:
FunctionName: !GetAtt Lambda.Arn
Action: lambda:InvokeFunction
Principal: sns.amazonaws.com
SourceArn: !Ref QueueVisibleMessagesTopic

QueueVisibleMessagesAlarm:
Type: AWS::CloudWatch::Alarm
Properties:
Namespace: AWS/SQS
MetricName: ApproximateNumberOfMessagesVisible
Dimensions:
- Name: QueueName
Value: !GetAtt Queue.QueueName
Statistic: Sum
Period: 300
EvaluationPeriods: 1
ComparisonOperator: GreaterThanOrEqualToThreshold
Threshold: 100000
AlarmActions:
- !Ref QueueVisibleMessagesTopic

关于amazon-web-services - 我可以仅在 SQS 中的消息计数达到目标值时触发 lambda 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54089801/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com