如何排查AWS SDK中MissingAuthenticationTokenException异常
问题:本地Go代码调用AWS Secrets Manager DescribeSecret接口报MissingAuthenticationTokenException
问题详情
本地运行用于AWS Secrets Manager密钥轮换的Lambda函数代码时,调用DescribeSecret接口出现如下错误:
operation error Secrets Manager: DescribeSecret, https response error StatusCode: 400, RequestID: b4023b03-6455-41e6-be63-639bff8ec56c, api error MissingAuthenticationTokenException: Missing Authentication Token
使用AWS CLI执行aws secretsmanager describe-secret --secret-id <你的密钥名>命令可正常返回结果,IAM权限配置无误,且本地代码与CLI使用相同的AWS凭证。目前搜索到的排查方案仅针对API Gateway场景,特此求助。
用到的Go代码
import ( "context" "fmt" "github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/aws-sdk-go-v2/service/secretsmanager" ) func checkSecret(ctx context.Context, secretName string) error { awsConfig := aws.NewConfig() awsConfig.Region = "us-east-1" client := secretsmanager.NewFromConfig(*awsConfig) resp, err := client.DescribeSecret(ctx, &secretsmanager.DescribeSecretInput{SecretId: &secretName}) if err != nil { fmt.Println("ERR Describing Secret: ", err) return err } return nil }
解决方案
代码的核心问题是未加载AWS凭证到配置中:aws.NewConfig()仅创建空的基础配置,不会自动读取本地凭证(如~/.aws/credentials、环境变量、IAM角色等),而AWS CLI会自动完成这一步。
修改后的代码如下:
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/secretsmanager" ) func checkSecret(ctx context.Context, secretName string) error { // 加载默认配置,自动读取本地凭证、区域等信息 awsConfig, err := config.LoadDefaultConfig(ctx, config.WithRegion("us-east-1")) if err != nil { fmt.Println("ERR Loading AWS Config: ", err) return err } client := secretsmanager.NewFromConfig(awsConfig) resp, err := client.DescribeSecret(ctx, &secretsmanager.DescribeSecretInput{SecretId: &secretName}) if err != nil { fmt.Println("ERR Describing Secret: ", err) return err } return nil }
关键说明
config.LoadDefaultConfig会按照以下优先级自动加载凭证:- 环境变量(AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY等)
- ~/.aws/credentials文件中的配置
- 本地IAM角色(如EC2、EKS等环境下的实例角色)
- 其他AWS支持的凭证源
- 若需指定特定凭证源,可通过
config.WithCredentialsProvider参数自定义,例如加载指定路径的凭证文件。
内容的提问来源于stack exchange,提问作者GridDragon
相关产品推荐
相关产品推荐

