AWS sts берут на себя роль в одной команде - PullRequest
1 голос
/ 04 августа 2020

Чтобы взять на себя роль AWS в CLI, я выполняю следующую команду:

aws sts assume-role --role-arn arn:aws:iam::123456789123:role/myAwesomeRole --role-session-name test --region eu-central-1

Это дает мне вывод, который соответствует схеме:

{
    "Credentials": {
        "AccessKeyId": "someAccessKeyId",
        "SecretAccessKey": "someSecretAccessKey",
        "SessionToken": "someSessionToken",
        "Expiration": "2020-08-04T06:52:13+00:00"
    },
    "AssumedRoleUser": {
        "AssumedRoleId": "idOfTheAssummedRole",
        "Arn": "theARNOfTheRoleIWantToAssume"
    }
}

И затем я вручную копирую и вставляю значения AccessKeyId, SecretAccessKey и SessionToken в кучу экспорта, например:

export AWS_ACCESS_KEY_ID="someAccessKeyId"                                                                                      
export AWS_SECRET_ACCESS_KEY="someSecretAccessKey"
export AWS_SESSION_TOKEN="someSessionToken"

Чтобы наконец взять на себя роль.

Как можно это сделать в одном go? Я имею в виду, без этого ручного вмешательства по копированию и вставке вывода команды aws sts ... в exports.

Ответы [ 2 ]

2 голосов
/ 04 августа 2020

Наконец, коллега поделился со мной этим замечательным фрагментом, который выполняет работу за один go:

eval $(aws sts assume-role --role-arn arn:aws:iam::123456789123:role/myAwesomeRole --role-session-name test | jq -r '.Credentials | "export AWS_ACCESS_KEY_ID=\(.AccessKeyId)\nexport AWS_SECRET_ACCESS_KEY=\(.SecretAccessKey)\nexport AWS_SESSION_TOKEN=\(.SessionToken)\n"')

Помимо AWS CLI, для него требуется только jq, который обычно устанавливается на любой Linux Рабочий стол.

1 голос
/ 04 августа 2020

Вы можете сохранить роль IAM в качестве профиля в AWS CLI, и он автоматически примет эту роль за вас.

Вот пример из Использование роли IAM в AWS CLI - AWS Интерфейс командной строки :

[profile marketingadmin]
role_arn = arn:aws:iam::123456789012:role/marketingadminrole
source_profile = user1

Это говорит:

  • Если пользователь указывает --profile marketingadmin
  • Тогда используйте учетные данные профиля user1
  • Для вызова AssumeRole с указанной ролью

Это означает, что вы можете просто вызвать такую ​​команду, и она примет эту роль и будет использовать автоматически вернул учетные данные:

aws s3 ls --profile marketingadmin
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...