如何解决在我的 Amazon S3 存储桶上执行“cp”或“sync”命令时出现的连接错误?

2 分钟阅读
0

我想要在我的 Amazon Simple Storage Service(Amazon S3)存储桶上执行“cp”或“sync”命令。但是,我遇到了一个错误。

简短描述

如需在 AWS 命令行界面(AWS CLI)上执行 cpsync 命令,您的计算机必须连接到正确的 Amazon S3 端点。否则,您会收到一条错误消息,提示服务无法连接到端点 URL,或者连接已超时。根据您的错误,请执行相关的故障排除步骤:

“Could not connect to the endpoint URL”错误

  • 确认您有正确的 AWS 区域和 Amazon S3 端点。
  • 验证您的 DNS,确认其可以解析 S3 端点。

“Connect timeout on endpoint URL”错误:

  • 验证您的网络,确认其可以连接到 S3 端点。
  • 对于 Amazon Elastic Compute Cloud(Amazon EC2)实例,请检查虚拟私有云(VPC)配置。

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

解决方法

确认您有正确的 AWS 区域和 Amazon S3 端点

当您在 AWS CLI 中运行命令时,它会向默认 AWS 区域的 S3 端点发送 API 请求。或者,当您指定区域时,它会向特定区域的 S3 端点发送 API 请求。然后,AWS CLI 会将请求重定向到存储桶的区域 S3 端点。

如果指定的区域或端点出现拼写错误或其他错误,则您可能会收到“Could not connect to the endpoint URL”错误。例如,以下命令会返回错误,因为端点名称中多了一个 e

aws s3 cp filename s3://DOC-EXAMPLE-BUCKET/ --endpoint-url https://s3-acceleratee.amazonaws.com

在运行 cpsync 命令之前,请确认关联的区域S3 端点是否正确。

**注意:**如果使用的是 Amazon S3 Transfer Acceleration,请参阅使用 Amazon S3 Transfer Acceleration 配置快速、安全的文件传输,了解端点名称。

验证您的 DNS,确认其可以解析 S3 端点

如需确认您的 DNS 是否可以解析 Amazon S3 端点,请使用 nslookupping等 DNS 查询工具。以下示例使用 nslookup

nslookup s3.amazonaws.com

以下示例使用 ping 确认 DNS 是否可以解析 S3 端点:

ping s3.amazonaws.com

如果您的 DNS 无法解析 S3 端点,请对您的 DNS 配置进行故障排除。如果 Amazon Route 53 是您的 DNS 提供商,请参阅 对 Amazon Route 53 进行故障排除

验证您的网络是否可以连接到 S3 端点

确认您的网络防火墙允许 Amazon S3 端点流量并且对该流量使用与 Amazon S3 流量相同的端口。

例如,以下 telnet 命令测试在端口 443 上与 ap-southeast-2 区域 S3 端点的连接:

telnet s3.ap-southeast-2.amazonaws.com 443

**注意:**将区域端点和端口(443 或 80)替换为适合您的使用案例的值。

对于 EC2 实例,请检查 VPC 配置

如果您在 EC2 实例上看到此错误,请检查您的 VPC 配置。如果 EC2 实例位于公有子网中,请检查下列条件:

如果 EC2 实例位于私有子网中,请检查以下条件:

  • 检查是否存在与子网的路由表关联的网络地址转换(NAT)网关。NAT 网关规定了到达 S3 端点的互联网路径。
  • 如果您将 VPC 端点用于 Amazon S3,请验证 AWS CLI 配置文件中是否包含正确的区域。Amazon S3 的 VPC 端点是区域特定的。如果当 VPC 端点位于其他区域时,使用 --region us-west-1 执行 sync 命令,则 CLI 会联系 https://s3.us-west-1.amazonaws.com。因此,您会收到“Could not connect to the endpoint URL”错误。
AWS 官方
AWS 官方已更新 8 个月前