我正在将数据从AWS IoT核心发送到Kinesis数据流。数据流最终将设备数据转储到名为dtmu-mock-bucket-1
的S3存储桶中。 Kinesis传递流使用KinesisFirehoseServiceRole-s3_bucket_pol-us-east-2-1600375360569
角色(具有对S3的完全访问权限)。
因此,如果未指定S3策略,则将数据写入存储桶。当使用"Effect":"Allow"
和Principal:arn:aws:iam::247590354562:role/service-role/KinesisFirehoseServiceRole-s3_bucket_pol-us-east-2-1600375360569
定义存储桶策略时,一切也按预期进行。
但是,当存储桶策略如下时,我会遇到问题。基本上NotPrincipal
不能按预期工作。即使在NotPrincipal
中将Kinesis角色作为例外,S3存储桶仍会通过以下策略拒绝所有来源(我的控制台用户和kinesis角色)的PUT
{
"Version": "2012-10-17",
"Id": "MYBUCKETPOLICY",
"Statement": [
{
"Sid": "KinesisDeny",
"Effect": "Deny",
"NotPrincipal": {
"AWS": [
"arn:aws:iam::247590354562:role/service-role/KinesisFirehoseServiceRole-s3_bucket_pol-us-east-2-1600375360569",
"arn:aws:iam::247590354562:root"
]
},
"Action": [
"s3:PutObject",
"s3:PutObjectAcl"
],
"Resource": [
"arn:aws:s3:::dtmu-mock-bucket-1/*",
"arn:aws:s3:::dtmu-mock-bucket-1"
]
}
]
}
即使针对目标S3存储桶采用了上述策略,是否有任何有关kinesis传递流日志为何显示S3访问被禁止的指针?基本上,我希望S3存储桶策略取代为dtmu-mock-bucket-1
存储桶分配给用户的IAM角色。只有运动学应该能够PUT
{@ 1}