Как мне создать сеанс для использования моего профиля? - PullRequest
0 голосов
/ 29 января 2020

Версия 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.

1 Ответ

0 голосов
/ 30 января 2020

Исправлено: необходимо использовать абсолютный путь для переменных среды, указывающих на файлы .aws.

...