跳至内容

如何在 EventBridge 中配置跨账户目标?

2 分钟阅读
0

我想设置 Amazon EventBridge 规则,以便将来自一个 AWS 账户中事件的通知发送到另一个账户中的目标。

解决方法

在源账户中创建规则

创建将事件发送到不同账户的规则

**注意:**EventBridge 规则和目标必须位于同一 AWS 区域内。您只能为以下目标配置跨账户目标:

  • Amazon API Gateway API
  • Amazon Kinesis Data Streams 应用程序
  • AWS Lambda 函数
  • Amazon Simple Notification Service (Amazon SNS) 主题
  • Amazon Simple Queue Service (Amazon SQS) 队列

在源账户中配置 IAM 权限

确保您分配给 EventBridge 规则目标的 Access Management (IAM) 执行角色与 EventBridge 存在信任关系。信任策略必须将 events.amazonaws.com 列为可信实体。此外,请确保执行角色的 IAM 策略包含发布到目标所需的权限

信任关系示例:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "events.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}

IAM 策略示例:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "sns:Publish"
            ],
            "Resource": [
                "arn:aws:sns:Region:Account-ID-of-SNS-Topic:test"
            ]
        }
    ]
}

**注意:**请将 sns:Publish 替换为您的目标所需的权限,并将 arn:aws:sns:Region:Account-ID-of-SNS-Topic:test 替换为目标资源的 Amazon 资源名称 (ARN)。

在目标账户中配置 IAM 权限

您的目标基于资源的策略必须授予 EventBridge 访问目标所需的权限查看目标资源的 IAM 策略,确认其具有所需的权限。

Amazon SNS 主题的 IAM 策略示例:

{
      "Sid": "AWSEvents_ArticleEvent_Id4950650036948",
      "Effect": "Allow",
      "Principal": {
        "AWS": "IAMRole"
      },
      "Action": "sns:Publish",
      "Resource": "arn:aws:sns:Region:Account-ID-of-SNS-topic:test"
    }

**注意:**请将 IAMRole 替换为源账户中执行角色的 ARN,并将 arn:aws:sns:Region:Account-ID-of-SNS-topic:test 替换为 SNS 主题的 ARN。

(对于已激活 SSE 的主题)确认您的目标具有所需的 AWS KMS 权限

您的目标必须使用 AWS Key Management Service (AWS KMS) 客户管理型密钥。此 AWS KMS 密钥必须包含自定义密钥策略,以便授予 EventBridge 使用该密钥的权限。

要设置所需的 AWS KMS 权限,请完成以下步骤:

  1. 在您的目标资源所在的同一账户中,创建新的客户管理型密钥。确保 AWS KMS 密钥策略具有 EventBridge 访问该客户管理型密钥所需的权限
    策略示例:
    {
        "Sid": "AWSEvents_ArticleEvent_Id4950650036948",
        "Effect": "Allow",
        "Principal": {
            "AWS": "IAMRole"
        },
        "Action": ["kms:Decrypt", "kms:GenerateDataKey"],
        "Resource": "KMS-key-arn"
    }
    **注意:**请将 IAMRole 替换为 IAM 执行角色的 ARN,并将 KMS-key-ARN 替换为 AWS KMS 密钥 的 ARN。
  2. 使用客户管理型密钥配置服务器端加密 (SSE)
    **注意:**所有目标类型的配置 SSE 的说明都相同。
  3. 确保 EventBridge 规则的执行角色具有允许 kms:Decrypt API 操作的策略。
    策略示例:
    {    "Version": "2012-10-17",
        "Statement": [
            {
                "Sid": "VisualEditor0",
                "Effect": "Allow",
                "Action": ["kms:Decrypt", "kms:GenerateDataKey"],
                "Resource": "KMS-key-arn"
            }
        ]
    }
    **注意:**请将 KMS-key-arn 替换为您的 AWS KMS 密钥的 ARN。

对问题进行故障排除

如果您的 SNS 主题未收到事件通知,请参阅为什么我的 Amazon SNS 主题未收到 EventBridge 通知?

如果您的 Lambda 函数未收到事件通知,请参阅为什么我的 EventBridge 规则未调用 Lambda 函数?

如果您的 Amazon SQS 队列未收到事件通知,请参阅为什么我的 Amazon SQS 队列未收到 EventBridge 通知?

有关更多故障排除步骤,请参阅如何对跨账户或跨区域 EventBridge 规则问题进行故障排除?

AWS 官方已更新 4 个月前