跳至内容

如何排查使用 AWS DMS 时出现的 Amazon S3 端点连接测试故障?

2 分钟阅读
0

我将 Amazon Simple Storage Service (Amazon S3) 用作 AWS Database Migration Service (AWS DMS) 任务的源端点或目标端点。我收到了一条错误消息,因为我的端点连接测试失败。

简短描述

您必须为使用 Amazon S3 端点的 AWS Identity and Access Management (IAM) 角色配置正确的权限。如果您没有正确的权限,则会看到以下条目之一:

消息:

  • Test Endpoint failed: Application-Status: 1020912, Application-Message: Failed to connect to S3 endpoint.Access denied.
  • Test Endpoint failed: Application-Status: 1020912, Application-Message: Failed to list bucket wan-dms Failed to connect to database., Application-Detailed-Message: failed to list bucket wan-dms AWS failed to list bucket List bucket failed with exception 'AccessDenied', message 'Access Denied', error type '15' AWS failed to list bucket Not retriable error: Access Denied
  • Test Endpoint failed: Application-Status: 1020912, Application-Message: Failed to connect to database.
  • Error Details: [message=putDatabase call failed, errType=ERROR_RESPONSE, status=1020414, errMessage= Failed to connect to database., errDetails=]

解决方法

**注意:**当您将 Amazon S3 用作 AWS DMS 的源或目标时,请务必首先查看以下文章:

要解决这些错误,请授予访问 Amazon S3 端点所需的最低 IAM 权限。对于 AWS DMS,Amazon S3 源端点和目标端点所需的最低权限不同。

请参阅以下 Amazon S3 源端点的 IAM 策略示例:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:ListBucket"
      ],
      "Resource": [
        "arn:aws:s3:::awsexamplebucket",
        "arn:aws:s3:::awsexamplebucket/*"
      ]
    }
  ]
}

**注意:**请将 awsexamplebucket 替换为您自己的存储桶名称.

请参阅以下 Amazon S3 作为目标端点的 IAM 策略示例:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:PutObject",
        "s3:DeleteObject",
        "s3:PutObjectTagging"
      ],
      "Resource": [
        "arn:aws:s3:::awsexamplebucket/*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:ListBucket"
      ],
      "Resource": [
        "arn:aws:s3:::awsexamplebucket"
      ]
    }
  ]
}

**注意:**请将 awsexamplebucket 替换为您自己的存储桶名称.

对权限错误进行故障排除

1.    确认 IAM 角色具有访问 Amazon S3 端点所需的最低权限。

2.    确认为 Amazon S3 端点指定的存储桶名称与 IAM 角色中允许的资源相匹配。例如,IAM 角色仅允许访问一个存储桶,如上述策略示例中的 awsexamplebucket。但如果在 Amazon S3 端点的存储桶名称中指定的是 awsexamplebucket2,则测试连接将失败。

3.    确认 dms.amazonaws.com 是与 IAM 角色关联的可信实体。有关更多信息,请参阅编辑现有角色的信任关系及以下 AWS DMS 的信任策略示例:

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

4.    如果您使用 AWS Organizations,请确认所使用的 IAM 角色属于允许访问 Amazon S3 的组织。如果您的组织不允许访问,则 AWS DMS 无法使用该 IAM 角色连接到 Amazon S3 端点。即使该角色拥有所有必需的权限,也是如此。如果您的组织不允许访问,请联系您的账户管理员以允许 Amazon S3 访问您的组织。

5.    如果您的复制实例版本为 3.4.7 或更高版本,请执行以下操作之一:

        使您的复制实例子网可公开路由。将互联网网关 (IGW) 路由添加到 AWS DMS 复制实例所使用的 VPC。

        -or-

        创建 VPC 端点,以便您的复制实例能够访问 AWS DMS 使用的所有源端点和目标端点。有关更多信息,请参阅准备迁移到 AWS DMS 3.4.7 及更高版本


相关信息

如何排查 AWS DMS 端点连接故障?

AWS 官方已更新 3 年前