当我使用亚马逊的aws-android-sdk时,我发现了一件奇怪的事情。我的应用程序将一些文件放入存储桶,之后当我尝试从另一台设备获取此文件时 - 文件可能会消失(看起来可能是15次尝试中的1次)。但经过一段时间(不长) - 文件出现,我可以接受它。我的代码在这里:
final AWSCredentials credentials = new BasicAWSCredentials(sharedAccessKey,sharedSecretAccessKey);
client = new AmazonS3Client(credentials);
final PutObjectResult result = client.putObject(bucket, key, localFile);
在此之后,我检查结果不为空,并将通知发送到另一台设备以获取此文件。为什么我看到发送和可用性之间的这种延迟?解决方法是什么?
更新:我的另一部手机是iPhone,我尝试使用预先签名的网址下载文件
由于
答案 0 :(得分:1)
它被称为“最终的一致性”,你可以做很多事情,然后等待。我通常会发现将对象上传到S3,然后立即检查它是否(如100ms内)经常会失败。等待几秒钟通常很好,但有时事情似乎会变得有点粘。
下面有更多细节。美国标准,因为它在左岸和右岸存储数据在这方面可能更糟。
http://shlomoswidler.com/2009/12/read-after-write-consistency-in-amazon.html