【问题标题】:Accessing Redshift from Lambda - Avoiding the 0.0.0.0/0 Security Group从 Lambda 访问 Redshift - 避免 0.0.0.0/0 安全组
【发布时间】:2016-08-21 23:25:06
【问题描述】:

我正在尝试从 Lambda 函数访问 Redshift 数据库。当我将 0.0.0.0/0 添加到 Redshift 界面中的安全组连接时(如this article 所建议的那样),我能够成功连接。然而,从安全角度来看,我对使用 0.0.0.0/0 感到不舒服。

有没有办法只允许 Lambda 访问 Redshift 而不向公共互联网开放?

我已经尝试添加AWS IP ranges,但是,这不起作用(因为它只允许有限数量的安全组连接)。

【问题讨论】:

    标签: amazon-web-services amazon-redshift aws-lambda


    【解决方案1】:

    为您的 Lambda 函数启用 VPC 访问,并将 Redshift 安全组打开到分配给 Lambda 函数的 SG,就像您将它打开到 EC2 服务器一样。

    【讨论】:

    • 我尽我所能做你所说的一切,我创建了一个 VPC + 子网,创建了一个安全组(所有流量用于入站/出站),使用VPC 信息,然后创建一个 VPC 终端节点,以便我可以再次访问 S3,这很有效。但是我仍然无法访问 Redshift,连接超时.. 您能否详细说明“将 Redshift 安全组打开到分配给 Lambda 函数的 SG”的意思?我没有接触过“将它打开到 EC2 服务器”。谢谢!
    • 您的 Redshift 服务器是否与 Lambda 函数位于同一 VPC 中?
    • 嗯,我要说不,因为 Redshift 数据库首先出现,而我刚刚创建了 VPC……有没有办法将它“移动”(?)到同一个 VPC?跨度>
    • 您的 AWS 账户有多大?如果它是在过去几年创建的,那么您账户中的所有内容都已经在使用 VPC,因此您无需创建新的 VPC。您需要首先确保 Lambda 函数与 Redshift 集群位于同一 VPC 中。然后您需要进入 VPC 设置并为分配给 Redshift 集群的安全组添加入站规则。
    • 进入 Redshift 控制台的安全部分并在 VPC 中创建一些集群子网。然后您应该能够在 VPC 中启动 Redshift。
    【解决方案2】:

    我遇到了同样的问题,但答案没有帮助。它适用于我向我的安全组添加了一个 0.0.0.0/0,但这不是我可以长期使用的东西。

    我最终创建了一个具有公共 (10.0.1.0) 和私有 (10.0.2.0) 子网以及公共子网上的 NAT 的新 VPC。在私有子网上运行 lambda 函数,但仍然无法访问 redshift db。将 Redshift 数据库移至公共 (10.0.1.0) 子网。我将 Redshift 放在那个子网上,因为加载脚本在外部运行,并且有一个安全组允许通过我的两个工作/家庭 IP 在端口 5439 上,它还允许 lambda 进入私有 10.0.2.0/24 子网 脚本正在运行。

    也就是说它仍然无法正常工作,我花了一段时间才发现我无法使用完整的 dns 名称来访问 Redshift。即使有一个工作的 NAT,它仍然没有连接到 redshift。我使用两个 EC2 实例和一个用于连接和运行查询的简单脚本对此进行了测试。这比在 lambda 中解决连接问题要快。 managing clusters 上的这个链接和cluster node ip 上的这个链接为我解决了这个问题。

    解决方案:转到集群并单击它。所有配置信息的右下角是 SSH 摄取设置和私有 IP。我使用该 IP 而不是 url 它解决了我所有的连接问题。现在看起来很基本,但花了很多时间搜索并找不到我正在寻找的答案。

    祝你好运, 木材

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-12
      • 2014-09-24
      • 2015-01-11
      • 2023-01-01
      • 2020-04-30
      • 1970-01-01
      • 2020-12-02
      • 2019-08-16
      相关资源
      最近更新 更多