如何在VPC中的Redshift群集上解锁Kinesis Firehose CIDR/IP?

zya*_*zya 3 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"
  }
}
Run Code Online (Sandbox Code Playgroud)

在此链接之后,我们设置了允许来自"52.19.239.192/27"的连接的Ingress规则.但这似乎没有用,我们仍然得到以下错误.

与指定的Amazon Redshift群集的连接失败.确保安全设置允许Firehose连接,Amazon Redshift目标配置或JDBC URL中指定的群集或数据库正确,以及群集可用.

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

Mat*_*ser 7

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

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

  1. Redshift群集必须位于公有子网中,这意味着它位于具有Internet网关的子网中.
  2. Redshift群集必须具有公共IP地址.
  3. 您的安全组必须允许对端口5439上的FireHose进行访问.

如果没有满足上述两个要求,则无法从VPC外部访问Redshift群集.

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

  • 52.70.63.192/27 in us-east-1

  • 对于任何登陆此处寻找[其他区域的 Firehose CIDR 块]的人(https://docs.aws.amazon.com/firehose/latest/dev/controlling-access.html#using-iam-rs-vpc) (2认同)

小智 5

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