适用于 JavaScript 的 Amazon SDKV3 API 参考指南详细描述了 适用于 JavaScript 的 Amazon SDK 版本 3 (V3) 的所有 API 操作。
Amazon S3 注意事项
Amazon S3 分段上传
在 v2 中,Amazon S3 客户端包含一个 upload() 操作,该操作支持利用 Amazon S3 提供的分段上传功能上传大型对象。
v3 中提供了
@aws-sdk/lib-storageupload() 操作提供的所有功能,同时支持 Node.js 和浏览器运行时。
Amazon S3 预签名 URL
在 v2 中,Amazon S3客户端包含 getSignedUrl() 和 getSignedUrlPromise() 操作,用于生成 URL,供用户用来从 Amazon S3 上传或下载对象。
v3 中提供了
@aws-sdk/s3-request-presignergetSignedUrl() 和
getSignedUrlPromise() 操作的函数。这篇博客文章
Amazon S3 区域重定向
如果向 Amazon S3 客户端传递了错误的区域,且随后引发
PermanentRedirect(状态码 301)错误,则 v3 的 Amazon S3 客户端会支持区域重定向(以前在 v2 中称为 Amazon S3 全局客户端)。您可以在客户端配置中使用 followRegionRedirects 标志,使 Amazon S3 客户端遵循区域重定向,并支持其作为全局客户端的功能。
注意
请注意,此功能可能会导致额外延迟,因为当收到状态码为 301 的 PermanentRedirect 错误时,系统会使用更正后的区域重试失败的请求。仅当您事先无法确定存储桶所在区域时,才应使用此功能。
Amazon S3 流式传输和缓冲响应
v3 SDK 倾向于不缓冲规模可能较大的响应。这种情况常见于 Amazon S3 的 GetObject 操作,该操作在 v2 中返回 Buffer,但在 v3 中返回 Stream。
对于 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.
有关更多信息,请参阅套接字耗尽