我可以在提供商级别定义“eventBus”吗?
Can I define `eventBus` at a provider level?
我有一个自定义事件总线,对于每个订阅的 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}'
通常存在这种模式,但文档中没有。
如果您的 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}
我有一个自定义事件总线,对于每个订阅的 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}'
通常存在这种模式,但文档中没有。
如果您的 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}