如何在VPC中的Redshift群集上取消阻止Kinesis Firehose CIDR / IP?

时间:2016-09-22 15:29:15

标签: amazon-web-services amazon-redshift amazon-kinesis-firehose

我们正在尝试使用具有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中指定的群集或数据库正确,以及群集可用。

有谁知道我们做错了什么?

2 个答案:

答案 0 :(得分:7)

当FireHose访问您的Redshift群集时,它会从您的VPC外部访问。

为了让FireHose访问您的Redshift群集,必须配置以下内容:

  1. Redshift群集必须位于公有子网中,这意味着它位于具有Internet网关的子网中。
  2. Redshift群集必须具有公共IP地址。
  3. 您的安全组必须允许对端口5439上的FireHose进行访问。
  4. 如果没有满足上述两个要求,则无法从您的VPC外部访问Redshift群集。

    最后,要限制外部访问仅限FireHose,您可以将端口5439的规则限制为FireHose CIDR块:

    • 52.70.63.192/27 in us-east-1

答案 1 :(得分:0)

我一直在努力解决同一问题,并且刚刚找到了解决方案。确保为Redshift集群创建的集群子网组仅包含公共子网。启动新的Redshift集群时,AWS将随机选择分配给集群子网组的一个子网。如果该子网是专用子网,则Firehose无法访问您的Redshift群集(它始终在VPC外部)。在Redshift群集上选择“公开可用”选项将无济于事,也不会在ACL或安全组等中将Firehose IP地址列入白名单。您必须将子网设为公用或仅使用公用子网重新启动群集。