

# 什么是 Amazon S3？
<a name="Welcome"></a>

Amazon Simple Storage Service（Amazon S3）是一种对象存储服务，提供行业领先的可扩展性、数据可用性、安全性和性能。各种规模和行业的客户都可以使用 Amazon S3 存储和保护任意数量的数据，用于数据湖、网站、移动应用程序、备份和恢复、归档、企业应用程序、IoT 设备和大数据分析。Amazon S3 提供了管理功能，使您可以优化、组织和配置对数据的访问，以满足您的特定业务、组织和合规性要求。

本指南提供以开发人员为中心的有关使用 Amazon S3 REST API 来构建在云中存储和检索数据的应用程序的信息。

您可以借助任何支持 HTTP 的工具包来使用 REST API。只要对象是匿名可读的，您甚至可以使用浏览器来提取它们。

REST API 使用标准的 HTTP 标头和状态代码，以使标准的浏览器和工具包按预期工作。在某些区域中，我们向 HTTP 添加了功能（例如，我们添加了标头来支持访问控制）。在这些情况下，我们以符合标准 HTTP 使用样式的方式添加了新功能。

**注意**  
HTTP 上的 SOAP 支持已弃用，但是仍可在 HTTPS 上使用。但是，不支持将新的 Amazon S3 功能用于 SOAP。我们建议您使用此 REST API 或以下链接中的 Amazon SDK：  
[https://www.amazonaws.cn/en/tools/](https://www.amazonaws.cn/en/tools/)

本开发人员指南包括：
+ [通用请求标头](RESTCommonRequestHeaders.md)和[通用响应标头](RESTCommonResponseHeaders.md)
+ [错误响应](ErrorResponses.md) 
+ [使用 POST 的基于浏览器的上传（Amazon 签名版本 4）](sigv4-UsingHTTPPOST.md) 

**重要**  
在阅读特定 API 主题之前，请先阅读以下有关身份验证和访问控制的内容。

对 Amazon S3 的请求可以是经过身份验证的，也可以是匿名的。经过身份验证的访问需要 Amazon 可用来对请求进行身份验证的凭证。

## API 调用建议
<a name="APICallRecs"></a>

直接从代码中进行 REST API 调用可能会比较繁琐。它要求您编写必要的代码来计算有效的签名，以便对请求进行身份验证。我们建议改用以下替代方法：
+ 使用 [Amazon SDK](https://www.amazonaws.cn/en/tools/) 发送您的请求。

  另请参阅[示例代码和库](https://www.amazonaws.cn/code)。

  如果您使用 SDK，则无需编写代码来计算用于请求身份验证的签名，因为 SDK 客户端会使用您提供的访问密钥对请求进行身份验证。您应始终使用 Amazon SDK，除非您有充分的理由不这样做。
+ 使用 Amazon CLI 进行 Amazon S3 API 调用。有关设置 Amazon CLI 和示例 Amazon S3 命令的信息，请参阅以下主题：

   《Amazon Simple Storage Service 用户指南》**中的[设置 Amazon CLI](https://docs.amazonaws.cn/AmazonS3/latest/userguide/setup-aws-cli.html)。

   《Amazon Command Line Interface用户指南》**中的[在 Amazon 命令行界面中使用 Amazon S3](https://docs.amazonaws.cn/cli/latest/userguide/cli-s3.html)。

## 直接调用 REST API
<a name="MakingRestAPICalls"></a>

**注意**  
`PUT` 请求标头的大小限制为 8KB。在 PUT 请求标头中，系统定义的元数据的大小限制为 2 KB。通过计算每个键和值的 US-ASCII 编码中的字节总数来测量系统定义的元数据的大小。

如果您想进行自己的 REST API 调用，而不是使用上面的替代方法之一，那么需要记住一些事项。
+ 要从您的代码直接调用 REST API，请使用有效的凭证创建签名，并在请求中包含签名。有关各种身份验证方法和签名计算的信息，请参阅[对请求进行身份验证（Amazon 签名版本 4）](sig-v4-authenticating-requests.md)。
+ REST API 使用标准的 HTTP 标头和状态代码，以便标准的浏览器和工具包按预期工作。在某些区域中，我们向 HTTP 添加了功能（例如，我们添加了标头来支持访问控制）。在这些情况下，我们以符合标准 HTTP 使用样式的方式添加了新功能。有关发出请求的更多信息，请参阅[提出请求](MakingRequests.md)。

## 权限
<a name="Permissions"></a>

您可以使用有效的凭证来对您的请求进行身份验证，但除非您拥有账户拥有者或存储桶拥有者的 S3 权限，否则您无法创建或访问 Amazon S3 资源。这些权限通常通过 Amazon Identity and Access Management（IAM）[策略](https://docs.amazonaws.cn/AmazonS3/latest/userguide/security-iam.html#security_iam_access-manage)授予，例如存储桶策略。例如，您必须拥有创建 S3 存储桶或在存储桶中获取对象的权限。有关 S3 权限的完整列表，请参阅 [Amazon S3 的操作、资源和条件键](/service-authorization/latest/reference/list_amazons3.html)。

有关按 S3 资源类型划分的对于 S3 API 操作的权限的更多信息，请参阅《Amazon Simple Storage Service 用户指南》**中的 [Amazon S3 API 操作所需的权限](https://docs.amazonaws.cn/AmazonS3/latest/userguide/using-with-s3-policy-actions.html)。

如果您使用您的 Amazon Web Services 账户的根用户凭证，则您拥有所有权限。但是，不建议使用根用户凭证。相反，我们建议您在账户中创建 Amazon Identity and Access Management（IAM）角色并管理用户权限。有关更多信息，请参阅《Amazon Simple Storage Service 用户指南》**中的[访问管理](https://docs.amazonaws.cn/AmazonS3/latest/userguide/access-management.html)。