AWS S3上传的文件未显示

时间:2018-07-18 18:13:17

标签: amazon-web-services go amazon-s3

我正在使用golang sdk将文件上传到Amazon 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)

1 个答案:

答案 0 :(得分:3)

s3最终是一致的,即使在同一区域内,也可能不会显示最近写入列表中的对象:

  

Amazon S3通过跨多个数据库复制数据来实现高可用性   亚马逊数据中心内的多台服务器。如果一个PUT请求是   成功后,您的数据将被安全地存储。但是,有关   更改必须跨Amazon S3复制,这可能需要一些时间,并且   因此您可能会观察到以下行为:

     

一个进程将一个新对象写入Amazon S3,并立即列出密钥   在它的桶里。在更改完全传播之前,对象   可能不会出现在列表中。

     

一个进程替换了一个现有的对象并立即尝试读取   它。在更改完全传播之前,Amazon S3可能会返回   以前的数据。

     

一个进程删除一个现有对象并立即尝试读取   它。在删除完全传播之前,Amazon S3可能会返回   删除的数据。

     

一个进程删除一个现有对象并立即列出其中的键   它的水桶。在删除完全传播之前,Amazon S3可能会   列出删除的对象。

请参阅S3 developer guide

有一个轮询Go AWS API调用“ func(* S3)WaitUntilObjectExists”,该文件一直在寻找文件,直到文件出现或超时。