如何为使用 Amazon Redshift 作为目标端点的 AWS DMS 任务排查连接故障和错误?

上次更新日期:2022 年 1 月 21 日

如何为使用 Amazon Redshift 作为目标端点的 AWS Database Migration Service (AWS DMS) 任务排查连接故障和错误?

简短描述

当您测试到 Amazon Redshift 端点的连接时,如果您不满足将 Amazon Redshift 数据库作为 AWS Database Migration Service 目标的先决条件,则测试会失败。如果您尚未创建和配置所需的 AWS Identity and Access Management (IAM) 角色,或者端点 ARN 的 Amazon Simple Storage Service (Amazon S3) 存储桶名称已使用,也会导致测试失败。当您使用 AWS DMS 控制台时,系统会自动创建所需的 IAM 角色,但是如果您使用的是 AWS DMS API 或 AWS Command Line Interface (AWS CLI),则系统不会创建该角色。

如果 AWS DMS 任务的网络配置存在问题,则连接测试也会失败。要排查终端节点连接错误,请参阅如何排查 AWS DMS 端点连接故障?

如果所需的 IAM 角色未正确创建和配置,您可能会收到类似以下内容的错误:

Role 'dms-access-for-endpoint' is not configured properly

解决方法

注意:如果在运行 AWS CLI 命令时收到错误,请确保您使用的是最新的 AWS CLI 版本

解决角色“dms-access-for-Endpoint”未正确配置错误

要解决此错误,请确认 dms-access-for-endpoint IAM 角色已创建并已正确配置。有关此角色配置的信息,请参阅创建用于 AWS CLI 和 AWS DMS API 的 IAM 角色

如果 Amazon 托管策略未正确配置,您可能会收到类似以下内容的错误:

Unable to create S3 bucket for Redshift. Bucket Name for endpoint ARN is in use.

在以下情况下会出现此错误:

  1. Amazon 托管策略(AmazonDMSRedshiftS3Role 或类似的自定义策略)没有附加到 dms-access-for-endpoint IAM 角色。
  2. dms-access-for-endpoint IAM 角色策略具有针对 Amazon S3 的显式拒绝规则。
  3. AWS DMS 自动创建并与 Amazon Redshift 端点关联的预配置 Amazon S3 存储桶策略已通过显式限制进行修改。

要解决此错误,请将默认托管策略 (AmazonDMSRedshiftS3Role) 或类似的自定义策略附加到 dms-access-for-endpoint IAM 角色。然后,确认 AWS DMS 关联的默认 Amazon S3 存储桶策略尚未修改。有关更多信息,请参阅 Amazon S3 存储桶设置

将数据迁移到 Amazon Redshift 端点

当您将数据迁移到 Amazon Redshift 目标端点时,DMS 会使用默认的 Amazon S3 存储桶作为中间任务存储。然后,它会将迁移的数据复制到 Amazon Redshift 中。当您为目标 Amazon Redshift 端点运行测试连接时,会自动创建具有以下命名习惯的 S3 存储桶:

dms-'Redshift endpoint ARN'

您可以为此中间存储选择自定义 S3 存储桶。有关更多信息,请参阅将 Amazon Redshift 数据库用作 AWS Database Migration Service 的目标

解决 Amazon S3;状态代码:400;错误代码:TooManyBuckets 错误

如果您的账户已达到 Amazon S3 的限制,则在测试端点时可能会收到类似于以下内容的错误:

  • Service: Amazon S3; Status Code: 400; Error Code: TooManyBuckets; Request ID: xxxxxxxxxxx; S3 Extended Request ID: xxxxxxxxxxxxxx; Proxy: null

要解决此错误,请从您的账户中删除未使用的存储桶,然后再次测试端点。

解决 <NoSuchBucket> “指定的存储桶不存在”这一错误

如果您在任务迁移期间删除由 AWS DMS 创建的 Amazon S3 存储桶,则可能会在任务日志中收到类似于以下内容的错误:

  • <NoSuchBucket> 指定的存储桶不存在。

要解决此问题,请测试您的 Amazon Redshift 端点的连接状况,然后重新启动或恢复任务。如果您已将 DMS 端点配置为用作自定义存储桶,请确保它在再次启动任务之前在 Amazon S3 中可用。


这篇文章对您有帮助吗?


您是否需要账单或技术支持?