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

如何使用Go查询AWS IAM STS端点兼容性设置?

查询AWS STS全局端点设置的Go实现方案

这个STS全局端点的配置属于IAM账号级别的设置,并不在STS的API里,而是通过IAM的GetAccountSummary接口获取,返回结果中的GlobalEndpointTokenVersion字段对应控制台的选项:

  • v1Token → 仅在默认启用的AWS区域中有效
  • v2Token → 所有AWS区域

以下是使用AWS SDK for Go v2的实现代码:

package main

import (
	"context"
	"fmt"
	"log"

	"github.com/aws/aws-sdk-go-v2/aws"
	"github.com/aws/aws-sdk-go-v2/config"
	"github.com/aws/aws-sdk-go-v2/service/iam"
)

func main() {
	// 加载默认AWS配置(从环境变量、凭证文件等读取)
	cfg, err := config.LoadDefaultConfig(context.TODO())
	if err != nil {
		log.Fatalf("加载SDK配置失败: %v", err)
	}

	// 初始化IAM客户端
	iamClient := iam.NewFromConfig(cfg)

	// 调用GetAccountSummary接口
	summaryResp, err := iamClient.GetAccountSummary(context.TODO(), &iam.GetAccountSummaryInput{})
	if err != nil {
		log.Fatalf("获取账号摘要失败: %v", err)
	}

	// 提取STS全局端点设置
	tokenVersionVal, exists := summaryResp.SummaryMap["GlobalEndpointTokenVersion"]
	if !exists {
		log.Println("响应中未找到GlobalEndpointTokenVersion字段")
		return
	}

	// 解析并输出对应设置
	switch aws.ToString(tokenVersionVal) {
	case "v1Token":
		fmt.Println("当前STS全局端点设置: 仅在默认启用的AWS区域中有效")
	case "v2Token":
		fmt.Println("当前STS全局端点设置: 所有AWS区域")
	default:
		fmt.Printf("当前STS全局端点设置: 未知值 %s\n", aws.ToString(tokenVersionVal))
	}
}

如果使用AWS SDK for Go v1,逻辑类似:初始化IAM客户端后调用GetAccountSummary,从返回的SummaryMap中读取GlobalEndpointTokenVersion字段即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 05:51:07