我在帐户A下设置了一个Kinesis Firehose流。根据我们的要求,此流应该将数据写入不同aws帐户B拥有的s3存储桶,其中包括:
到目前为止,我已将以下政策添加到帐户B(ID 2)下的s3存储桶中,我希望从帐户A(ID 1)下的firehose写入。
{
"Version": "2008-10-17",
"Statement": [
{
"Sid": "avs-bi-access",
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::1:root"
]
},
"Action": [
"s3:ListBucket",
"s3:GetObject",
“s3:PutObject”
],
"Resource": [
"arn:aws:s3:::testBucket",
"arn:aws:s3:::testBucket/*"
]
}
]
}
除此之外,在Firehose帐户A(id 1)下使用的角色中,信任关系如下:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"Service": "firehose.amazonaws.com",
"AWS": "arn:aws:iam::2:root"
},
"Action": "sts:AssumeRole"
}
]
}
即使在那之后,我也无法在Firehose配置页面中选择给定的存储桶。我想,我错过了什么。
答案 0 :(得分:0)
您应该按照以下说明进行操作:
基本上:
AWS
值
您永远不会从控制台下拉列表中显示的其他帐户获取存储桶。相反,您需要在通过API / CLI调用创建Firehose传输流时选择存储桶,或者您可以使用update-destination
API调用更改目标:
aws firehose update-destination --delivery-stream-name foo --current-delivery-stream-version-id 1 --destination-id 'destinationId-000000000001' --extended-s3-destination-update '{"BucketARN":"arn:aws:s3:::YOUR-BUCKET"}'
您可以通过以下方式获取version
和destination-id
aws firehose describe-delivery-stream --delivery-stream-name foo
免责声明:我尝试了上述所有内容并设法选择了存储桶。但是,我没有将任何数据传送到存储桶。也许你会比我做得更多。