代码之家  ›  专栏  ›  技术社区  ›  user181452

AWS DMS无法启动迁移

  •  2
  • user181452  · 技术社区  · 7 年前

    我为AWS DM和两个测试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。错误工厂。InvalidResourceStateFault:发生错误 (InvalidResourceStateFault)调用StartReplication任务时 操作:复制实例(url)的测试连接应为 成功启动复制任务

    我试图从网站上触发它,但出现了一个错误,上面写着:

    AWSDatabaseMigrationService:测试复制实例的连接 端点应该成功启动复制任务

    不幸的是,复制实例和目标点之间的连接在网站上不起作用(我的帐户具有完全访问权限)。但它在我的命令行和boto3 dms客户机上工作, test_connection .

    我的安全组规则是:

      SecurityGroupIngress:
        Type: 'AWS::EC2::SecurityGroupIngress'
        Properties:
          GroupId: !Ref dbSecurityGroup
          IpProtocol: tcp
          FromPort: '5432'
          ToPort: '5432'
          CidrIp: //my public ip
    

    1 回复  |  直到 7 年前
        1
  •  3
  •   Madhukar Mohanraju    7 年前

    1) 确保复制实例和目标端点位于同一vpc中。否则必须执行vpc对等。两者也应该在同一地区。

    2) 将复制实例的安全组添加到目标数据库安全组的入站规则中。

    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>
    

    3) 如果已创建目标数据库,请提供完整的服务器名称(例如: 目标数据库名称。XXXXXXXXXX。us-east-1。rds。amazonaws。通用域名格式 ),用户名和密码值正确 目标端点 DMS -> Endpoints -> Select your endpoint checkbox -> Test connection 验证连接。

    如果成功,则在boto3客户端配置中使用相同的用户角色,并使用 test_connection 方法