3

我们正在尝试将 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"
  }
}

在这个链接之后,我们设置了一个允许来自“52.19.239.192/27”的连接的入口规则。但这似乎不起作用,我们仍然收到以下错误。

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

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

4

2 回答 2

8

当 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 在 us-east-1
于 2016-09-22T17:30:58.547 回答
4

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

于 2019-07-23T19:08:59.450 回答