AWS Kinesis Firehose投递流开启S3 enforceSSL后数据无法传输的咨询
解决Kinesis Firehose在S3开启
enforceSSL: true后无法投递数据的问题 Kinesis Firehose默认就通过SSL/TLS与S3通信,无需额外配置Firehose启用SSL。出现投递失败的问题,大概率是存储桶策略或Firehose执行角色的权限配置有误,导致符合SSL要求的请求被S3拒绝。以下是具体排查和修复步骤:
1. 检查存储桶策略的SSL条件配置
确保存储桶策略中,允许Firehose服务通过SSL访问桶资源,且条件设置正确。示例正确策略如下:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "firehose.amazonaws.com" }, "Action": [ "s3:PutObject", "s3:AbortMultipartUpload", "s3:ListMultipartUploadParts" ], "Resource": "arn:aws:s3:::your-bucket-name/*", "Condition": { "Bool": { "aws:SecureTransport": "true" }, "StringEquals": { "aws:SourceAccount": "你的AWS账号ID" } } } ] }
- 避免错误添加IP范围限制:Firehose是AWS内部托管服务,请求来源IP并非固定,若策略中加入IP条件会导致请求被拒绝。
- 替换
your-bucket-name和你的AWS账号ID为实际值。
2. 验证Firehose执行角色的权限
Firehose的执行角色必须具备向目标S3桶上传数据的必要权限,同时信任策略要允许Firehose服务扮演该角色:
权限策略示例
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:AbortMultipartUpload", "s3:ListMultipartUploadParts" ], "Resource": "arn:aws:s3:::your-bucket-name/*" } ] }
信任策略示例
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "firehose.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "sts:ExternalId": "你的AWS账号ID" } } } ] }
3. 检查自定义端点配置(若有)
如果为Firehose配置了自定义S3端点,必须确保端点使用HTTPS协议。默认情况下Firehose使用AWS官方的S3 HTTPS端点,无需手动配置,此步骤仅针对自定义端点场景。
4. 通过CloudWatch日志定位具体错误
开启Firehose的日志记录,查看CloudWatch Logs中的错误详情:
- 进入Firehose控制台,找到目标投递流,在「监控」标签下开启日志记录。
- 常见错误如
AccessDenied指向权限配置问题;若出现SSL相关错误,需确认是否存在自定义端点未使用HTTPS的情况。
内容的提问来源于stack exchange,提问作者Elad Katz
相关产品推荐
相关产品推荐

