передача доступа и секретного ключа aws cli

Я пытаюсь встроить доступ и секретный ключ вместе с aws cli. например

aws ec2 describe-instances --aws-access-key <access_key> --aws-secret-key <secret_key>

Также пробовал с параметрами -o и -w для доступа и секретного ключа соответственно. В нем говорится: неизвестный параметр aws-access-key и aws-secret-key


person user3089927    schedule 28.04.2015    source источник


Ответы (11)


Вы можете указать ключи в командной строке через envars:

AWS_ACCESS_KEY_ID=ABCD AWS_SECRET_ACCESS_KEY=EF1234 aws ec2 describe-instances

См. http://docs.aws.amazon.com/cli/latest/topic/config-vars.html#credentials

РЕДАКТИРОВАТЬ: @wisbucky отметил, что это может оставить секреты в вашей истории команд. Один из способов обойти это в bash, по крайней мере, я думаю, - это добавить к вашей команде пробел, и команда не должна распространяться на вашу историю bash.

person DanH    schedule 08.02.2017
comment
Только будьте осторожны, что ваши ключи будут записаны в вашей истории команд. - person wisbucky; 16.03.2017
comment
сработал ли приведенный выше синтаксис для кого-либо. Я достаточно искал, но не смог найти рабочий пример рекомендованной роли IAM в соответствии с передовой практикой. - person Mohammed Rafeeq; 24.08.2017
comment
Он не отвечает на конкретный вопрос, но предполагает всеобъемлющее решение. Работает, но на поиски решения скидывает. Ищу конкретный ответ. - person eco; 09.08.2018
comment
При добавлении пробела в начале он будет исключен из вашей истории BASH, только если он настроен. Не все среды BASH настроены на исключение команд из истории с пробелом в начале. - person SeamusJ; 16.07.2019
comment
Вы должны указать регион. - person Cerin; 15.08.2019
comment
Обратите внимание, что вам также может потребоваться игнорировать переменные среды файла учетных данных (и, возможно, конфигурации) AWS, как в AWS_CREDENTIAL_FILE="" AWS_CONFIG_FILE="" AWS_ACCESS_KEY_ID=ABCD AWS_SECRET_ACCESS_KEY=EF1234 aws ec2 describe-instances, поскольку они имеют приоритет при получении учетных данных. - person Erhhung; 16.11.2019

Вы можете установить учетные данные с помощью:

aws configure set aws_access_key_id <yourAccessKey>
aws configure set aws_secret_access_key <yourSecretKey>

Подтвердите свои учетные данные с помощью:

aws sts get-caller-identity

Для получения дополнительной информации о команде set:

aws configure set help

Общая схема такова:

aws <command> help
aws <command> <subcommand> help

Примечание. Перед изменением учетных данных вы можете сохранить их копию:

aws configure get aws_access_key_id
aws configure get aws_secret_access_key
person ulubeyn    schedule 13.09.2018
comment
Как настроить роль role_arn, которая будет использоваться профилем из интерфейса командной строки AWS? Возможно? Я хочу вызвать лямбда-функцию из контейнера awscli, но она возвращает An error occurred (AccessDenied) when calling the AssumeRole operation: Access denied. Любая идея? - person Carlos Andres; 02.12.2018

Обобщая aws doc, можно сказать, что способы передать учетные данные в командную строку. Обратите внимание, что нет параметров командной строки для непосредственной передачи ключа и секретного ключа. Вместо этого используется «цепочка поставщиков».

В своих сценариях bash я часто использую переменные среды. Чтобы добавить немного безопасности, я отправляю файл, содержащий переменные, а не помещаю их в сценарий. С именованными профилями это еще проще.

Цепочка провайдеров:

  1. параметры командной строки: укажите регион, формат вывода или профиль
  2. Переменные среды: AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY и AWS_SESSION_TOKEN
  3. Файл учетных данных AWS - находится в ~ / .aws / credentials в Linux, macOS или Unix или в C: \ Users \ USERNAME .aws \ credentials в Windows. Этот файл может содержать несколько именованных профилей в дополнение к профилю по умолчанию.
  4. Файл конфигурации CLI - обычно находится в ~ / .aws / config в Linux, macOS или Unix или в C: \ Users \ USERNAME .aws \ config в Windows. Этот файл может содержать профиль по умолчанию, именованные профили и параметры конфигурации для каждого из них.
  5. Учетные данные контейнера - предоставляются Amazon Elastic Container Service на экземплярах контейнера, когда вы назначаете роль своей задаче.
  6. Учетные данные профиля инстанса - эти учетные данные могут использоваться в инстансах EC2 с назначенной ролью инстанса и доставляются через службу метаданных Amazon EC2.
