标签: aws-event-bridge

AWS Eventbridge:如何手动运行计划规则(以便测试它)?

在 Amazon Web Services (AWS) Eventbridge 中,我可以创建 cron 样式的计划规则来定期触发事件。

当我创建或编辑它们时,我经常想测试它们是否立即工作(而不是等到下一次计划执行)。出于测试目的,手动触发规则的目标并不总是等同于规则运行(可能是因为使用模板来自定义事件 JSON)。

是否有一种简单的方法可以通过用户界面或命令行触发 AWS EventBridge 计划作业立即运行?

我通常通过将 cron 计划修改为未来两分钟,然后恢复它来实现此目的,但这是乏味且容易出错的。也许有一个明显的按钮我没有看到,或者是一个我没有找到的 cli 命令(例如在https://awscli.amazonaws.com/v2/documentation/api/latest/reference/events/index.html)。 html#cli-aws-events)。

cron amazon-web-services aws-event-bridge

34
推荐指数
1
解决办法
1万
查看次数

AWS Event Bridge Lambda 调用

我已将 lambda 函数配置为 EventBridge 规则目标,并在 EventBridge 规则上配置了死信队列以捕获异常。现在,如果 lambda 函数失败,Event Bridge 不会将该失败识别为错误。由于 EventBridge 对 Lambda 的调用是异步的,因此对于 EventBridge 来说,到达 lambda 就足以将事件视为成功,但这样一旦 lambda 失败,我就无法跟踪和重试事件。任何人都知道一种方法可以使 EventBridge 与 Lamdba 请求同步,或者知道另一种方法,以便在 Lambda 代码在调用后失败时能够重试事件?

aws-lambda aws-event-bridge

21
推荐指数
2
解决办法
1万
查看次数

AWS EventBridge Cron 时区 - 在特定当地时间触发

我们设置了一个 EventBridge 来触发 Lambda。它应该在当地时间每天上午 9:30 运行(在我的例子中为美国东部时间/东部夏令时间)。问题是日期似乎是按 UTC 在 EventBridge 中设置的。有没有办法让它始终基于特定时区?IE 9:30AM 无论季节如何?

amazon-web-services aws-event-bridge

21
推荐指数
2
解决办法
2万
查看次数

将 lambda 目标角色添加到 Cloudformation 中的 AWS Eventbridge 规则失败

我正在尝试创建一个以 Lambda 函数作为目标的 AWS Eventbridge 规则。我可以很好地添加规则和目标,但是当我尝试通过RoleArnCloudformation 堆栈部署设置 lambda 权限时失败,并显示: RoleArn is not supported for target arn:aws:lambda:us-east-1:1234567890:function:contacts-lambda-consume-new-customer. (Service: AmazonCloudWatchEvents; Status Code: 400; Error Code: ValidationException; Request ID: xxxxx-ec5d-45e8-b45d-xxxxxx; Proxy: null)

这是我的 Cloudformation 堆栈代码:

  EventRuleNewCustomer: 
    Type: AWS::Events::Rule
    Properties: 
      Name: new-customer
      EventBusName: myEventBus
      # RoleArn: !Join ["", ["arn:aws:iam::",!Ref "AWS::AccountId", ":role/my-role"] ] #no error but doesn't add the permissions
      Description: "New customer event rule"
      EventPattern: 
        detail-type: 
          - "NewCustomer"
      State: "ENABLED"
      Targets: 
        - 
          Arn: !Join ["", ["arn:aws:lambda:" ,!Ref "AWS::Region", ":", !Ref "AWS::AccountId", ":function:contacts-lambda-consume-new-customer"] …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services aws-cloudformation amazon-iam aws-lambda aws-event-bridge

20
推荐指数
1
解决办法
2万
查看次数

aws.events 的 EventBridge 规则存在问题

我想将发送到自定义事件总线的所有事件发送到 CloudWatch 日志。

我创建了自定义事件总线:my-event-bus

我创建了 CloudWatch 日志组

我创建了事件总线策略,以便我帐户中的每个人都可以将事件放入my-event-bus

我为该自定义总线创建了一条规则

这是规则:

  MyRuleForBus:
    Type: AWS::Events::Rule
    Properties:
      Description: Testing rule
      EventBusName: 
      Name: testing-rule-for-my-event-bus
      EventPattern:
        source:
          - aws.events
      State: ENABLED
      Targets:
        - Arn: arn:aws:logs:us-east-1:MY_ACCOUNT_ID:log-group:my-event-bus-log-group
          Id: 'my-bus'
Run Code Online (Sandbox Code Playgroud)

当我尝试举办活动时 aws events put-events --entries file://put-events.json

我收到以下错误

{
    "FailedEntryCount": 1,
    "Entries": [
        {
            "ErrorCode": "NotAuthorizedForSourceException",
            "ErrorMessage": "Not authorized for the source."
        }
    ]
}

Run Code Online (Sandbox Code Playgroud)

这是内容put-events.json

  MyRuleForBus:
    Type: AWS::Events::Rule
    Properties:
      Description: Testing rule
      EventBusName: 
      Name: testing-rule-for-my-event-bus
      EventPattern:
        source:
          - aws.events
      State: ENABLED
      Targets:
        - Arn: arn:aws:logs:us-east-1:MY_ACCOUNT_ID:log-group:my-event-bus-log-group …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services amazon-cloudwatch aws-event-bridge

16
推荐指数
1
解决办法
1万
查看次数

Amazon EventBridge:匹配数组内的对象

我在定义匹配我的事件的规则时遇到了这个问题。谷歌搜索,测试过。

假设我们有以下事件,其中包含user数组中的对象events

{
    "version": "0",
    "...": "...",
    "detail": {
        "events": [
            {
                "user": {
                    "id": "5efdee60b48e7c1836078290"
                }
            }
        ]
    }
}
Run Code Online (Sandbox Code Playgroud)

有什么方法可以匹配user.idEventBus 规则中的 吗?我已经尝试使用以下无效规则:

{
  "detail": {
    "events": [
      {
        "user": {
          "id": [
            "5efdee60b48e7c1836078290"
          ]
        }
      }
    ]
  }
}
Run Code Online (Sandbox Code Playgroud)

然后,

{
  "detail": {
    "events[0]": {
      "user": {
        "id": [
          "5efdee60b48e7c1836078290"
        ]
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

也没有效果。

我不想放弃,但我已经厌倦了;)

rules amazon-web-services event-bus aws-event-bridge

14
推荐指数
2
解决办法
6353
查看次数

本地运行 Amazon EventBridge

我目前正在开发一个部署在AWS上的系统。使用通过 Amazon EventBridge 传递的事件进行通信的服务集合。我正在努力寻找一种在本地运行系统的方法,因为我也不知道如何才能

  1. 运行 EventBridge 的本地版本(docker 或其他)
  2. 获取 AWS 上的 EventBridge 实例以将事件发送到我的本地计算机(我假设这是不可能的?)。

有没有办法可以在本地运行我的服务,让服务将事件发送到真实(或模拟)的 EventBridge 实例,并将这些事件路由到我的本地服务?

并不是说它太重要,而是我的服务是在 Windows 上运行的 .NET Core 应用程序。

amazon-web-services aws-event-bridge

13
推荐指数
1
解决办法
9055
查看次数

错误“您提供的执行角色必须允许 AWS EventBridge Scheduler 承担该角色。”

我正在创建一个角色来自动重新启动 EC2 实例。但我收到此错误“您提供的执行角色必须允许 AWS EventBridge Scheduler 承担该角色。”

在此输入图像描述

在角色中,我添加了这些权限

在此输入图像描述

我知道这大部分太多了,但仍然不够,因为我收到了错误...知道吗?

amazon-ec2 amazon-web-services aws-event-bridge

13
推荐指数
2
解决办法
2万
查看次数

上传具有特定后缀的 S3 密钥时如何触发 AWS 事件规则

我正在尝试创建一个 AWS 事件规则,仅当具有特定后缀的文件上传到 S3 存储桶时才会触发该规则。

{
  "source": [
    "aws.s3"
  ],
  "detail-type": [
    "AWS API Call via CloudTrail"
  ],
  "detail": {
    "eventSource": [
      "s3.amazonaws.com"
    ],
    "eventName": [
      "PutObject",
      "CompleteMultipartUpload"
    ],
    "requestParameters": {
      "bucketName": [
        "bucket-name"
      ],
      "key": [
        { "suffix": ".csv" }
      ]
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

据我了解,AWS具有可以使用的基于内容的过滤,但文档没有显示使用后缀的能力,仅显示其他模式中的前缀:https ://docs.aws.amazon.com/eventbridge/latest/userguide /content-filtering-with-event-patterns.html

理想情况下,我可以在此处执行此操作,而无需中间 Lambda,因为我的事件目标是 ECS Fargate 任务。

amazon-s3 amazon-web-services amazon-cloudwatch amazon-cloudtrail aws-event-bridge

12
推荐指数
2
解决办法
8704
查看次数

AWS EventBridge 使用自定义详细信息安排事件?

我正在尝试构建一个架构,其中使用多个参数集按计划触发单个 Lambda。因此,例如,如果我有三组参数并将计划设置为十分钟,我希望每十分钟执行三次。

有没有办法使用自定义属性触发 EventBridge 计划事件,以便我可以将参数传递给 Lambda?我注意到事件架构中的详细信息属性,但找不到任何关于其在计划事件中的用法的参考。

aws-event-bridge

12
推荐指数
1
解决办法
3906
查看次数