跨账户 Kinesis Firehose 是否可行?

Is cross account Kinesis Firehose possible?

账户 A 是我创建 Kinesis 流的应用程序账户,我想在账户 B 中创建 Firehose 以从账户 A Kinesis 流中读取。这可能吗?我尝试按照 (https://medium.com/upday-devs/configure-kcl-to-read-from-a-different-aws-account-16000b26e7ff) 中的步骤进行操作,并在账户 A 中创建了一个外部访问角色(比如 'arn:aws:iam::111111111:role/External-Kinesis-Access')并仅指定了 ARN

  KinesisStreamSourceConfiguration:
    KinesisStreamARN:
      Ref: KinesisSourceStreamARN
    RoleARN: 'arn:aws:iam::111111111:role/External-Kinesis-Access'

但这会导致错误:IAM 角色和 Kinesis 流应属于同一账户。

我尝试使用 sts:AssumeRole,但这会导致不同的错误:'Cross-account pass role is not allowed.'

所以似乎不支持通过 Firehose 进行跨帐户流式传输。我还发现了这个:https://forums.aws.amazon.com/thread.jspa?threadID=249458 这让我相信它不受支持。

如果是这种情况,解决方法是什么?在账户 A 中创建 Lambda 函数以写入账户 B 中的 Firehose?

可以按照您的建议使用 lambda 函数。这里还有教程:​​https://medium.com/faun/quicksolutions-cross-account-use-lambda-to-write-to-firehose-in-another-aws-account-38bc4270a348

这将导致 lambda 执行的额外成本。如果您只想将数据保存到 S3,您也可以将 Firehose 配置为写入另一个帐户中的 S3 存储桶:https://docs.aws.amazon.com/firehose/latest/dev/controlling-access.html#cross-account-delivery-s3 and https://blog.fajri.my.id/post/aws-kinesis-firehose-cross-account-bucket/