我有一个自定义事件总线,对于每个预订的Lambda,我必须定义要使用的总线。
例如:
functions:
hello:
handler: src/handlers/hello.main
events:
- eventBridge:
eventBus: 'arn:aws:events:#{AWS::Region}:#{AWS::AccountId}:event-bus/events-${opt:stage}'
pattern:
source:
- dynamodb-stream
world:
handler: src/handlers/world.main
events:
- eventBridge:
eventBus: 'arn:aws:events:#{AWS::Region}:#{AWS::AccountId}:event-bus/events-${opt:stage}'
pattern:
source:
- dynamodb-stream
是否可以在提供者级别定义它?
例如:
provider:
eventBridge:
eventBus: 'arn:aws:events:#{AWS::Region}:#{AWS::AccountId}:event-bus/events-${opt:stage}'
通常存在这种模式,但是在文档中却没有。
答案 0 :(得分:1)
如果您的yml
文件中有重复的属性,那么最好使用anchors
:
functions:
hello:
handler: src/handlers/hello.main
events: &funcEvents
- eventBridge:
eventBus: 'arn:aws:events:#{AWS::Region}:#{AWS::AccountId}:event-bus/events-${opt:stage}'
pattern:
source:
- dynamodb-stream
world:
handler: src/handlers/world.main
events: *funcEvents
但是,不幸的是,您不能在提供者级别上对其进行定义。
为了保持您的函数声明整洁,请在自定义部分定义ARN,例如:
functions:
hello:
handler: src/handlers/hello.main
events: &funcEvents
- eventBridge:
eventBus: ${self:custom.eventBusArn}
pattern:
source:
- dynamodb-stream
world:
handler: src/handlers/world.main
events: *funcEvents
custom:
eventBusArn: arn:aws:events:#{AWS::Region}:#{AWS::AccountId}:event-bus/events-${opt:stage}