亚马逊 S3 注意事项 - Amazon SDK for JavaScript
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

Amazon SDK for JavaScript V3 API 参考指南详细描述了 Amazon SDK for JavaScript 版本 3 (V3) 的所有API操作。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

亚马逊 S3 注意事项

亚马逊 S3 分段上传

在 v2 中,Amazon S3 客户端包含一项支持通过 A mazon S3 提供的分段上传功能上传大型对象的upload()操作。

在 v3 中,该 @aws-sdk/lib-storage软件包可用。它支持 v2 upload() 操作中提供的所有功能,并支持 Node.js 和浏览器运行时。

亚马逊 S3 预签名 URL

在 v2 中,Amazon S3 客户端包含getSignedUrl()getSignedUrlPromise()操作,用于生成 URL,用户可以使用该网址从 Amazon S3 上传或下载对象。

在 v3 中,该 @aws-sdk/s3-request-presigner软件包可用。该软件包包含用于getSignedUrl() getSignedUrlPromise()操作的函数。这篇博文讨论了这个软件包的细节。

亚马逊 S3 区域重定向

如果将错误的区域传递给 Amazon S3 客户端,并随后引发错误 PermanentRedirect(状态 301),则 v3 中的 Amazon S3 客户端支持区域重定向(以前在 v2 中称为 Amazon S3 全球客户端)。您可以在客户端配置中使用该followRegionRedirects标志让 Amazon S3 客户端遵循区域重定向并支持其作为全球客户端的功能。

注意

请注意,此功能可能会导致额外的延迟,因为当收到状态为 301 的PermanentRedirect错误时,会使用更正的区域重试失败的请求。只有在您事先不知道存储桶的区域时,才应使用此功能。

亚马逊 S3 直播和缓冲响应

v3 SDK 倾向于不缓冲可能较大的响应。这在 Amazon S3 GetObject 操作中很常见,该操作Buffer在 v2 中返回 a,但在 v3 Stream 中返回 a。

对于 Node.js,您必须使用流或垃圾收集客户端或其请求处理程序,以便通过释放套接字来保持连接对新流量开放。

// v2 const get = await s3.getObject({ ... }).promise(); // this buffers consumes the stream already.
// v3, consume the stream to free the socket const get = await s3.getObject({ ... }); // object .Body has unconsumed stream const str = await get.Body.transformToString(); // consumes the stream // other ways to consume the stream include writing it to a file, // passing it to another consumer like an upload, or buffering to // a string or byte array.

有关更多信息,请参阅有关套接字耗尽的部分。