我知道 Amazon S3 中沒有檔案夾,但我們可以通過在密鑰名稱上使用"/"來模擬它們。 鑒于此,是否可以使用AWS SDK for Go v2來計算一個檔案夾的大小?還是我必須檢索檔案夾中的所有物件,然后逐一計算其大小?
uj5u.com熱心網友回復:
不確定是否是最簡單的方法,但是你可以遍歷你感興趣的物件串列 - https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html,并在本地匯總大小。
uj5u.com熱心網友回復:
可以計算一個桶中的專案所占的大小
package main
import (
"context"/span>
"flag"/span>
"fmt"/span>
"log"
"github.com/aws/sdk-go-v2/config"/span>
"github.com/aws/sdk-go-v2/service/s3"。
)
var (
bucketName string
objectPrefix string string (
objectDelimiterstring
maxKeysint
)
func init() {
flag.StringVar(&bucketName, "bucket", "", "要列出物件的S3桶的`名稱`。")
flag.StringVar(&objectPrefix, "prefix", "", "要列出的S3物件鍵的可選`物件前綴'。")
flag.StringVar(&objectDelimiter, "delimiter", ""。
"可選的`物件鍵定界符',由S3 List物件用來分組物件鍵。")
flag.IntVar(&maxKeys, "max-keys"/span>, 0,
"每頁的最大鍵數",一次性檢索。)
}
//使用分頁法列出一個桶中的所有物件。
func main() {
flag.Parse()
if len(bucketName) == 0 {
flag.PrintDefaults()
log.Fatalf("無效引數,需要水桶名稱")
}
//從環境和共享配置中加載SDK的配置,并
//span>用這個創建客戶端。
cfg, err := config.LoadDefaultConfig(context.TODO() )
if err != nil {
log.Fatalf(" failed to load SDK configuration, %v", err)
}
client := s3.NewFromConfig(cfg)
//根據CLI標志的輸入來設定引數。
params := &s3.ListObjectsV2Input{
Bucket: &bucketName,
}
if len(objectPrefix) != 0 {
params.Prefix = &objectPrefix
}
if len(objectDelimiter)!
params.Delimiter = &objectDelimiter
}
//為ListObjectsV2操作創建分頁器。
p := s3.NewListObjectsV2Paginator(client, params, func(o *s3.ListObjectsV2PaginatorOptions) {
if v := int32(maxKeys); v != 0 {
o.limit = v
}
})
// Iterate through the S3 object pages, printing each object returned.
var I int
var total int64
log.Println("Objects:")
for p.HasMorePages() {
i
//Next Page為每個頁面的檢索采取一個新的環境。這就是
//你可以添加超時或最后期限。
page, err := p.NextPage(context.TODO() )
if err != nil {
log.Fatalf(" failed to get page %v, %v"/span>, i, err)
}
//記錄找到的物件。
for _, obj := range page.Contents {
// fmt.Println("Object:", *obj.Key)/span>
total = obj.Size
}
}
fmt.Println("total", total)
}
那么,如果我是正確的,在閱讀s3.ListObjectsV2Input檔案時,在我看來,你可以配置s3.ListObjectV2Input實體的Prefix成員來選擇一個特定檔案夾。這個例子已經演示了,如果你傳入標志-prefix=...
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/329376.html
標籤:
上一篇:覆寫Go中的私鑰
下一篇:從Json中的一個陣列中提取數值
