@coorpacademy/ serverles-offline-eventbridge (英语)
这个无服务器离线插件在您的本地机器上模拟 AWS 和 EventBridge 。 它暴露了一个
当地 PutEvents 结束点, 每一次发布的事件都会通过真实的事件Bridge 事件处理器
匹配器,并通过 serverless-offline自己的蓝巴达跑道.
特征数字 :
- 进行中
PutEvents端点+内相事件总线- 不需要额外容器。 。 。 . - 真实事件桥 事件处理器 匹配 (e)
source, (中文(简体) ),detail-type,筑起detail, (中文(简体) ),resources, (中文(简体) ),$or,和内容过滤器prefix, (中文(简体) ),suffix, (中文(简体) ),anything-but, (中文(简体) ),exists, (中文(简体) ),equals-ignore-case, (中文(简体) ),numeric, (中文(简体) ),wildcard, (中文(简体) ),cidr) (中文(简体) ). - 授予两个函数级别
eventBridge:事件 财务报告和审定财务报表 原始云阵AWS::Events::Rule资源. - 以备份重试, 可选
destinations.onFailure(DLQ)针对当地SQS的模拟 终点.
无服务器框架 v4
此插件支持 无服务器框架 v3 和 v4。它从插件中取出日志
构造器的 3 第 个参数 ({log}) 并倒转 console 当它缺席,所以没有
升级时需要改变配置.
安装
第一,添加 @coorpacademy/serverless-offline-eventbridge 对您的项目:
npm install @coorpacademy/serverless-offline-eventbridge
在你的项目里 serverless.yml 文件,将以下条目添加到插件区域
在此之前 serverless-offline数字 :
plugins:
- '@coorpacademy/serverless-offline-eventbridge'
- serverless-offline
怎么样?
默认情况下, 插件会启动一个小的在进程内 HTTP 服务器( 节点核心) http,无额外依赖)
接受 AWS 时 PutEvents 请求(X-Amz-Target: AWSEvents.PutEvents, (中文(简体) ),
Content-Type: application/x-amz-json-1.1) (中文(简体) ). 每一个出版的条目都变成了"犬"
事件Bridge事件信封, 匹配每个用户的事件Pattern 和匹配的 Lambda
通过 serverless-offline。目标失败不会失败 PutEvents
反应(模仿AWS),但经过重试,一旦重试已用尽,可选择路由到
函数的 destinations.onFailure。 。 。 .
对准您的 AWS SDK 事件桥客户端 http://<host>:<port> (默认) http://127.0.0.1:4010改为:
在当地发布事件.
配置
职能
职能级别 eventBridge 之后的事件
无服务器文档。 。 。 .
functions:
myHandler:
handler: handler.compute
events:
- eventBridge:
eventBus: default
pattern:
source:
- my.app
detail-type:
- OrderPlaced
detail:
status:
- CONFIRMED
云阵 AWS::Events::Rule 资源
直接宣布的规则 resources 也被尊重: 插件扫描 AWS::Events::Rule
资源 Targets[].Arn 实值 {Fn::GetAtt: [<FunctionLogicalId>, Arn]},将目标映射回
并登记规则的 EventPattern。 。 。 .
resources:
Resources:
OrderPlacedRule:
Type: AWS::Events::Rule
Properties:
EventBusName: default
EventPattern:
source:
- my.app
detail-type:
- OrderPlaced
Targets:
- Id: myHandler
Arn:
Fn::GetAtt:
- MyHandlerLambdaFunction
- Arn
事件桥插件选项
通过 a 配置插件 custom: serverless-offline-eventbridge 对象 serverless.yml数字 :
custom:
serverless-offline-eventbridge:
host: 127.0.0.1 # bind host for the PutEvents endpoint
port: 4010 # PutEvents endpoint port
accountId: '000000000000' # event `account` + event-bus ARN
maximumRetryAttempts: 10 # dispatch retry budget
retryDelayMs: 500 # delay between retries
debug: false # verbose logging of options + subscriptions
mockServer: true # run the in-process PutEvents endpoint
simulateDestinations: true # route exhausted async failures to destinations.onFailure
endpoint: http://localhost:9324 # AWS endpoint for the onFailure SQS / opt-in subscribe clients
subscribe: false # opt-in: poll a real `events` bus at `endpoint`
pollInterval: 1000 # LocalStack opt-in poll cadence (ms)
| 选项 | 默认 | 目的 |
|---|---|---|
host | 127.0.0.1 | putEvents 端点绑定主机 |
port | 4010 | PutEvents 端口端口 |
region | 从 provider.region | 事件 region 字段 + ARN 构建 |
accountId | 000000000000 | 事件 account +事件总库 ARN |
maximumRetryAttempts | 10 | 调度重试预算 |
retryDelayMs | 500 | 复试之间的延迟 |
debug | false | 动词记录 |
endpoint | undefined | 失败 SQS / 选择订阅客户端的 AWS 端点 |
subscribe | false | 选入: 选入真实 events 公共汽车在 endpoint |
mockServer | true | 运行进程内 PutEvents 端点 |
simulateDestinations | true | 路由已耗尽 destinations.onFailure |
pollInterval | 1000 | 本地选入民意调查 |
支持的事件Pattern 内容过滤器
prefix (包括 {prefix: {equals-ignore-case}}, (中文(简体) ), suffix, (中文(简体) ), anything-but, (中文(简体) ), exists, (中文(简体) ),
equals-ignore-case, (中文(简体) ), numeric (多语种,例如:. ['>', 0, '<=', 100], (中文(简体) ), wildcard (单位:千美元)* 盖布,
财务报告和审定财务报表 cidr。一个 不详 滤镜密钥作为非匹配处理(它从未丢出).
归属
EventPattern 匹配算法在精神上从
rubenkaiser/serverless-offline-aws-eventbridge
(MIT),重写为纯 lodash/fp 帮手 见 NOTICE。 。 。 .