AWS DMS 终端节点与 Redshift 的连接无法正常工作

JSN*_*JSN 5 amazon-web-services amazon-rds amazon-vpc amazon-redshift

我目前正在尝试通过 DMS 设置从 RDS (MySQL) 到 Redshift 的复制。RDS 的端点工作正常,但 Redshift 的端点不工作。这是我的设置:

专有网络

RDS、DMS 和 Redshift 在同一 VPC 中运行并共享相同的子网。

角色

我根据 AWS 文档实现了 DMS 所需的角色 ( dms-vpc-roledms-cloudwatch-logs-role) 和 Redshift 的特定角色 ( )。dms-access-for-endpoint

安全组

安全组设置也相同。RDS 和 Redshift 都有两个安全组(空安全组和引用空安全组的入口)。入口安全组的入站规则如下,出站规则默认允许所有出站通信。

RDDS:

在此输入图像描述

红移:

在此输入图像描述

复制实例设置

复制实例具有两个安全组。我认为复制实例本身需要一个单独的安全组,但是,我无法创建一个可用的安全组。

在写这篇文章之前我做了什么?

我测试过以下场景:

  • 使用允许所有入站和出站流量的默认 VPC 安全组 -> 两个端点都工作
  • 创建了一个安全组,该安全组在 TCP 3306 (RDS) 和 5439 (Redshift) 上具有入站规则,并连接到上述 RDS 和 Redshift 安全组 -> RDS 有效,Redshift 无效

我收到以下错误,我将其解释为 DMS 无法调用任何类型的 Redshift。

Test Endpoint failed: Application-Status: 1020912, Application-Message: N/A, Application-Detailed-Message: N/A
Run Code Online (Sandbox Code Playgroud)

总的来说,它与默认 VPC 安全组配合使用这一事实让我得出这样的结论:(1) 这是一个网络问题,(2) 对复制实例安全组进行简单更改可能就可以完成任务。然而,经过无数次迭代,我不知道我在这里错过了什么。

所有的想法和建议都受到高度赞赏!

Joh*_*ein 4

您的场景的典型安全组配置应该是:

  • AWS DMS 实例 ( DMS-SG) 上的安全组允许所有出站(这是正常默认值)以及使用 DMS 所需的任何入站
  • Amazon RDS 实例 ( RDS-SG) 上的安全组允许端口 3306 上的入站流量DMS-SG
  • Amazon Redshift 实例 ( Redshift-SG) 上的安全组允许端口 5439 上的入站流量DMS-SG

也就是说,DMS 实例应该有自己的安全组,可以从其他安全组中引用该安全组。安全组单独应用于每个实例。具有“相同”安全组的实例不会获得任何相互通信的特殊能力,除非作为规则专门添加到安全组中。