gpt4 book ai didi

amazon-web-services - Golang Aws S3 NoSuchKey : The specified key does not exist

转载 作者:数据小太阳 更新时间:2023-10-29 03:26:26 27 4
gpt4 key购买 nike

我正在尝试从 S3 下载对象,以下是我的代码:

func listFile(bucket, prefix string) error {
svc := s3.New(sess)
params := &s3.ListObjectsInput{
Bucket: aws.String(bucket), // Required
Prefix: aws.String(prefix),
}
return svc.ListObjectsPages(params, func(p *s3.ListObjectsOutput, lastPage bool) bool {
for _, o := range p.Contents {
//log.Println(*o.Key)
log.Println(*o.Key)
download(bucket, *o.Key)
return true
}
return lastPage
})
}

func download(bucket, key string) {
logDir := conf.Cfg.Section("share").Key("LOG_DIR").MustString(".")
tmpLogPath := filepath.Join(logDir, bucket, key)
s3Svc := s3.New(sess)
downloader := s3manager.NewDownloaderWithClient(s3Svc, func(d *s3manager.Downloader) {
d.PartSize = 2 * 1024 * 1024 // 2MB per part
})
f, err := os.OpenFile(tmpLogPath, os.O_CREATE|os.O_WRONLY, 0644)
if _, err = downloader.Download(f, &s3.GetObjectInput{
Bucket: aws.String(bucket),
Key: aws.String(key),
}); err != nil {
log.Fatal(err)
}
f.Close()
}

func main() {
bucket := "mybucket"
key := "myprefix"
listFile(bucket, key)
}

我可以在函数 listFile() 中获取对象列表,但是调用下载时返回 404,为什么?

最佳答案

我在最近版本的库中遇到了同样的问题。有时,对象键会以“./”为前缀,SDK 会默认删除该前缀,从而导致下载失败。

尝试将此添加到您的 aws.Config 中,看看是否有帮助:

config := aws.Config{
...
DisableRestProtocolURICleaning: aws.Bool(true),
}

我提交了一个 issue .

关于amazon-web-services - Golang Aws S3 NoSuchKey : The specified key does not exist,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40235755/

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