帐户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 < / p>
KinesisStreamSourceConfiguration:
KinesisStreamARN:
Ref: KinesisSourceStreamARN
RoleARN: 'arn:aws:iam::111111111:role/External-Kinesis-Access'
但这会导致错误:IAM角色和Kinesis流应属于同一帐户。
我尝试使用sts:AssumeRole,但这导致了另一个错误:“不允许跨帐户传递角色。”
因此,似乎不支持通过Firehose进行跨帐户流式传输。我还发现了这一点:https://forums.aws.amazon.com/thread.jspa?threadID=249458 这使我相信它不受支持。
如果是这种情况,解决方法是什么?在帐户A中创建Lambda函数以写入帐户B中的Firehose?
答案 0 :(得分:1)
可能有您建议的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和https://blog.fajri.my.id/post/aws-kinesis-firehose-cross-account-bucket/