无法将事件从 AWS Pinpoint 流式传输到不同 AWS 账户中存在的 Kinesis 数据 Firehose

问题描述

我在账户 A 中有 AWS Pinpoint,在账户 B 中有一个 Kinesis Data Firehose,它将数据存储在账户 B 的 S3 中。 pinpoint 中有一个选项可以将事件直接流式传输到 Kinesis Streams(我使用 Firehose 供我使用)案件。 )。但是使用 AWS 控制台,账户 B 中存在的 Firehose 流未列在账户 A 中以生成连接。

所以我尝试使用 IAM Assume Role 进行跨账户访问。我在帐户 B (Firehose) 中的帐户 A (Pinpoint) RoleB 中创建了 RoleA

角色B - 身份政策

{
    "Version": "2012-10-17","Statement": [
        {
            "Effect": "Allow","Action": [
                "firehose:PutRecordBatch","firehose:DescribedeliveryStream"
            ],"Resource": [
                "arn:aws:firehose:*region*:*AccountB_id*:deliverystream/*FirehoseStreamName*"
            ]
        }
    ]
}

角色B - 信任政策

{
  "Version": "2012-10-17","Statement": [
    {
      "Effect": "Allow","Principal": {
        "AWS": [
          "arn:aws:iam::*AccountA_id*:role/*RoleA*"
        ]
      },"Action": "sts:AssumeRole"
    }
  ]
}

RoleA- 身份政策

{
  "Version": "2012-10-17","Statement": {
    "Effect": "Allow","Action": "sts:AssumeRole","Resource": "arn:aws:iam::*AccountB_id*/*RoleB*"
  }
}

由于无法使用控制台连接 firehose 和 pinpoint,我使用了 AWS CLI 并收到错误

aws-cli 命令

aws pinpoint put-event-stream --application-id *accA-pinpoint-project-id* --write-event-stream '{"DestinationStreamArn": "*accB-firehose-arn*","RoleArn": "*accA-role-arn*"}' --profile *accA-profile*

错误

An error occurred (BadRequestException) when calling the PutEventStream operation: Destination stream validation Failed. Check Destination and Role ARN values and make sure the IAM Role is configured correctly.

所以如果有人做过这两个服务之间的跨账户连接,请帮助我。

解决方法

嘿,似乎无法在两个不同帐户中的 pinpoint 和 firehose 之间创建跨帐户连接。