You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DMS Serverless无法连接Redshift Serverless端点的求助

DMS Serverless同步RDS MySQL到Redshift Serverless连接失败排查

已完成的基础配置

  • 带子网和安全组的Redshift Serverless实例
  • 带子网和安全组的RDS MySQL实例(可正常连接查询,已成功复制数据到S3)
  • 带子网和安全组的DMS Serverless复制任务
  • 配置了对应的IAM角色与策略
  • 在DMS中创建了MySQL源端点、Redshift Serverless目标端点,以及Redshift Serverless的VPC端点
  • 所有实例和端点均在同一VPC内,Redshift Serverless可通过Redshift Query Editor v2正常连接

网络配置详情

  • DMS安全组(DMS-SG):出站规则为All traffic/All/All/0.0.0.0/0
  • Redshift安全组(Red-SG):
    • 入站规则包含Redshift/TCP/5439/DMS-SG的ID
    • 入站规则包含MYSQL/Aurora/TCP/3306/DMS-SG的ID(MySQL与Redshift共用该安全组)
  • 已配置Redshift接口类型VPC端点,且开启Enhanced VPC routing
  • DMS子网组包含至少3个不同AZ的子网(创建少于3个时报错)

IAM角色配置(dms-vpc-role)

该角色附加了以下权限策略:

CloudWatch访问权限

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "logs:*"
            ],
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
}

AmazonDMSVPCManagementRole

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:CreateNetworkInterface",
                "ec2:DescribeAvailabilityZones",
                "ec2:DescribeInternetGateways",
                "ec2:DescribeSecurityGroups",
                "ec2:DescribeSubnets",
                "ec2:DescribeVpcs",
                "ec2:DeleteNetworkInterface",
                "ec2:ModifyNetworkInterfaceAttribute"
            ],
            "Resource": "*"
        }
    ]
}

AmazonDMSRedshiftS3Role

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:CreateBucket",
                "s3:ListBucket",
                "s3:DeleteBucket",
                "s3:GetBucketLocation",
                "s3:GetObject",
                "s3:PutObject",
                "s3:DeleteObject",
                "s3:GetObjectVersion",
                "s3:GetBucketPolicy",
                "s3:PutBucketPolicy",
                "s3:GetBucketAcl",
                "s3:PutBucketVersioning",
                "s3:GetBucketVersioning",
                "s3:PutLifecycleConfiguration",
                "s3:GetLifecycleConfiguration",
                "s3:DeleteBucketPolicy"
            ],
            "Resource": "arn:aws:s3:::dms-*"
        }
    ]
}

Redshift使用的S3存储桶命名为dms-*

dms-s3-access

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:DeleteObject",
                "s3:PutObjectTagging"
            ],
            "Resource": [
                "arn:aws:s3:::gs-xxx-xxx-bucket/*",
                "arn:aws:s3:::dms-xx-xxxshift/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::gs-xxx-xxx-bucket",
                "arn:aws:s3:::dms-xx-xxxshift"
            ]
        }
    ]
}

信任策略

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Stmt1",
            "Effect": "Allow",
            "Principal": {
                "Service": "dms.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        },
        {
            "Sid": "Stmt2",
            "Effect": "Allow",
            "Principal": {
                "Service": "redshift-serverless.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}

疑问点

  • 不确定现有策略是否覆盖dms-cloudwatch-logs-role和dms-access-for-endpoint角色的权限
  • Redshift Serverless端点URL为xx-workgroup.123456781234.ca-central-1.redshift-serverless.amazonaws.com:5439/dev,但DMS端点配置中指定了不同数据库名,不确定是否存在冲突

问题描述

配置完成后运行复制任务,出现错误:Test connection failed for endpoint 'ep-target-redshift' and replication config 'rep-mysql-to-redshift'.,且无CloudWatch日志生成,需要排查遗漏配置。


排查建议

  1. 端点数据库名冲突验证

    • Redshift Serverless的URL中/dev是默认数据库,若DMS目标端点指定了其他数据库,需确认该数据库已在Redshift Serverless中创建,且用于连接的账号拥有该数据库的访问权限。
  2. IAM角色权限补充

    • dms-access-for-endpoint角色权限:当前dms-vpc-role未包含端点访问所需权限,需添加以下策略(针对MySQL和Redshift端点):
      {
          "Version": "2012-10-17",
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "secretsmanager:GetSecretValue",
                      "ssm:GetParameter"
                  ],
                  "Resource": "*"
              }
          ]
      }
      
      若端点使用了IAM认证访问RDS/Redshift,还需补充对应认证权限。
    • CloudWatch日志角色:虽然当前策略包含logs:*,但需确认DMS复制任务配置中指定了正确的日志角色(即dms-vpc-role),且角色的信任策略已允许dms.amazonaws.com调用日志相关操作(当前策略已覆盖,但需确保配置时选择了该角色)。
  3. VPC端点与Enhanced VPC Routing验证

    • 确认Redshift VPC端点的安全组允许DMS-SG的入站访问(端口5439),因为开启Enhanced VPC Routing后,Redshift的流量会通过VPC端点,需确保VPC端点的安全组规则正确。
    • 检查DMS子网是否与Redshift VPC端点在同一VPC,且路由表中存在指向VPC端点的路由条目。
  4. Redshift端点连接配置细节

    • 在DMS目标端点配置中,确认:
      • 端点类型为Redshift Serverless
      • 工作组名称填写正确(即URL中的xx-workgroup)
      • 数据库名称与Redshift中实际存在的数据库一致
      • 认证方式正确(若使用IAM认证,需确保角色拥有redshift-serverless:Connect权限)
  5. 安全组规则补充验证

    • 虽然Red-SG已开放5439端口给DMS-SG,但需确认Redshift Serverless的工作组是否关联了该安全组。
    • 检查DMS-SG的入站规则是否允许Redshift返回的流量(可临时开放所有入站流量测试,排除端口限制问题)。

内容的提问来源于stack exchange,提问作者aqm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 11:57:11