You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

迁移至AWS Golang SDK v2后,如何获取S3存储使用量?

解决AWS Golang SDK v2调用NetApp StorageGrid存储用量端点的问题

你可以通过SDK v2底层的rest.NewRequest构造自定义请求,来调用NetApp StorageGrid的存储用量端点,无需遍历所有对象。具体实现如下:

核心思路

AWS SDK v2虽未提供顶层的自定义请求创建方法,但可利用其底层REST客户端构造请求,指定x-ntap-sg-usage查询参数,实现和SDK v1一致的功能。

代码示例

package main

import (
	"context"
	"fmt"
	"github.com/aws/aws-sdk-go-v2/aws"
	"github.com/aws/aws-sdk-go-v2/config"
	"github.com/aws/aws-sdk-go-v2/service/s3"
	"github.com/aws/aws-sdk-go-v2/aws/transport/rest"
)

func main() {
	// 加载配置,替换为你的StorageGrid端点和认证信息
	cfg, err := config.LoadDefaultConfig(context.TODO(),
		config.WithEndpointResolverWithOptions(aws.EndpointResolverWithOptionsFunc(
			func(service, region string, options ...interface{}) (aws.Endpoint, error) {
				return aws.Endpoint{
					URL: "https://your-storagegrid-instance-url",
				}, nil
			})),
		config.WithCredentialsProvider(aws.NewCredentialsCache(
			aws.StaticCredentialsProvider{
				Value: aws.Credentials{
					AccessKeyID:     "your-access-key",
					SecretAccessKey: "your-secret-key",
				},
			})),
	)
	if err != nil {
		panic(fmt.Errorf("加载配置失败: %v", err))
	}

	// 创建S3客户端
	s3Client := s3.NewFromConfig(cfg)

	// 构造自定义REST请求
	req, err := rest.NewRequest(rest.POST, "/", nil)
	if err != nil {
		panic(fmt.Errorf("构造请求失败: %v", err))
	}
	// 指定存储用量查询参数
	req.URL.RawQuery = "x-ntap-sg-usage"

	// 发送请求并解析响应
	var usageResponse struct {
		TotalUsage int64 `json:"totalUsage"` // 字段需匹配StorageGrid API返回结构
		// 可根据需要添加其他字段,如bucketUsage等
	}

	_, err = s3Client.Client.Send(context.TODO(), req, func(r *rest.Response) error {
		return r.UnmarshalJSON(&usageResponse)
	})
	if err != nil {
		panic(fmt.Errorf("发送请求失败: %v", err))
	}

	fmt.Printf("账户总存储用量: %d bytes\n", usageResponse.TotalUsage)
}

注意事项

  • 确保配置正确的StorageGrid端点、访问密钥和密钥,认证方式需与你的StorageGrid实例一致
  • 响应结构体的字段需要严格匹配NetApp StorageGrid API的返回格式,可参考官方文档调整
  • 该方法性能与SDK v1的自定义请求一致,无需遍历对象,适合大型存储桶场景

内容的提问来源于stack exchange,提问作者aristov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 13:21:15