

# 提出请求
<a name="MakingRequests"></a>

Amazon S3 是一项 REST 服务。您可以使用 REST API 向 Amazon S3 发送请求。

与 Amazon S3 的每一次交互都是经身份验证的或匿名的。身份验证是对尝试访问 (Amazon Web Services) (Amazon) 产品的请求者身份进行验证的过程。经身份验证的请求必须包含可验证请求发送者的签名值。签名值的一部分是从请求者 Amazon 的访问密钥（访问密钥 ID 和秘密访问密钥）生成的。有关获取访问密钥的更多信息，请参阅《Amazon Web Services 一般参考》**中的[如何获取安全凭证？](https://docs.amazonaws.cn/general/latest/gr/getting-aws-sec-creds.html) 

如果您使用 Amazon 开发工具包，则库将通过您提供的密钥计算签名。然而，如果您在应用程序中直接调用 REST API，您必须编写代码来计算签名并将它添加到请求中。

**Topics**
+ [关于访问密钥](#TypesofSecurityCredentials)
+ [请求终端节点](#RequestEndpoints)
+ [通过 IPv6 向 Amazon S3 发出请求](ipv6-access.md)
+ [使用 Amazon 开发工具包提出请求](MakingAuthenticatedRequests.md)
+ [使用 REST API 提出请求](RESTAPI.md)

## 关于访问密钥
<a name="TypesofSecurityCredentials"></a>

下面各部分将回顾您可以用于进行经身份验证的请求的访问密钥类型。

### Amazon Web Services 账户 访问密钥
<a name="requestsUsingAcctCred"></a>

账户访问密钥提供对账户拥有的 Amazon 资源的完全访问权限。以下是访问密钥示例：
+ 访问密钥 ID (20 个字符的字母数字字符串)。例如：AKIAIOSFODNN7EXAMPLE
+ 秘密访问密钥 (40 个字符的字符串)。例如：wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

访问密钥 ID 可唯一标识 Amazon Web Services 账户。可以使用这些访问密钥向 Amazon S3 发送经身份验证的请求。

### IAM 用户访问密钥
<a name="requestsUsingIAMUserCred"></a>

您可以为公司创建一个 Amazon Web Services 账户；但组织中可能有多个员工需要访问组织的 Amazon 资源。共享您的 Amazon Web Services 账户 访问密钥会降低安全性，但为每个员工创建单独的 Amazon Web Services 账户 可能也不太实际。此外，您也可能无法轻松地共享资源 (例如，存储桶和对象)，因为它们由不同账户所拥有。要共享资源，您必须授予许可，这意味着需要额外的工作。

在这些情况中，您可以使用 Amazon Identity and Access Management（IAM）在您的 Amazon Web Services 账户 下创建具有其自己的访问密钥的用户，然后附加 IAM 用户策略以授予这些用户适当的资源访问权限。为了更好地管理这些用户，IAM 允许您创建用户组并授予适用于该组中所有用户的组级权限。

这些用户被称为 IAM 用户，您可以在内创建和管理这些用户Amazon 父账户将控制用户访问的权限Amazon 父 Amazon Web Services 账户 负责控制和支付 IAM 用户创建的任何资源。这些 IAM 用户可以使用他们自己的安全证书，向 Amazon S3 发送经身份验证的请求。有关在 Amazon Web Services 账户 下创建和管理用户的更多信息，请参阅 [Amazon Identity and Access Management 产品详细信息页面](https://www.amazonaws.cn/iam/)。

### 临时安全凭证
<a name="requestsUsingTempCred"></a>

除了创建具有自己的访问密钥的 IAM 用户之外，IAM 还可让您向任何 IAM 用户授予临时安全凭证（临时访问密钥和安全令牌），以便这些用户可以访问 Amazon 服务和资源。您也可以在之外的系统中管理用户Amazon 这些用户称为联合身份用户。此外，用户还可以是您创建的能访问您的 Amazon 资源的应用程序。

IAM 提供了 Amazon Security Token Service API，供您用于请求临时安全证书。您可以使用 Amazon STS API 或 Amazon 开发工具包来请求这些凭证。API 将返回临时安全凭证 (访问密钥 ID 和秘密访问密钥) 和安全令牌。这些凭证仅在您请求它们时指定的持续时间内有效。使用访问密钥 ID 和私有密钥的方法与您在使用 Amazon Web Services 账户 或 IAM 用户访问密钥发送请求时使用它们的方法相同。此外，您必须在每个请求中包含您发送至 Amazon S3 的令牌。

IAM 用户可以请求这些临时安全证书以供自己使用，也可以分发给联合用户或应用程序使用。为联合用户请求临时安全证书时，您必须提供用户名称和 IAM 策略（定义您想要与这些临时安全证书关联的许可）。联合用户可获取的许可不能超过请求临时证书的父 IAM 用户的许可。

您还可以使用这些临时安全证书向 Amazon S3 发出请求。API 库会使用这些凭证计算必要的签名值，以便对您的请求进行身份验证。如果您使用过期的证书发送请求，Amazon S3 会拒绝请求。

有关在您的 REST API 请求中使用临时安全凭证对请求进行签名的信息，请参阅 [对 REST 请求进行签名和身份验证（Amazon 签名版本 2）](RESTAuthentication.md)。有关使用 Amazon 开发工具包发送请求的信息，请参阅 [使用 Amazon 开发工具包提出请求](MakingAuthenticatedRequests.md)。

有关 IAM 对临时安全凭证的支持的更多信息，请参阅《IAM 用户指南》**中的[临时安全凭证](https://docs.amazonaws.cn/IAM/latest/UserGuide/id_credentials_temp.html)。

为了提高安全性，您可以通过配置存储桶策略，要求在访问您的 Amazon S3 资源时进行多重验证 (MFA)。有关信息，请参阅[存储桶策略示例：需要 MFA](https://docs.amazonaws.cn//AmazonS3/latest/userguide/example-bucket-policies.html#example-bucket-policies-MFA)。在要求进行 MFA 才能访问您的 Amazon S3 资源之后，访问这些资源的唯一方式是提供使用 MFA 密钥创建的临时凭证。有关更多信息，请参阅 [Amazon Multi-Factor Authentication](https://www.amazonaws.cn/mfa/) 详细信息页面和《*IAM 用户指南*》中的[配置受 MFA 保护的 API 访问](https://docs.amazonaws.cn/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html)。



## 请求终端节点
<a name="RequestEndpoints"></a>

您可以向服务的预定义终端节点发送 REST 请求。有关所有 Amazon 服务及其相应端点的列表，请参阅《Amazon Web Services 一般参考》**中的[区域和端点](https://docs.amazonaws.cn/general/latest/gr/aws-service-information.html)。