为什么使用 AWS CLI 或 AWS CloudFormation 创建的 EventBridge 规则无法调用其目标?

2 分钟阅读
0

我想解决为什么使用 AWS 命令行 (AWS CLI) 或 AWS CloudFormation 创建的 Amazon EventBridge 规则无法正常运行的问题。

简短描述

目标需要 AWS Identity and Access Management (AWS IAM) 或基于资源的策略来向 Amazon EventBridge 规则授予访问或调用目标的权限。

使用 AWS CLI、API 或 AWS CloudFormation 创建或更新 EventBridge 规则时,请查看以下最佳实践:

  • 当您使用 EventBridge 控制台创建或修改 EventBridge 规则时,EventBridge 会自动向目标策略添加相应的权限。
  • 当您使用 AWS CLI、SDK 或 AWS CloudFormation 创建或更新 EventBridge 规则时,必须手动应用目标策略中的权限。

解决方法

**注意:**如果在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI

EventBridge 使用两种权限模型来管理规则对目标资源的访问权限:基于资源的策略和基于身份的策略。有关详细信息,请参阅管理资源访问权限

查看 EventBridge 规则指标以确认调用失败

完成以下步骤:

  1. 打开 Amazon EventBridge 控制台
  2. 在左侧导航窗格的 Buses(总线)下,选择 Rules(规则)。
  3. 单击规则名称。
  4. 单击规则详细信息下的 Monitoring(监控)选项卡。
  5. 通过在控制面板中选择适当的时间,查看 FailedInvocations 指标。FailedInvocations 表示永久失败,可能是由于权限不正确或目标配置错误所致。有关详细信息,请参阅 EventBridge 指标

确认 EventBridge 规则具有调用其目标所需的权限

使用以下链接确认 EventBridge 规则具有配置目标所需的权限。

基于资源的策略

以下目标使用基于资源的策略

  • AWS Lambda
  • API Gateway
  • Amazon Simple Notification Service (Amazon SNS)
  • Amazon Simple Queue Service (Amazon SQS)
  • Amazon CloudWatch 日志组

有关创建将 CloudWatch 日志作为目标的规则的信息,请参阅如何添加 CloudWatch 日志组以用作 EventBridge 规则的目标?

基于身份的策略

这些目标需要适当的 IAM 策略权限。有关详细信息,请参阅 EventBridge 使用 IAM 角色访问目标所需的权限
**注意:**有关添加 IAM 策略的信息,请参阅添加和删除 IAM 身份权限

请参阅以下策略:

  • Amazon API 目标

  • Systems Manager

  • Step Functions 状态机

  • ECS 任务

  • Amazon Elastic Compute Cloud (Amazon EC2)

  • Kinesis Streams

  • Amazon SageMaker 管线

    **注意:**有关为 SageMaker 管线创建规则作为目标的详细信息,请参阅使用 AWS CLI 创建 EventBridge 规则

跨账户、跨区域和事件总线目标的策略

如果目标是跨账户、跨区域或其他事件总线,请参阅基于资源的策略的 Amazon EventBridge 事件总线权限。有关配置跨账户或跨区域规则的信息,请参阅 EventBridge 跨账户和跨区域事件分步指南

API Gateway 目标策略

  • API Gateway 目标可以使用资源或 IAM 角色。

向目标添加 Amazon SQS 死信队列

如果添加所需策略后,EventBridge 规则的目标报告调用失败,则使用 Amazon SQS 死信队列 (DLQ) 作为目标来存储事件的元数据。使用存储的数据来分析 Eventbridge 规则无法调用事件并将事件传送到配置的目标的原因。有关如何验证目标的详细信息,请参阅如何对 Amazon EventBridge 规则问题进行故障排除?

相关信息

为什么我的 Lambda 函数不是由我的 EventBridge 规则触发的?

对 Amazon EventBridge 进行故障排除

AWS 官方
AWS 官方已更新 1 年前