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日志生成,需要排查遗漏配置。
排查建议
端点数据库名冲突验证
- Redshift Serverless的URL中
/dev是默认数据库,若DMS目标端点指定了其他数据库,需确认该数据库已在Redshift Serverless中创建,且用于连接的账号拥有该数据库的访问权限。
- Redshift Serverless的URL中
IAM角色权限补充
- dms-access-for-endpoint角色权限:当前
dms-vpc-role未包含端点访问所需权限,需添加以下策略(针对MySQL和Redshift端点):
若端点使用了IAM认证访问RDS/Redshift,还需补充对应认证权限。{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue", "ssm:GetParameter" ], "Resource": "*" } ] } - CloudWatch日志角色:虽然当前策略包含
logs:*,但需确认DMS复制任务配置中指定了正确的日志角色(即dms-vpc-role),且角色的信任策略已允许dms.amazonaws.com调用日志相关操作(当前策略已覆盖,但需确保配置时选择了该角色)。
- dms-access-for-endpoint角色权限:当前
VPC端点与Enhanced VPC Routing验证
- 确认Redshift VPC端点的安全组允许DMS-SG的入站访问(端口5439),因为开启Enhanced VPC Routing后,Redshift的流量会通过VPC端点,需确保VPC端点的安全组规则正确。
- 检查DMS子网是否与Redshift VPC端点在同一VPC,且路由表中存在指向VPC端点的路由条目。
Redshift端点连接配置细节
- 在DMS目标端点配置中,确认:
- 端点类型为
Redshift Serverless - 工作组名称填写正确(即URL中的
xx-workgroup) - 数据库名称与Redshift中实际存在的数据库一致
- 认证方式正确(若使用IAM认证,需确保角色拥有
redshift-serverless:Connect权限)
- 端点类型为
- 在DMS目标端点配置中,确认:
安全组规则补充验证
- 虽然Red-SG已开放5439端口给DMS-SG,但需确认Redshift Serverless的工作组是否关联了该安全组。
- 检查DMS-SG的入站规则是否允许Redshift返回的流量(可临时开放所有入站流量测试,排除端口限制问题)。
内容的提问来源于stack exchange,提问作者aqm
相关产品推荐
相关产品推荐

