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

使用aws configure sso配置Amazon SES时Go代码报无凭据错误

解决方案

你的需求完全可行,问题出在Go代码初始化AWS会话的方式未正确加载SSO凭证链,以下是具体修复步骤:

针对AWS SDK for Go v1(你当前使用的版本)

修改会话初始化逻辑,开启共享配置支持,让SDK自动读取SSO登录后的凭证:

enable := true
// 方式1:直接指定SSO配置文件名称
session, err := session.NewSessionWithOptions(session.Options{
    Config: aws.Config{
        Region:                        aws.String("ap-southeast-2"),
        CredentialsChainVerboseErrors: &enable,
    },
    Profile: "profile_name", // 替换为你的SSO配置文件名称
})

// 方式2:依赖环境变量AWS_DEFAULT_PROFILE,自动读取默认配置
session, err := session.NewSessionWithOptions(session.Options{
    SharedConfigState: session.SharedConfigEnable, // 关键:开启共享配置加载
    Config: aws.Config{
        Region:                        aws.String("ap-southeast-2"),
        CredentialsChainVerboseErrors: &enable,
    },
})

推荐升级到AWS SDK for Go v2(更优方案)

v1已进入维护模式,v2对SSO凭证的支持更完善,无需复杂配置即可自动识别已登录的SSO会话:

package main

import (
    "context"
    "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/ses"
)

func main() {
    // 加载默认配置,自动读取已登录的SSO凭证
    cfg, err := config.LoadDefaultConfig(context.TODO(),
        config.WithRegion("ap-southeast-2"),
        // 可选:指定配置文件,不填则读取AWS_DEFAULT_PROFILE环境变量的值
        config.WithSharedConfigProfile("profile_name"),
    )
    if err != nil {
        log.Fatalf("加载SDK配置失败: %v", err)
    }

    sesClient := ses.NewFromConfig(cfg)
    // 后续调用SendEmail逻辑...
}

额外检查项

  • 确保已执行aws sso login --profile profile_name完成登录,且代码运行环境与终端登录的是同一用户(避免权限或路径问题)
  • 确认~/.aws/config中对应profile包含正确的SSO配置字段(sso_start_url、sso_region、sso_account_id、sso_role_name)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 04:52:54