Shiva 帮助您排除
S3 存储桶与 VPC
之间的连接问题

Shiva_S3_Thumbnail

我正在使用网关终端节点从 Amazon Virtual Private Cloud (Amazon VPC) 中的 Amazon Elastic Compute Cloud (Amazon EC2) 实例连接到 Amazon Simple Storage Service (Amazon S3) 存储桶,但它无法正常工作。如何解决此问题?

由于网络访问或允许从 Amazon VPC 连接到 Amazon S3 的安全规则的原因,您可能会遇到与网关 VPC 终端节点有关的连接问题。检查以下资源和配置以诊断和解决连接问题:

VPC 中的 DNS 设置

重要提示:必须在您的 VPC 中启用 DNS 解析(请参阅网关终端节点限制)。如果您正在使用自己的 DNS 服务器,请确保对 AWS 服务的 DNS 请求解析为 AWS 维护的 IP 地址

  1. 登录 Amazon VPC 控制台
  2. 在导航窗格中的 Virtual Private Cloud 下,选择 Your VPCs (您的 VPC)
  3. 在资源列表中,选择存在 S3 连接问题的 Amazon VPC。
  4. Summary (摘要) 视图中,确保将 DNS resolution (DNS 解析) 设置为 yes (是)。请参阅更新您的 VPC 的 DNS 支持

Amazon S3 的路由表设置

  1. 登录 Amazon VPC 控制台
  2. 在导航窗格中的 Virtual Private Cloud 下,选择 Route Tables (路由表)
  3. 选择与存在 S3 连接问题的 VPC 子网关联的路由表。
  4. 选择 Routes (路由) 视图。
  5. 确保存在使用网关 VPC 终端节点连接到 Amazon S3 的路由。请参阅网关终端节点路由

安全组出站规则

  1. 登录 Amazon EC2 控制台
  2. 在导航窗格中的 Network & Security 下,选择 Security Groups
  3. 在资源列表中,选择与您用于连接到 Amazon S3 的实例关联的安全组。
  4. Outbound (出站) 视图中,确保可用出站规则允许到 Amazon S3 的流量。

默认出站规则允许所有出站流量。如果安全组没有默认出站规则,而是具有限制性更强的规则,请确保添加以下出站规则之一:

网络 ACL 规则

  1. 登录 Amazon VPC 控制台
  2. 在导航窗格中的 Security (安全性) 下,选择 Network ACLs (网络 ACL)
  3. 在资源列表中,选择与存在 S3 连接问题的 VPC 子网关联的网络 ACL。
  4. Inbound Rules (入站规则) 视图中,确保规则允许在临时 TCP 端口 1024-65535 上允许来自 Amazon S3 的入站返回流量。
  5. Outbound Rules (出站规则) 视图中,确保规则允许到 Amazon S3 的流量。

注意:默认情况下,network ACLs (网络 ACL) 允许所有入站和出站 IPv4 流量以及 IPv6 流量(如果适用)。如果您的网络 ACL 规则限制流量,则必须为 S3 指定 CIDR 块(IP 地址范围)

网关 VPC 终端节点策略

  1. 登录 Amazon VPC 控制台
  2. 在导航窗格中的 Virtual Private Cloud 下,选择 Endpoints (终端节点)
  3. 在资源列表中,选择与存在 S3 连接问题的 VPC 子网关联的终端节点。
  4. 选择 Policy (策略) 视图。
  5. 查看终端节点策略。检查策略是否阻止访问 S3 存储桶或阻止受连接问题影响的 IAM 用户访问。编辑策略以启用 S3 存储桶或 IAM 用户的访问权限。请参阅为 Amazon S3 使用终端节点策略

S3 存储桶策略

  1. 登录 Amazon S3 控制台
  2. 选择存在连接问题的 S3 存储桶。
  3. 选择 Permissions (权限) 视图。
  4. 选择 Bucket Policy
  5. 确保存储桶策略允许从网关 VPC 终端节点以及要连接的 VPC 进行访问。编辑策略以允许从网关 VPC 终端节点和 VPC 进行访问。请参阅使用 Amazon S3 存储桶策略

注意:您的存储桶策略可以限制只能从特定的公有 IP 地址或与 Amazon VPC 中的实例关联的弹性 IP 地址进行访问。您无法根据与实例关联的私有 IP 地址限制访问。请参阅限制对特定 IP 地址的访问权限

如果您使用的是代理服务器,请确保允许通过该代理服务器建立您的 VPC 连接。如果您不为 S3 使用代理服务器,请在访问您的 S3 存储桶时使用以下命令绕过代理服务器:

export no_proxy = mybucket.s3-us-west-2.amazonaws.com

IAM 策略

  1. 登录 AWS IAM 控制台
  2. 选择用于从实例访问 S3 存储桶的 IAM 用户或角色。
  3. 选择路由视图。
  4. 确保与 IAM 用户或角色关联的用户具有访问 Amazon S3 的正确权限。请参阅如何将对 Amazon S3 存储桶的访问权限限制为特定 IAM 角色演练示例:使用用户策略控制对存储桶的访问

AWS CLI 配置

确保配置 AWS 命令行界面 (AWS CLI) 并设置默认 AWS 区域。使用命令 aws configure 指定默认区域名称

如果您不想指定默认区域或者希望覆盖默认区域,请确保在每个 AWS CLI 命令中设置 --region 选项。


此页内容对您是否有帮助? |

返回 AWS Support 知识中心

需要帮助? 请访问 AWS 支持中心

发布时间:2017 年 12 月 14 日

更新时间:2018 年 8 月 31 日