与 Redshift 的 AWS DMS 端点连接不起作用

AWS DMS endpoint connection to Redshift not working

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

VPC

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

角色

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

安全组

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

RDS:

红移:

复制实例设置

复制实例有两个安全组。我认为复制实例本身需要一个安全组,但是,我无法设法创建一个工作组。

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

我测试了以下场景:

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

Test Endpoint failed: Application-Status: 1020912, Application-Message: N/A, Application-Detailed-Message: N/A

总的来说,它与默认 VPC 安全组一起工作的事实使我得出以下结论:(1) 这是一个网络问题,并且 (2) 对复制实例安全组进行简单更改可能会解决问题工作。然而,经过无数次迭代,我不知道我在这里遗漏了什么。

非常感谢所有想法和建议!

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

  • AWS DMS 实例 (DMS-SG) 上的一个安全组,它允许所有出站(这是正常的默认设置),加上您需要使用 DMS 的任何入站
  • Amazon RDS 实例 (RDS-SG) 上的安全组,允许端口 3306 上来自 DMS-SG
  • 的入站流量
  • Amazon Redshift 实例 (Redshift-SG) 上的安全组,允许端口 5439 上来自 DMS-SG
  • 的入站流量

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

对我来说,问题是 redshift 端点,请从中删除端口号和数据库名称。浪费了一整天。