我试图使用由 S3 事件触发的 AWS SAM 创建一个 AWS 状态机(步进函数)。以下是我的 AWS SAM yml 片段。
SampleStateMachine:
Type: AWS::Serverless::StateMachine
Properties:
Name: sample-state-machine
DefinitionUri: state-machines/my-definition.asl.json
Events:
S3PutEvent:
Type: EventBridgeRule
Properties:
Pattern:
source:
- "aws.s3"
detail:
eventSource:
- s3.amazonaws.com
eventName:
- PutObject
requestParameters:
bucketName:
- !Ref MyBucketName
在部署此应用程序时,它使用我在 sam yml 模板中指定的模式成功创建了规则。(但 JSON 键值对的顺序略有变化)
{
"source": [
"aws.s3"
],
"detail": {
"eventSource": [
"s3.amazonaws.com"
],
"requestParameters": {
"bucketName": [
"my-bucket"
]
},
"eventName": [
"PutObject"
]
}
}
不幸的是,这条规则没有从事件总线中捕获任何事件。所以我尝试按以下顺序更改 JSON 键值对,
{
"source": [ "aws.s3"
],
"detail": {
"eventSource": [
"s3.amazonaws.com"
],
"eventName": [
"PutObject"
],
"requestParameters": {
"bucketName": [
"my-bucket"
]
}
}
}
它开始接收事件并正常工作。
所以我的问题是,
- 这个顺序对于 AWS eventbridge 规则模式真的很重要吗?
- 如果是这样,我们如何在 AWS sam 执行(YML 到 JSON)时保留这个顺序?
谢谢