Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services AWS S3上载的文件未显示_Amazon Web Services_Go_Amazon S3 - Fatal编程技术网

Amazon web services AWS S3上载的文件未显示

Amazon web services AWS S3上载的文件未显示,amazon-web-services,go,amazon-s3,Amazon Web Services,Go,Amazon S3,我正在使用golang sdk将文件上传到amazon S3上的bucket中。响应没有错误,文件上传成功。我的问题是,当我在上传新的.jpg文件的同一区域中列出bucket的对象时。我得到了相同的文件列表,没有新文件添加到Bucket中。我不知道我做错了什么。这是我用来列出bucket中的对象的代码 input := &s3.ListObjectsInput{ Bucket: aws.String("Bucket Name"), } result2, err := svc.Li

我正在使用golang sdk将文件上传到amazon S3上的bucket中。响应没有错误,文件上传成功。我的问题是,当我在上传新的
.jpg
文件的同一区域中列出bucket的对象时。我得到了相同的文件列表,没有新文件添加到Bucket中。我不知道我做错了什么。这是我用来列出bucket中的对象的代码

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最终是一致的,可能不会显示最近写入列表的对象,即使是来自同一区域:

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

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

进程替换现有对象并立即尝试读取 信息技术在完全传播更改之前,AmazonS3可能会返回 先前的数据

进程删除现有对象并立即尝试读取 信息技术在完全传播删除之前,AmazonS3可能会返回 删除数据

进程删除现有对象并立即列出其中的关键点 它的桶。在完全传播删除之前,AmazonS3可能会 列出已删除的对象


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

它在AWS控制台中显示了什么?三次检查上传和下载上的bucket名称是否相同。@CharlieFish我无法访问AWS控制台。我只有我正在使用的访问密钥sdk@Himanshu我想这会出错。但是你确定你有上传和获取文件的权限吗?有时,如果您没有正确设置这些权限,这些权限可能会很奇怪,并产生意外的结果。@CharlieFish是的,我在上载新对象之前列出了对象,然后又列出了对象,但没有看到任何更改。这是某种权限问题,因为当我尝试将文件上载到另一个存储桶时,它会返回上载文件的信息,包括aws s3上的位置。当我尝试列出存储桶中的对象时,它会显示带有新文件的更新列表。但如果您有权限错误,上传脚本肯定会抛出错误?我不知道为什么上传文件时没有出错。但现在我的问题通过使用另一个桶解决了。达到一致性的合理时间是多少?我猜严格来说这是某种统计分布,所以没有简单的答案。我看到的对象在写完10-15秒后不在那里,发生这种情况的可能性有多大(因为这个)?仅供参考,自2020年12月以来,S3现在非常一致,不再最终一致: