Чтобы использовать интерфейс командной строки AWS, необходимо сначала убедиться, что ваши учетные данные ключа доступа AWS настроены правильно.
Когда у вас есть AWS access_key_id и secret_access_key, вы можете либо вручную добавить их в файл учетных данных, либо использовать команду aws configure, чтобы настроить его на своем локальном компьютере.
В этом руководстве описаны все параметры, доступные в команде aws configure, а также способы управления несколькими профилями:
Когда вы выполните команду aws configure без каких-либо аргументов, вы настроите учетные данные aws в качестве своего профиля по умолчанию.
$ aws configure AWS Access Key ID [None]: AAABBBCCCDDDEEEFFFGG AWS Secret Access Key [None]: aaabbbcccdddeeefffggghhhiiijjjkkklllmmmn Default region name [None]: us-east-1 Default output format [None]: text
В приведенном выше:
Когда вы в первый раз выполните конфигурацию aws, он создаст каталог ~/.aws, если он еще не вышел из вашего домашнего каталога со следующими двумя файлами:
$ ls -1 ~/.aws config credentials $ cat ~/.aws/config [default] region = us-east-1 output = text $ cat ~/.aws/credentials [default] aws_access_key_id = AAABBBCCCDDDEEEFFFGG aws_secret_access_key = aaabbbcccdddeeefffggghhhiiijjjkkklllmmmn
В приведенном выше:
Если вы хотите подключиться к другой учетной записи AWS из CLI, вы можете изменить существующие учетные данные профиля по умолчанию, снова выполнив команду «aws configure».
$ aws configure AWS Access Key ID [****************FFGG]: ZZZZZZCCCDDDEEEFFFZZ AWS Secret Access Key [****************mmmn]: zzzzzzcccdddeeefffggghhhiiijjjkkklllmmzz Default region name [us-east-1]: us-west-2 Default output format [text]: json $ cat ~/.aws/config [default] region = us-west-2 output = json
Замечания:
Когда вы подключаетесь к нескольким учетным записям AWS, используя только профиль по умолчанию, вы должны продолжать изменять значения access_key_id и secret_access_key, что нецелесообразно.
В этом случае вы можете создать несколько профилей.
Допустим, вам нужно использовать команды CLI AWS для доступа к вашей учетной записи AWS-dev и учетной записи AWS-prod. В этом случае создайте профиль разработчика и профиль продукта, как описано ниже.
Сначала создайте профиль разработчика, как показано ниже. Используйте значения access_key_id и secret_access_key вашей учетной записи AWS-dev:
$ aws configure --profile dev AWS Access Key ID [None]: DEVBBBCCCDDDEEEFFDEV AWS Secret Access Key [None]: devbbbcccdddeeefffggghhhiiijjjkkklllmdev Default region name [None]: us-east-1 Default output format [None]:
Затем создайте профиль продукта, как показано ниже. Используйте значения access_key_id и secret_access_key вашей учетной записи AWS-prod:
$ aws configure --profile prod AWS Access Key ID [None]: PRODBBCCCDDDEEEFPROD AWS Secret Access Key [None]: prodbbcccdddeeefffggghhhiiijjjkkklllprod Default region name [None]: us-west-2 Default output format [None]:
После добавления новых дополнительных профилей (dev и prod) теперь у нас всего 3 профиля, включая профиль по умолчанию, как показано ниже в файлах конфигурации.
$ cat ~/.aws/config [default] region = us-east-1 output = text [profile dev] region = us-east-1 [profile prod] region = us-west-2 $ cat ~/.aws/credentials [default] aws_access_key_id = AAABBBCCCDDDEEEFFFGG aws_secret_access_key = aaabbbcccdddeeefffggghhhiiijjjkkklllmmmn [dev] aws_access_key_id = DEVBBBCCCDDDEEEFFDEV aws_secret_access_key = devbbbcccdddeeefffggghhhiiijjjkkklllmdev [prod] aws_access_key_id = PRODBBCCCDDDEEEFPROD aws_secret_access_key = prodbbcccdddeeefffggghhhiiijjjkkklllprod
В приведенном выше:
По умолчанию интерфейс командной строки AWS будет использовать учетные данные из профиля по умолчанию. Например, следующая команда выведет список всех томов EBS с использованием учетных данных профиля по умолчанию.
aws ec2 describe-volumes
Если вы хотите подключиться к другой учетной записи AWS. Например, чтобы подключиться к учетной записи AWS-dev, используйте профиль dev, как показано ниже:
aws ec2 describe-volumes --profile dev
Следующие будут подключаться к профилю продукта:
aws ec2 describe-volumes --profile prod
Обратите внимание, что следующие команды точно такие же. Оба будут использовать профиль по умолчанию:
aws ec2 describe-volumes aws ec2 describe-volumes --profile default
В соответствующей заметке, чтобы запустить экземпляр EC2 из CLI, обратитесь к следующему: Как запустить экземпляр Amazon AWS EC2 с UserData из CLI.
Указание параметра профиля во всех ваших CLI может быть немного громоздким. Чтобы избежать этого, вы можете установить свой профиль, используя переменную среды AWS_PROFILE.
Сначала настройте AWS_PROFILE для подключения к учетной записи AWS-dev.
export AWS_PROFILE=dev
С этого момента все выполняемые вами команды CLI AWS будут подключаться к учетной записи AWS-dev. Вам больше не нужно указывать опцию –profile.
Следующие команды будут использовать учетные данные профиля dev (не учетные данные по умолчанию), так как мы установили AWS_PROFILE равным dev.
aws ec2 description-объемы aws ec2 description-instance aws s3 ls ..
Если вы хотите подключиться к учетной записи AWS-prod, просто установите AWS_PROFILE на prod, как показано ниже.
export AWS_PROFILE = prod
После вышеизложенного следующие команды будут использовать учетные данные профиля prod для подключения к вашей учетной записи AWS-prod.
aws ec2 describe-volumes aws ec2 describe-instances aws s3 ls ..
Если вы выбрали dev или prod и хотите подключиться к учетной записи AWS, которая указывает на профиль по умолчанию, у вас есть два варианта.
Вы можете установить AWS_PROFILE по умолчанию, как показано ниже.
export AWS_PROFILE=prod
Или вы можете просто удалить переменную среды AWS_PROFILE, которая затем автоматически начнет использовать профиль по умолчанию.
unset AWS_PROFILE
После вышеизложенного следующие команды будут использовать учетные данные профиля по умолчанию для подключения к вашей учетной записи AWS-prod.
aws ec2 describe-volumes aws ec2 describe-instances aws s3 ls ..
Простой способ просмотреть все профили, которые вы настроили в своей системе, – это просмотреть содержимое файлов конфигурации и учетных данных.
cat ~/.aws/config cat ~/.aws/credentials
Опция list в команде aws configure отобразит информацию о текущем профиле, как показано ниже.
$ aws configure list Name Value Type Location ---- ----- ---- -------- profile None None access_key ****************FFGG shared-credentials-file secret_key ****************mmmn shared-credentials-file region us-east-1 config-file ~/.aws/config
В приведенном выше профиле – первая строка показывает, какой профиль вы используете. В столбце «Value» 1-й строки (то есть для профиля) написано «», это означает, что в данный момент вы подключены к профилю «default».
Если вы измените профиль на «prod», вы увидите, что в столбце «Value» 1-й строки будет указано «prod», как показано ниже.
$ export AWS_PROFILE=prod $ aws configure list Name Value Type Location ---- ----- ---- -------- profile prod manual --profile
Вы также можете передать имя профиля, чтобы просмотреть информацию о профиле без изменения текущего профиля, как показано ниже.
$ aws configure list --profile dev
Вместо стандартных ~/.aws/config и ~/.aws/credentials вы также можете использовать другое местоположение и имя файла, используя следующие переменные среды:
AWS_SHARED_CREDENTIALS_FILE – задайте это значение для имени файла, содержащего ваши учетные данные AWS.
AWS_CONFIG_FILE – задайте для этого значения имя файла, содержащего информацию о конфигурации вашего профиля AWS.
Например:
export AWS_SHARED_CREDENTIALS_FILE=/var/tmp/mycredentials export AWS_CONFIG_FILE=/var/tmp/myconfig
После установки указанных выше значений все команды интерфейса командной строки AWS начнут использовать профили и соответствующие учетные данные из файлов в указанном выше местоположении:
aws ec2 describe-volumes aws ec2 describe-instances aws s3 ls ..
В следующем выводе столбец «Location» последней строки (region) указывает, какой файл конфигурации он использует.
$ aws configure list Name Value Type Location ---- ----- ---- -------- profile None None access_key ****************FFGG shared-credentials-file secret_key ****************mmmn shared-credentials-file region us-east-1 config-file /var/tmp/myconfig
Если вы хотите просто просмотреть одно значение из файла конфигурации или файла учетных данных, используйте параметр get в командах настройки aws с использованием следующего синтаксиса.
Команда get полезна, если вы что-то пишете в сценарии и хотите получить информацию о профиле внутри вашего сценария оболочки.
aws configure get varname [--profile profile-name]
Следующее будет отображать только access_key_id текущего профиля.
$ aws configure get aws_access_key_id AAABBBCCCDDDEEEFFFGG
Вы также можете использовать любой из следующих:
aws configure get aws_access_key_id aws configure get aws_secret_access_key aws configure get region aws configure get output
Вы также можете указать имя профиля, как показано ниже:
aws configure get dev.aws_secret_access_key aws configure get prod.aws_secret_access_key
Настройка команд get и set может быть полезна, если вы пишете сценарий оболочки для управления значениями ваших файлов config/credentials.
Синтаксис:
aws configure set varname value [--profile profile-name]
Вы можете просто установить значение одного конкретного параметра, как показано ниже.
$ aws configure set region us-east-2
Вы можете установить значения любого из следующих параметров:
aws configure set aws_access_key_id NEWABBCCCDDDEEEFPNEW aws configure set aws_secret_access_key newdbbcccdddeeefffggghhhiiijjjkkklllpnew aws configure set region us-east-2 aws configure set output json
Вы также можете указать имя профиля, как показано ниже:
aws configure set dev.region us-east-2 aws configure set prod.output json
Вы можете добавлять модели на основе информации из файла JSON.
Например, если у вас есть версия CLI AWS, в которой нет Amazon Polly, вы можете переустановить CLI AWS, чтобы получить опрос.
Или вы можете скачать файл модели polly’s и использовать опцию add-model в aws configure, как показано ниже.
aws configure add-model --service-model file:///var/tmp/polly.json
Приведенная выше команда создаст каталог ~/.aws/models и создаст следующий подкаталог на основе информации из данного файла json.
ls -l ~/.aws/models/polly/2016-06-10/service-2.json
Ниже приведены первые несколько строк файла json, который использовался в приведенном выше примере.
$ head -10 ~/.aws/models/polly/2016-06-10/service-2.json { "version":"2.0", "metadata":{ "apiVersion":"2016-06-10", "endpointPrefix":"polly", "protocol":"rest-json", "serviceFullName":"Amazon Polly", "serviceId":"Polly", "signatureVersion":"v4", "uid":"polly-2016-06-10"
Приведенный выше файл такой же, как тот, который мы использовали во время нашей add-model.
diff -w ~/.aws/models/polly/2016-06-10/service-2.json /var/tmp/polly.json
Вы также можете указать другое имя службы, передав параметр –service-name, как показано ниже.
aws configure add-model --service-model file:///var/tmp/custom.json --service-name mycustom
Выше создаст подкаталог в ~/.aws/models с именем службы, которое вы указали, как показано ниже.
ls -l ~/.aws/models/mycustom/2016-06-10/service-2.json