Версия AWS SDK для Go?
github.com/aws/aws-sdk-go v1.28.9
Версия Go (go version
)?
> go version master [c6a9853] modified untracked
go version go1.13.6 darwin/amd64
Какую проблему вы видели?
При создании сеанса не выбирается указанный профиль.
Я устанавливаю следующие переменные среды:
AWS_CONFIG_FILE=~/.aws/config
AWS_CREDENTIALS_FILE=~/.aws/credentials
AWS_SHARED_CREDENTIALS_FILE=~/.aws/credentials
AWS_SDK_LOAD_CONFIG=1
И я создаю сеанс так:
sess, err := session.NewSessionWithOptions(session.Options{
Profile: "dev",
Config: aws.Config{
Region: aws.String("us-west-2"),
CredentialsChainVerboseErrors: aws.Bool(true),
},
SharedConfigState: session.SharedConfigEnable,
})
if err != nil {
panic(err)
}
ssmsvc := ssm.New(sess)
keyname := "/dev/ops/test/slack/api_token"
withDecryption := false
param, err := ssmsvc.GetParameter(&ssm.GetParameterInput{
Name: &keyname,
WithDecryption: &withDecryption,
})
if err != nil {
panic(err)
}
value := *param.Parameter.Value
fmt.Println(value)
И в результате я получаю это:
panic: NoCredentialProviders: no valid providers in chain
caused by: EnvAccessKeyNotFound: failed to find credentials in the environment.
SharedCredsLoad: failed to load profile, dev.
EC2RoleRequestError: no EC2 instance role found
caused by: RequestError: send request failed
Однако AWS CLI может легко подобрать мой профиль:
>aws ssm get-parameter --region="us-west-2" --profile="dev" --name="/dev/ops/test/slack/api_token"
{
"Parameter": {
"Name": "/dev/ops/test/slack/api_token",
"Type": "SecureString",
"Value": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx==",
"Version": 1,
"LastModifiedDate": 1580165013.606,
"ARN": "arn:aws:ssm:us-west-2:xxxxxxxxxxxx:parameter/dev/ops/test/slack/api_token"
}
}
Дополнительная справка (мой разработчик профиль, а также мой профиль моста):
> cat ~/.aws/config master [c6a9853] modified untracked
[profile dev]
role_arn = arn:aws:iam::xxxxxxxxxxxx:role/admin
role_session_name = name
source_profile = bridge
region = us-west-2
> cat ~/.aws/credentials master [c6a9853] modified untracked
[bridge]
aws_access_key_id=xxxxxxxxxxxxxxx
aws_secret_access_key=xxxxxxxxxxxxxxx/xxxxxxxxxxxxxxx
Шаги для воспроизведения
Настройка сеанса для использования роли из файла ~/.aws/config
.