我在我们的应用程序中用作EventBridge事件总线。根据其文档: https: //aws.amazon.com/eventbridge/faqs/,发送和接收事件之间的延迟为半秒,这在我的应用程序中是不可接受的。
我正在考虑其他选择。Kinesis 在过滤事件方面存在问题。一旦消费者附加到流上,它就需要提供一些逻辑来过滤掉不感兴趣的事件。由于我使用 lambda 作为消费者,并且会有许多不感兴趣的事件触发我的 lambda,这将导致高 AWS 账单。
AWS SNS 只能支持 AWS 服务的目标。
另一种选择是卡夫卡。但我无法找到使用 AWS 托管 Kafka 服务时的延迟情况。
使用 AWS 时延迟最低的事件源解决方案是什么
amazon-sqs amazon-web-services apache-kafka amazon-kinesis aws-event-bridge
我有一个 EventBridge(以前称为 CloudWatch Events)Rule,Target用于Task按计划 (cron)启动 ECS启动 ECS 。我想为任务应用一些标签。
我尝试在 中包含标签RegisterTaskDefinition,但这并没有导致在Tasks 上设置任何标签,因为RunTask如果未指定,则不会传播标签propagateTags。
PutTargets是创建最终将调用的事件目标的操作RunTask。我在ecsParameters( EcsParameters) 和input( TaskOverride) 中搜索了对应于 或tags的propagateTags字段RunTask,但找不到任何相应的字段。
有没有办法将标签应用到从 EventBridge 规则目标运行的 ECS 任务?
2021-06-24 更新(感谢@baxang):EventBridge 昨天已添加ecsParameters.PropagateTags: "TASK_DEFINITION"到 API 文档和一些 SDK(containers-roadmap#89)!
这里的AWS Event Bridge的无服务器框架文档没有提到如何设置死信队列和重试尝试。我希望 serverless.yml 的配置如下所示,但它不起作用。
myLambda:
handler: ./src/functions/myLambda
events:
- eventBridge:
eventBus: arn:aws:events:region:accountID:event-bus/busname
deadLetterConfig:
arn: arn:aws:sqs:region:accountID:sqs-name
pattern:
source:
- ${self:custom.sourceNameForEventBus}
Run Code Online (Sandbox Code Playgroud)
可以在部署后手动添加这些属性,如下所示。但我想使用框架添加它,否则是否有办法使用 CloudFormation 来操作它?

我正在使用 AWS Eventbridge,并且我的默认总线上的规则与自定义总线上的规则完全相同。两者的目标都是 SQS 队列。当我推送事件时,我可以在队列上看到一条消息,它是默认总线规则的目标。
我在自定义巴士规则的队列中没有看到任何内容。此外,指标不显示调用。我做错了什么?我创建了一辆定制巴士。
我在没有任何政策的情况下尝试了两者,如下政策:
{
"Version": "2012-10-17",
"Statement": [{
"Sid": "allow_account_to_put_events",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::my-account:root"
},
"Action": "events:PutEvents",
"Resource": "arn:aws:events:xxx:my-account:event-bus/my-bus-name"
}]
}
Run Code Online (Sandbox Code Playgroud)
我的活动模式:
{
"source": [
"aws.ssm"
],
"detail-type": [
"Parameter Store Change"
],
"detail": {
"name": [
"someparam"
],
"operation": [
"Update"
]
}
}
Run Code Online (Sandbox Code Playgroud) 虽然我了解 EventBridge 将通过规则重试向目标(例如 API 目标)发送事件,但是否有任何方法可以读取接收 API 的响应代码以及相应调用的任何返回消息(即原始调用和任何后续重试)?
我所拥有的是:从 Step Function 触发的事件,该事件被发送到 EventBridge。该事件由“应用程序 ID”规则过滤,并调用外部 API(注意:注意通过 AWS 提供的预集成 API 之一)。我能够使用 webhook.site 接收 API 调用,但是,我想在发送 Web 应用程序中使用响应数据。因此,我需要能够按需调用最新的 API 响应 - 并且希望在大约 14 天的预设时间内定期尝试失败的尝试。
我想简单地将事件从 lambda 函数发送到事件桥。我在网上搜索的所有内容都是相反的。如果我进入 AWS 控制台并尝试查找 lambda 作为事件源,则不会出现任何结果。
我可以从 Lambda 将自定义事件发送到事件桥吗?
我遇到一种情况,需要使用 eventbridge 中的 eventpatterns 过滤掉某些事件。我想对所有事件运行规则,除了用户名以 abc 或 xyz 开头的事件。我尝试过以下 2 种语法,但没有一个有效:
"userIdentity": {
"sessionContext": {
"sessionIssuer": {
"userName": [
{
"anything-but": {
"prefix": [
"abc-",
"xyz-"
]
}
}
]
}
}
}
"userIdentity": {
"sessionContext": {
"sessionIssuer": {
"userName": [
{
"anything-but": [{
"prefix": "abc-",
"prefix": "xyz-"
}]
}
]
}
}
}
Run Code Online (Sandbox Code Playgroud)
保存规则时出现以下错误:“事件模式无效。原因:在除列表之外的任何内容中,不支持 start|null|boolean。 ”
我是否在语法中遗漏了某些内容,或者如果这是一个限制,那么这个问题还有其他选择吗?
amazon-web-services amazon-cloudwatch serverless amazon-cloudwatch-events aws-event-bridge
我创建了一个触发 AWS Batch 作业的 Cloudwatch 事件 (EventBridge) 规则,并且我想要指定环境变量和参数。我尝试使用以下配置的输入(常量 [JSON 文本])来执行此操作,但是提交作业时,不包括我尝试在作业中设置的环境变量,并且参数为默认值。参数按预期工作。
{
"ContainerProperties": {
"Environment": [
{
"Name": "MY_ENV_VAR",
"Value": "MyVal"
}
]
},
"Parameters": {
"one": "1",
"two": "2",
"three": "3"
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个 terraform 文件,我正在重复使用该文件来创建多个 AWS Eventbridge(作为某些 lambda 的触发器)。在文件的不同部分,我可以使用For Each方法创建多个事件桥并相应地命名它们。我的问题是,我无法在 EOF 标记内执行相同的操作(每个 Eventbridge 上的标记需要不同),因为它将所有内容都视为字符串。我需要用"prefix": "arn:aws:medialive:us-west-2:11111111111:channel:3434343"变量替换 ARN。我怎么能这么做呢?
这是 terraform 代码的 EOF 部分:
event_pattern = <<EOF
{
"source": ["aws.medialive"],
"detail-type": ["AWS API Call via CloudTrail"],
"detail": {
"eventSource": ["medialive.amazonaws.com"],
"eventName": ["StopChannel"],
"responseElements": {
"arn": [{
"prefix": "arn:aws:medialive:us-west-2:11111111111:channel:3434343"
}]
}
}
}
EOF
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试在 Python 3.9.15 Lambda 中创建 EventBridgeScheduler 客户端,但该服务以UnknownServiceError: Unknown service: 'scheduler'. 尽管 boto3 的官方文档中包含此服务,但它是否不受支持?错误消息中包含的列表不包含scheduler在有效服务名称中。
import boto3
eb_client = boto3.client('scheduler')
def lambda_handler(event, context):
print(json.dumps(event))
schedule_name = event['resources']
delete_schedule(schedule_name)
def delete_schedule(name):
try:
response = eb_client.delete_schedule(
Name=name
)
except Exception as e:
print(str(e))
Run Code Online (Sandbox Code Playgroud) aws-event-bridge ×10
aws-lambda ×4
amazon-ecs ×1
amazon-sqs ×1
apache-kafka ×1
api ×1
boto3 ×1
dead-letter ×1
serverless ×1
tags ×1
terraform ×1