gpt4 book ai didi

java - 上传后 Amazon S3 文件可用性

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:43:19 25 4
gpt4 key购买 nike

我想在测试用例期间上传一个文件,然后立即下载它以验证文件是否已上传。我使用已经上传到 S3 的 key 。

上传完成后,我进行了下载,但不知何故我得到了该文件的先前版本。

我的代码看起来像这样:

final ObjectMetadata objectMetadata = new ObjectMetadata();
objectMetadata.setContentType(binaryDataReference.getContentType());
objectMetadata.setContentLength(data.length);
objectMetadata.setContentEncoding(xmlEncoding.getCharset());
s3Client.putObject(BUCKET_NAME, key, new ByteArrayInputStream(data), objectMetadata);
线程. sleep (30000);//我这样做是因为我认为这是一个时间问题。
S3Object object = s3Client.getObject(BUCKET_NAME, binaryDataKey);

但是我得到的对象不是我刚刚上传的对象。

我需要做些什么吗?有人知道这种方法有什么问题吗?

最佳答案

这就是S3 works的方式:

Amazon S3 buckets in the US Standard region provide eventual consistency. Amazon S3 buckets in all other regions provide read-after-write consistency for PUTS of new objects and eventual consistency for overwrite PUTS and DELETES.

这意味着在写入一个新对象后,只要它不在美国标准区域,您总是可以立即读取它。否则 - 即如果您在美国标准区域或您正在覆盖或删除现有对象 - 您只能保证“最终”您的操作结果将可见。

我曾经问过亚马逊,在覆盖一个对象并且成功读回最新版本后,是否可以保证在同一连接上的所有后续读取也返回最新版本。也就是说,如果我写了第 2 版并阅读了第 2 版,我是否再也不会阅读第 1 版了?他们没有回应。

如果您确实需要更强的一致性,那么 Google Cloud Storage provides read-after-update and read-after-delete consistency ,尽管我上次检查时 GCS 比 S3 稍微贵一些。

关于java - 上传后 Amazon S3 文件可用性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30650976/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com