如何使用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
相关产品推荐
相关产品推荐

