在 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)。
我已将 lambda 函数配置为 EventBridge 规则目标,并在 EventBridge 规则上配置了死信队列以捕获异常。现在,如果 lambda 函数失败,Event Bridge 不会将该失败识别为错误。由于 EventBridge 对 Lambda 的调用是异步的,因此对于 EventBridge 来说,到达 lambda 就足以将事件视为成功,但这样一旦 lambda 失败,我就无法跟踪和重试事件。任何人都知道一种方法可以使 EventBridge 与 Lamdba 请求同步,或者知道另一种方法,以便在 Lambda 代码在调用后失败时能够重试事件?
我们设置了一个 EventBridge 来触发 Lambda。它应该在当地时间每天上午 9:30 运行(在我的例子中为美国东部时间/东部夏令时间)。问题是日期似乎是按 UTC 在 EventBridge 中设置的。有没有办法让它始终基于特定时区?IE 9:30AM 无论季节如何?
我正在尝试创建一个以 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
我想将发送到自定义事件总线的所有事件发送到 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) 我在定义匹配我的事件的规则时遇到了这个问题。谷歌搜索,测试过。
假设我们有以下事件,其中包含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)
也没有效果。
我不想放弃,但我已经厌倦了;)
我目前正在开发一个部署在AWS上的系统。使用通过 Amazon EventBridge 传递的事件进行通信的服务集合。我正在努力寻找一种在本地运行系统的方法,因为我也不知道如何才能
有没有办法可以在本地运行我的服务,让服务将事件发送到真实(或模拟)的 EventBridge 实例,并将这些事件路由到我的本地服务?
并不是说它太重要,而是我的服务是在 Windows 上运行的 .NET Core 应用程序。
我正在创建一个角色来自动重新启动 EC2 实例。但我收到此错误“您提供的执行角色必须允许 AWS EventBridge Scheduler 承担该角色。”
在角色中,我添加了这些权限
我知道这大部分太多了,但仍然不够,因为我收到了错误...知道吗?
我正在尝试创建一个 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
我正在尝试构建一个架构,其中使用多个参数集按计划触发单个 Lambda。因此,例如,如果我有三组参数并将计划设置为十分钟,我希望每十分钟执行三次。
有没有办法使用自定义属性触发 EventBridge 计划事件,以便我可以将参数传递给 Lambda?我注意到事件架构中的详细信息属性,但找不到任何关于其在计划事件中的用法的参考。
aws-event-bridge ×10
aws-lambda ×2
amazon-ec2 ×1
amazon-iam ×1
amazon-s3 ×1
cron ×1
event-bus ×1
rules ×1