AWS S3 GetObject 是否提供随机访问?

Viv*_*ajh 1 amazon-s3 amazon-web-services

我可以向 AWS S3 的 GetObject提供 HTTP Range 标头以请求对象的指定字节范围。

它是真正的随机访问,还是在返回我请求的范围之前,S3 是否必须处理该范围之前的所有对象?

范围标头是简单地减少传输的字节数,还是还提供有效的随机访问?

jar*_*mod 5

我对一个 2GB 文件进行了快速测试,并在文件中的各种偏移量(包括开始、中间和结束)处执行了 8 个字节的 ranged gets。time从我的 Mac 到 us-east-1 ,总时间在 250 毫秒的用户时间(包括启动 node.js、加载包、执行范围 GetObject)似乎非常一致。

我无法在 AWS 文档中找到关于此处预期行为的明确声明(尽管我希望并期望它接近 O(1) 常数时间)。

我鼓励您在进行设计之前进一步调查。也许在这里更新我们。

[更新] 这是一个稍微广泛的实验的结果。S3、Lambda、一个 2GB 文件,以及对文件随机部分的 100 次 100 字节读取:

在此处输入图片说明

  • 我使用 lambda 的原因是,我认为延迟会比您(从您的机器)看到的延迟好几个数量级,因为 lambda 与 s3 在同一数据中心中执行。没看到减少多少啊... (2认同)