我想对使用 Amazon Redshift 作为目标端点的 AWS Database Migration Service (AWS DMS) 任务的连接失败和错误进行故障排除。
简短描述
确保您已完成将 Amazon Redshift 数据库用作 AWS DMS 目标的先决条件。如果未完成这些先决条件,则与 Amazon Redshift 端点的连接可能会失败。
此外,如果您未正确设置 AWS DMS 任务的网络配置,则连接测试可能会失败。要对端点连接错误进行故障排除,请参阅如何对 AWS DMS 端点连接故障进行故障排除?
解决方法
解决“Role 'dms-access-for-endpoint' is not configured properly”错误
如果您没有为正在使用的端点 Amazon 资源名称 (ARN) 创建和配置所需的 AWS Identity and Access Management (IAM) 角色,则会收到此错误。
**注意:**如果您使用 AWS DMS 控制台,则 AWS DMS 会自动创建所需的 IAM 角色。如果您使用 AWS DMS API 或 AWS 命令行界面 (AWS CLI),则 AWS DMS 不会自动创建角色。
要解决此错误,请确认您已创建并正确配置了所需的 dms-access-for-endpoint IAM 角色。
解决“Unable to create S3 bucket for Redshift.Bucket Name for endpoint ARN is in use”错误
如果您未将 Amazon 托管策略正确附加到 dms-access-for-endpoint IAM 角色,则可能会收到以下错误:
“Unable to create S3 bucket for Redshift.Bucket Name for endpoint ARN is in use.”
您也可能会因以下原因而收到上述错误:
- dms-access-for-endpoint IAM 角色策略中存在对 Amazon Simple Storage Service (Amazon S3) 的显式拒绝。
- 您修改了 AWS DMS 自动创建并与 Amazon Redshift 端点关联的 Amazon S3 存储桶策略,在其中添加了显式限制。
要解决此错误,请将默认托管策略 (AmazonDMSRedshiftS3Role) 或类似的自定义策略附加到 dms-access-for-endpoint IAM 角色。然后,确认 AWS DMS 与端点关联的默认 S3 存储桶策略中不存在显式限制。有关详细信息,请参阅 Amazon S3 存储桶设置。
将数据迁移到 Amazon Redshift 端点
将数据迁移到 Amazon Redshift 目标端点时,AWS DMS 会使用默认 S3 存储桶作为任务的中间存储。然后,AWS DMS 会将迁移的数据复制到 Amazon Redshift。对目标 Amazon Redshift 端点运行测试连接时,会自动创建一个名为 dms-'Redshift endpoint ARN' 的 S3 存储桶。
您可以为该中间存储选择一个自定义 S3 存储桶。有关详细信息,请参阅将 Amazon Redshift 数据库用作 AWS DMS 的目标。
解决“Amazon S3; Status Code: 400; Error Code: TooManyBuckets”错误
如果您的 AWS 账户达到 Amazon S3 的配额,则您在测试端点时会收到类似于以下内容的错误:
“Service: Amazon S3; Status Code: 400; Error Code: TooManyBuckets; Request ID: #######; S3 Extended Request ID: xxxxxxxxxxxxxx; Proxy: null”
要解决此错误,请从您的账户中删除未使用的存储桶,然后再次测试该端点。
解决“<NoSuchBucket> The specified bucket does not exist”错误
如果您删除了 AWS DMS 在任务迁移期间创建的 S3 存储桶,则会在任务日志中收到以下错误:
“<NoSuchBucket> The specified bucket does not exist.”
要解决此错误,请测试您的 Amazon Redshift 端点的连接,然后重启或恢复任务。如果您已将端点配置为用作自定义存储桶,请在重启任务之前确保该端点在 Amazon S3 中可用。