person LHWizard    schedule 16.08.2018

Я думаю, что предыдущие ответы верны, вот мой ответ, который больше похож на ответ Дана, но также включает несколько вариантов и Windows.

Linux / Mac

export AWS_ACCESS_KEY_ID=your_key; export AWS_SECRET_ACCESS_KEY=your_secret;  aws s3 ls 

Еще один способ снять шкуру с кота для Linux / Mac

AWS_ACCESS_KEY_ID=your_key AWS_SECRET_ACCESS_KEY=your_secret aws s3 ls 

Windows Powershell

$Env:AWS_ACCESS_KEY_ID="your_key"
$Env:AWS_SECRET_ACCESS_KEY="your_secret"
aws s3 ls  

Полная благодарность за отличный документ AWS

person grepit    schedule 03.01.2020

Вы также можете использовать aws configure:

$ aws configure
AWS Access Key ID [None]: xxxxxxxxxxxxxxxxxxxxxxxxx
AWS Secret Access Key [None]: xxxxxxxxxxxxxxxxxxxxxxxxx
person MaxNevermind    schedule 04.07.2017

Мне пришлось получить доступ к нескольким учетным записям на Amazon .... так что мое решение:

в: ~ / .aws / config

[по умолчанию] aws_access_key_id = xxxx aws_secret_access_key = xxxxxx region = sa-east-1 output = text

[profile prof1] region = us-east-1 output = text aws_access_key_id = yyy aws_secret_access_key = yyyyy

[profile prof2] region = us-east-1 output = text aws_access_key_id = wwwwww aws_secret_access_key = wwwww

..и затем, когда вызываю CLI aws, я передал параметр "--profile" как:

/ usr / local / bin / aws ec2 description-security-groups --group-ids sg-xxxx --profile prof2

...это!

person costamatrix    schedule 18.03.2019
comment
Это помогло мне, но мне пришлось хранить свои учетные данные и регион в файле с именем credentials, а не в config. - person Stephen Oberauer; 01.07.2019

Это лучший и более безопасный способ использования ролей IAM. Там вы можете установить определенные права для этого экземпляра и то, к чему он должен получить доступ в вашей учетной записи.

В зависимости от того, какую версию awscli вы используете, вы можете использовать описать экземпляры двумя способами.

Как этот:

ec2din -O your-key -W your-secret-key --region your-region

Также есть большая разница, когда вы устанавливаете awscli с помощью pip install или из pkg, например, Ubuntu deb package.

ec2din - это короткая команда для ec2-description-instance

Дополнительные примеры см. Здесь: ec2-describe-instance.

С Уважением.

person Peycho Dimitrov    schedule 21.05.2015

введите здесь описание изображения

Чтобы получить доступ к aws через cli,

aws configure
person Prashanth Sams    schedule 08.11.2018
comment
в PHP: putenv (AWS_ACCESS_KEY_ID = XXXX); putenv (AWS_SECRET_ACCESS_KEY = XXX); - person costamatrix; 18.03.2019

Другой метод - использовать echo с aws configure как однострочное:

echo -ne '%s\n%s\n%s\n%s\n' <access_key> <security_key> <region> <output> | aws configure
person pacificgilly1992    schedule 06.09.2019

Вы должны сохранить свои учетные данные в файле ~ / .aws / config (или .aws / credentials).

Дополнительная информация о том, как его настроить, http://docs.aws.amazon.com/cli/latest/reference/configure/index.html

Также в качестве альтернативного способа вы можете создать роль IAM и определенную политику и установить ее для своего экземпляра ec2, в котором вы будете использовать aws cli, тогда вам не понадобятся какие-либо учетные данные там.

person Evgeniy Kuzmin    schedule 28.04.2015
comment
Вы также можете сохранить несколько профилей в файле .aws / credentials и ссылаться на них с помощью: aws ec2 description-instance --profile profile-name - person jorfus; 21.09.2018

Не рекомендуется использовать ключ доступа и идентификатор, так как они будут сохранены в файле конфигурации. Лучшим подходом является создание роли IAM и предоставление необходимого вам доступа.

person Niharika    schedule 26.06.2020