【发布时间】:2020-08-16 04:46:55
【问题描述】:
我正在尝试将 SSM 与 Go AWS 开发工具包一起使用。我在凭证文件中存储了有效的 IAM 用户 凭证。该文件和凭据都很好,因为它的行为符合预期
aws ssm start-session --target "instanceid"
但问题出在 Go SDK 上。我尝试了 v1 和 v2。
sdk v1
mySession := session.Must(session.NewSession())
svc := ssm.New(mySession, aws.NewConfig().WithRegion("ap-southeast-1"))
out, err := svc.StartSession(&ssm.StartSessionInput{Target: aws.String(instanceId)})
if err != nil {
log.Fatalf("error starting ssm : %v", err)
}
和 v2
cfg, err := external.LoadDefaultAWSConfig()
if err != nil {
panic("unable to load SDK config, " + err.Error())
}
svc := ssm.New(cfg)
req := svc.StartSessionRequest(&ssm.StartSessionInput{
Target: aws.String(instanceId),
})
resp, _ := req.Send(context.Background())
if err != nil {
log.Fatalf("error sending ssm request : %v", err)
}
fmt.Println(resp)
给出一个错误说法。
UnrecognizedClientException:请求中包含的安全令牌无效。
凭据也被加载到配置对象中。我想知道是不是因为我使用的是 IAM 用户凭证。
【问题讨论】:
-
您是否在 env 变量中使用凭据?也使用
export AWS_PROFILE="default" -
我做了一个假设角色,并像你说的那样使用了那个配置文件。现在,即使没有设置环境变量,它也可以工作。 echo $AWS_PROFILE 什么也不返回。但它有效。很奇怪。
-
您已经在
.aws/credentials之类的文件中拥有凭据,默认情况下可能是。
标签: amazon-web-services go sdk