tho*_*tam 5 amazon-sqs amazon-web-services amazon-cloudwatch aws-event-bridge
我正在尝试设置一个演示环境来尝试 SQS 作为 AWS 事件桥源。我尝试将一些文档上传到 SQS 以查看 Event Bridge 是否检测到任何更改,但我没有看到触发任何事件。如何使用 AWS Event Bridge 测试 SQS 作为源?
Resources:
Queue:
Type: AWS::SQS::Queue
Properties:
QueueName: !Sub ${AWS::StackName}
LambdaHandlerExecutionRole:
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
EventConsumerFunction:
Type: AWS::Lambda::Function
Properties:
Handler: index.lambda_handler
Role: !GetAtt LambdaHandlerExecutionRole.Arn
Code:
ZipFile: |
import json
def lambda_handler(event, context):
print("Received event: " + json.dumps(event, indent=2))
Runtime: python3.7
Timeout: 50
EventRule:
Type: AWS::Events::Rule
Properties:
Description: eventEventRule
State: ENABLED
EventPattern:
source:
- aws.sqs
resources:
- !GetAtt Queue.Arn
Targets:
- Arn: !GetAtt EventConsumerFunction.Arn
Id: EventConsumerFunctionTarget
PermissionForEventsToInvokeLambda:
Type: AWS::Lambda::Permission
Properties:
FunctionName: !Ref EventConsumerFunction
Action: lambda:InvokeFunction
Principal: events.amazonaws.com
SourceArn: !GetAtt EventRule.Arn
Run Code Online (Sandbox Code Playgroud)
SQS 数据事件(发布新消息)不是事件桥 (EB) 的源事件。EB 只能获取管理事件,例如:
此外,您的事件规则应该更通用:
EventRule:
Type: AWS::Events::Rule
Properties:
Description: eventEventRule
State: ENABLED
EventPattern:
source:
- aws.sqs
# resources:
# - !GetAtt Queue.Arn
Targets:
- Arn: !GetAtt EventConsumerFunction.Arn
Id: EventConsumerFunctionTarget
Run Code Online (Sandbox Code Playgroud)
您还可以启用 CloudWatch 试用并检测 SQS 的 API 事件。这应该能够获取更多事件。
| 归档时间: |
|
| 查看次数: |
9565 次 |
| 最近记录: |