Amazon S3 排错最佳实践 - Amazon Simple Storage Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

Amazon S3 排错最佳实践

设计使用 Amazon S3 的应用程序时,正确处理 Amazon S3 错误非常重要。本节描述了设计应用程序时,您应该考虑的问题。

重试 InternalErrors

内部错误是指在 Amazon S3 环境中发生的错误。

可能还没有处理收到 InternalError 响应的请求。例如,如果 PUT 请求返回 InternalError,则后续的 GET 操作可能会检索旧的值或更新的值。

如果 Amazon S3 返回 InternalError 响应,请重新提交请求。

针对重复的 SlowDown 错误调整应用程序

与其他分布式系统一样,S3 的保护机制能够检测出有意或无意的资源过度消耗,并做出相应的反应。在较高的请求速率触发了其中某个保护机制后,将发生 SlowDown 错误。降低您的请求速率将减少或消除此类型的错误。一般而言,大多数用户不会经常遇到这些错误;但是,如果您希望了解更多信息,或遇到了严重或意外的 SlowDown 错误,请将该错误发布到我们的 Amazon S3 开发人员论坛或在以下网址注册 Amazon Web Services Support:(https://aws.amazon.com/premiumsupport/)

隔离错误

注意

HTTP 上的 SOAP 支持已弃用,但 SOAP 仍可在 HTTPS 上使用。SOAP 不支持新增的 Amazon S3 功能。我们建议您使用 REST API 或 Amazon SDK,而不是使用 SOAP。

Amazon S3 提供了一组由 SOAP 和 REST API 共同使用的错误代码。SOAP API 将返回标准的 Amazon S3 错误代码。REST API 的设计与标准的 HTTP 服务器相似,它与现有的 HTTP 客户端 (例如,浏览器、HTTP 客户端库、代理、缓存等等) 进行交互。为了确保 HTTP 客户端能够正确地处理错误,我们将每个 Amazon S3 错误都映射为一个 HTTP 状态代码。

HTTP 状态代码没有 Amazon S3 错误代码那样直观,并且包含的错误信息也较少。例如,NoSuchKeyNoSuchBucket Amazon S3 错误均映射为 HTTP 404 Not Found 状态代码。

尽管 HTTP 状态代码包含较少的错误信息,但能够理解 HTTP 而不是 Amazon S3 API 的客户端通常能够正确地处理错误。

因此,处理错误或向最终用户报告 Amazon S3 错误时,请使用 Amazon S3 错误代码而不是 HTTP 状态代码,这是因为前者包含最详细的错误信息。此外,调试应用程序时,您还应该参考 XML 错误响应的人类可读的 <Details> 元素。