我为AWS DMS创建了一个堆栈,另一个用于两个测试Postgres dbs AWS::RDS::DBInstance
,cfn-sphere
两个堆栈都已成功创建,我能够在源数据库中创建一个表并将数据加载到其中。
我尝试start the replication task with boto3:
client = boto3.client('dms')
response = client.start_replication_task(
ReplicationTaskArn=replication_task_arn,
StartReplicationTaskType='start-replication'
)
但它没有用,我得到了错误:
botocore.errorfactory.InvalidResourceStateFault:发生错误 (InvalidResourceStateFault)调用StartReplicationTask时 操作:复制实例(url)的测试连接应该是 成功启动复制任务
我试图从网站上触发它,但我收到一条错误消息:
AWSDatabaseMigrationService:测试复制实例的连接 和端点应该成功启动复制任务
不幸的是,Replication Instance和Target point之间的连接无法从网站上运行(我的帐户具有完全访问权限)。但它在我的命令行中使用了boto3 dms客户端test_connection。
我的安全组规则是:
SecurityGroupIngress:
Type: 'AWS::EC2::SecurityGroupIngress'
Properties:
GroupId: !Ref dbSecurityGroup
IpProtocol: tcp
FromPort: '5432'
ToPort: '5432'
CidrIp: //my public ip
有人可以指导我在哪里看以及如何解决它? (这是我的第一个AWS任务)
答案 0 :(得分:1)
1)确保复制实例和目标端点位于同一个vpc中。否则,您必须执行vpc对等。两者都应该在同一地区。
2)将复制实例的安全组添加到目标数据库安全组的入站规则中。
Row
3)如果已创建目标数据库,则提供完整的服务器名称(例如: target-database-name.xxxxxxxxxxx.us-east-1.rds.amazonaws.com ),创建目标端点时,用户名和密码值正确无误。在aws控制台中,必须Type: AWS::EC2::SecurityGroup
Properties:
GroupName: "target-endpoint-sg"
GroupDescription: "security group of target db server"
VpcId: <provide your vpc id>
SecurityGroupIngress:
- IpProtocol: tcp
FromPort: '5432'
ToPort: '5432'
SourceSecurityGroupId: <sec-grp of ReplicationInstance>
验证连接。
如果成功,则在boto3客户端配置中使用相同用户的角色,并使用DMS -> Endpoints -> Select your endpoint checkbox -> Test connection
方法进行测试。