我要下載特定存儲(chǔ)桶中的所有日志文件(最終是我擁有的每個(gè)存儲(chǔ)桶),這是我正在使用的代碼package mainimport ( "fmt" "os" "path/filepath" "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws/session" "github.com/aws/aws-sdk-go/service/s3" "github.com/aws/aws-sdk-go/service/s3/s3manager")var ( // variables empty for security Bucket = "" // Download from this bucket Prefix = "" // Using this key prefix LocalDirectory = "s3logs" // Into this directory)func main() { client := s3.New(session.New(), &aws.Config{Region: aws.String("us-west-1")}) params := &s3.ListObjectsInput{Bucket: &Bucket, Prefix: &Prefix} manager := s3manager.NewDownloader(client) d := downloader{bucket: Bucket, dir: LocalDirectory, Downloader: manager} client.ListObjectsPages(params, d.eachPage)}type downloader struct { *s3manager.Downloader bucket, dir string}func (d *downloader) eachPage(page *s3.ListObjectsOutput, more bool) bool { for _, obj := range page.Contents { d.downloadToFile(*obj.Key) } return true}func (d *downloader) downloadToFile(key string) { // Create the directories in the path file := filepath.Join(d.dir, key) if err := os.MkdirAll(filepath.Dir(file), 0775); err != nil { panic(err) } fmt.Printf("Downloading " + key) // Setup the local file fd, err := os.Create(file) if err != nil { panic(err) } defer fd.Close() // Download the file using the AWS SDK fmt.Printf("Downloading s3://%s/%s to %s...\n", d.bucket, key, file) params := &s3.GetObjectInput{Bucket: &d.bucket, Key: &key} d.Download(fd, params)}但是,當(dāng)我運(yùn)行此代碼時(shí),我收到一個(gè)恐慌錯(cuò)誤不能在 s3manager.NewDownloader 的參數(shù)中使用客戶端(類型 *s3.S3)作為類型 client.ConfigProvider:*s3.S3 沒有實(shí)現(xiàn) client.ConfigProvider(缺少 ClientConfig 方法)我不知道此代碼將不起作用,任何想法和/或修復(fù)
從 AWS S3 下載日志文件恐慌:運(yùn)行時(shí)錯(cuò)誤:
ibeautiful
2021-11-29 16:39:37