我正在使用golang sdk将文件上传到亚马逊S3上的存储桶。响应没有错误,文件已成功上传。我的问题是,当我在上载新.jpg
文件的同一区域中列出存储桶的对象时。我正在获取相同的文件列表,而没有将新文件添加到存储桶。我不知道我在做什么错。这是我用来列出存储桶中对象的代码。
input := &s3.ListObjectsInput{
Bucket: aws.String("Bucket Name"),
}
result2, err := svc.ListObjects(input)
if err != nil {
if aerr, ok := err.(awserr.Error); ok {
switch aerr.Code() {
case s3.ErrCodeNoSuchBucket:
fmt.Println(s3.ErrCodeNoSuchBucket, aerr.Error())
default:
fmt.Println(aerr.Error())
}
} else {
// Print the error, cast err to awserr.Error to get the Code and
// Message from an error.
fmt.Println(err.Error())
}
return
}
log.Println("Bucket List", result2)
s3最终是一致的,即使在同一区域内,也可能不会显示最近写入列表中的对象:
Amazon S3通过跨Amazon数据中心内的多台服务器复制数据来实现高可用性。如果PUT请求成功,则将安全存储您的数据。但是,有关更改的信息必须跨Amazon S3复制,这可能需要一些时间,因此您可能会观察到以下行为:
进程将新对象写入Amazon S3,并立即在其存储桶中列出密钥。在完全传播更改之前,该对象可能不会出现在列表中。
进程将替换现有对象,并立即尝试读取它。在更改完全传播之前,Amazon S3可能会返回之前的数据。
进程将删除现有对象并立即尝试读取它。在删除完全传播之前,Amazon S3可能会返回删除的数据。
进程删除现有对象,并立即在其存储桶中列出键。在完全传播删除之前,Amazon S3可能会列出删除的对象。
请参阅S3开发人员指南
有一个轮询Go AWS API调用“ func(* S3)WaitUntilObjectExists”,该文件一直在寻找文件,直到它出现或发生超时
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句