我们正在尝试使用具有Redshift输出的AWS Kinesis Firehose。我们创建了Firehose交付流。我们在VPC安全组中有一个Redshift集群。 但似乎Firehose无法连接到群集。
这是我们创建VPC安全组的片段。
"RedshiftVPCSecurityGroup": {
"Type": "AWS::EC2::SecurityGroup",
"Properties": {
"SecurityGroupIngress": [
{
"CidrIp": "52.19.239.192/27",
"FromPort": "5439",
"ToPort": "5439",
"IpProtocol": "tcp"
}
],
"VpcId": {
"Ref": "VpcId"
},
"GroupDescription": "Redshift VPC security group"
}
}
在link之后,我们设置了允许来自“52.19.239.192/27”的连接的Ingress规则。但这似乎没有用,我们仍然得到以下错误。
与指定的Amazon Redshift群集的连接失败。确保安全设置允许Firehose连接,Amazon Redshift目标配置或JDBC URL中指定的群集或数据库正确,以及群集可用。
有谁知道我们做错了什么?
答案 0 :(得分:7)
当FireHose访问您的Redshift群集时,它会从您的VPC外部访问。
为了让FireHose访问您的Redshift群集,必须配置以下内容:
如果没有满足上述两个要求,则无法从您的VPC外部访问Redshift群集。
最后,要限制外部访问仅限FireHose,您可以将端口5439的规则限制为FireHose CIDR块:
答案 1 :(得分:0)
我一直在努力解决同一问题,并且刚刚找到了解决方案。确保为Redshift集群创建的集群子网组仅包含公共子网。启动新的Redshift集群时,AWS将随机选择分配给集群子网组的一个子网。如果该子网是专用子网,则Firehose无法访问您的Redshift群集(它始终在VPC外部)。在Redshift群集上选择“公开可用”选项将无济于事,也不会在ACL或安全组等中将Firehose IP地址列入白名单。您必须将子网设为公用或仅使用公用子网重新启动群集。