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

How to unblock Kinesis Firehose CIDR/IP on Redshift Cluster in a VPC?

我们正在尝试将 AWS Kinesis Firehose 与 Redshift 输出结合使用。我们已经创建了 Firehose Delivery Stream。我们在 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”的连接的入口规则。但这似乎没有用,我们仍然收到以下错误。

The connection to the specified Amazon Redshift cluster failed. Ensure that security settings allow Firehose connections, that the cluster or database specified in the Amazon Redshift destination configuration or JDBC URL is correct, and that the cluster is available.

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

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

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

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

如果不满足以上两个要求,任何人都无法从您的 VPC 外部访问 Redshift 集群。

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

  • 52.70.63.192/27 in us-east-1

我一直在为同样的问题而苦苦挣扎,并且刚刚找到了解决方案。确保为 Redshift 集群创建的集群子网组仅包含 public 个子网。启动新的 Redshift 集群时,AWS 会随机 select 一个子网分配给集群子网组。如果该子网是私有的,则 Firehose 无法访问您的 Redshift 集群(它始终在您的 VPC 之外)。在 Redshift 集群上选择 "Make publicly available" 选项无济于事,在 ACL 或安全组等中将 Firehose IP 地址列入白名单也无济于事。您必须创建子网 public 或仅使用 [=13] 重新启动集群=] 子网。