使用Pulumi无法在自定义Event Bus创建事件规则问题求助
问题描述
以下是我的Pulumi栈资源代码:
// ... var eventBus = new Aws.CloudWatch.EventBus("WebhookEventBus", new EventBusArgs() { Name = "WebhookEventBus" }); var sendToApiRule = new Aws.CloudWatch.EventRule("SendToApi", new EventRuleArgs() { EventBusName = eventBus.Name, EventPattern = @"{ ""source"": [{ ""prefix"": ""xxxx"" }] }" }); var devTarget = new Aws.CloudWatch.EventTarget("DevTarget", new EventTargetArgs() { Rule = sendToApiRule.Name, Arn = apiDestination.Arn, RoleArn = apiDestinationRole.Arn });
创建Pulumi栈时触发错误:
creating EventBridge Target (SendToApi-30d74a6-DevTarget-1b917a0): ResourceNotFoundException: Rule SendToApi-30d74a6 does not exist on EventBus default.
CloudTrail日志确认错误来自events.amazonaws.com,关键内容如下:
// ... "errorCode": "InternalFailure", "errorMessage": "An unknown error occurred", "requestParameters": { "rule": "SendToApi-8e734a8", "eventBusName": "default", "targets": [ { "id": "DevTarget-eb8e26d", "arn": "xxxx", "roleArn": "xxxx" } ] }, // ...
我尝试过两种方法但问题依旧:
- 在
EventBusName中直接使用静态字符串"WebhookEventBus" - 用
.Apply(x => )包装相关资源
问题原因与解决方案
核心原因:创建
EventTarget时未指定EventBusName参数,AWS会默认使用default事件总线,但你的EventRule是创建在自定义的WebhookEventBus上的,因此AWS在默认总线中找不到对应规则,抛出资源不存在的错误。解决方案:在
EventTargetArgs中添加EventBusName参数,关联到自定义事件总线。修改后的代码如下:
var devTarget = new Aws.CloudWatch.EventTarget("DevTarget", new EventTargetArgs() { Rule = sendToApiRule.Name, Arn = apiDestination.Arn, RoleArn = apiDestinationRole.Arn, // 新增该行,指定目标事件总线 EventBusName = eventBus.Name });
添加后Pulumi创建Target时会明确指向自定义的WebhookEventBus,即可找到对应的规则完成创建。
内容的提问来源于stack exchange,提问作者Enrique Avina
相关产品推荐
相关产品推荐

