amazon-web-services - Kinesis Firehose Delivery Stream 在使用 cloudformation 时无法承担角色
问题描述
我正在编写一个创建 Kinesis Firehose 传输流并将数据发送到 S3 存储桶的 cloudformation 模板。源流是 Kinesis Steam。它创建了 s3 存储桶、策略和角色,但是当它尝试创建 Kinesis Firehose 传输流时,它无法说无法承担角色
经过一些研究,我发现不应使用 root 帐户创建 Delivery。我尝试创建一个新用户,但它仍然给了我同样的错误。
# creates the Kinesis Stream
KinesisStream:
Type: AWS::Kinesis::Stream
Properties:
Name: HealthApp
RetentionPeriodHours: 24
ShardCount: 8
# creates the firehose delivery stream
KinesisFirehoseDeliveryStream:
Type: AWS::KinesisFirehose::DeliveryStream
Properties:
DeliveryStreamName: HealthAppFirehose
DeliveryStreamType: KinesisStreamAsSource
KinesisStreamSourceConfiguration:
KinesisStreamARN:
Fn::GetAtt:
- KinesisStream
- Arn
RoleARN:
Fn::GetAtt:
- FirehoseDeliveryIAMRole
- Arn
S3DestinationConfiguration:
BucketARN: !GetAtt MyS3Bucket.Arn
Prefix: cloudformation-test/kinesis-fh
BufferingHints:
IntervalInSeconds: 60
SizeInMBs: 100
CloudWatchLoggingOptions:
Enabled: 'false'
CompressionFormat: UNCOMPRESSED
RoleARN:
Fn::GetAtt:
- FirehoseDeliveryIAMRole
- Arn
DependsOn:
- FirehoseDeliveryIAMPolicy
FirehoseDeliveryIAMRole:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Version: '2012-10-17'
Statement:
Effect: Allow
Principal:
Service: firehose.amazonaws.com
Action: sts:AssumeRole
Condition:
StringEquals:
sts:ExternalId: ACCOUNT_NUMBER
FirehoseDeliveryIAMPolicy:
Type: AWS::IAM::Policy
Properties:
PolicyName: HealthAppPolicy
PolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Action:
- s3:AbortMultipartUpload
- s3:GetBucketLocation
- s3:GetObject
- s3:ListBucket
- s3:ListBucketMultipartUploads
- s3:PutObject
Resource:
- arn:aws:s3:::health-app-bucket/cloudformation-test/kinesis-fh*
- Effect: Allow
Action:
- kinesis:DescribeStream
- kinesis:GetShardIterator
- kinesis:GetRecords
Resource:
Fn::GetAtt:
- KinesisStream
- Arn
Roles:
- Ref: FirehoseDeliveryIAMRole
DependsOn:
- KinesisStream
</p>
Outputs:
kinesisStreamArn:
Description: Kinesis Stream ARN
Value:
Fn::GetAtt:
- KinesisStream
- Arn
firehoseDeliveryStreamArn:
Description: Firehose Delivery Stream ARN
Value:
Fn::GetAtt:
- KinesisFirehoseDeliveryStream
- Arn
firehoseDeliveryRoleArn:
Description: Firehose Delivery Role ARN
Value:
Fn::GetAtt:
- FirehoseDeliveryIAMRole
- Arn
我希望成功创建交付流。任何帮助,将不胜感激。
谢谢
解决方案
要检查的两件事:
- 我想知道 ACCOUNT_NUMBER 是否被正确设置和解释。您可以通过删除整个
Condition
语句作为测试来检查这一点。作为测试(不用于生产)删除以下内容并查看它是否有效
Condition:
StringEquals:
sts:ExternalId: ACCOUNT_NUMBER
- 您创建的用户是否有权创建 IAM 策略和角色?你说
我尝试创建一个新用户,但它仍然给了我同样的错误
同样,仅对于测试/调试,您可以为该用户提供以下策略并查看它是否有效
{
"Version": "2012-10-17",
"Statement": {
"Effect": "Allow",
"Action": "iam:*",
"Resource": "*"
}
}
如果这是问题,请使用它来确定执行 CloudFormation 的 IAM 用户所需的实际策略
推荐阅读
- spring - 对于 DataSource 和 JMS 事务同步,除了 JmsTransactionManager 之外,我还需要在 JmsTemplate 中配置 setTransacted 吗?
- mod-wsgi - 在 Django/mod_wsgi 虚拟环境中配置 WSGIPythonHome 的问题
- angular - 根据角度的特定条件查看另一个组件中的特定组件
- visual-studio - 如何将 Visual Studio 项目从 Windows 切换到 Linux 容器?
- javascript - 清除链式相关下拉组合框选择中选定(子)类别的所有子类别
- javascript - d3.js 过渡的问题 - 使用 GeoJson 的多边形变形不正确
- javascript - 如何忽略 Nuxtjs 上的全局 CSS?
- c++ - 运行时错误:引用绑定到“value_type”类型的空指针(stl_vector.h)
- node.js - Twilio Video API - 通知/响铃
- visual-studio - Unity,自定义相机控制的鼠标移动脚本有强烈的漂移