Thank you for reading this post, don't forget to subscribe!
1.Установка aws cli
2.Работа с aws cli
3.Работа с AWS S3
4.Работа с AWS EC2
5.Работа с AWS ELB
6.Работа с AWS IAM
AWS CLI — интерфейс командной строки AWS – это единый инструмент для управления сервисами AWS. Загрузив всего одно средство, вы сможете контролировать множество сервисов AWS из командной строки и автоматизировать их с помощью скриптов.
Установка AWS CLI в Unix/Linux
Сейчас я расскажу как можно установить AWS CLI на некоторые Unix/Linux ОС.
Для начала, устанавливаем PIP:
$ yum install https://centos7.iuscommunity.org/ius-release.rpm
$ yum install python36u python36u-devel python36u-pip
Установка AWS CLI в CentOS/Fedora/RedHat
-===СПОСОБ 1- использовать PIP===-
Если у вас уже есть pip и поддерживаемая версия Python, вы можете установить CLI AWS с помощью следующей команды:
$ pip install --upgrade --user awscli
Чтобы обновить CLI AWS, запустите команду:
Чтобы удалить CLI AWS, используйте команду:
Чтобы узнать версию AWS CLI выполните:
$ aws --version
PS: Для python3 используйте pip3!
-===СПОСОБ 2- использовать easy_install===-
# easy_install awscli
-===СПОСОБ 3- использовать git репозиторий===-
# cd aws-cli && python setup.py install
1 2 3 |
[My_profile_1] aws_access_key_id = AKIAJCMNQGYHTIR2FIBQ aws_secret_access_key = hZ7JMx5NHGGVBNKLSompEyZmjp0jQ5Zv4H4RaX |
PS: Так же, можно добавить регион (например):
И нам предлагают ввести некоторые данные:
1 2 3 4 5 |
AWS Access Key ID [****************IMPA]: AWS_Access_Key_ID [****************JZQk]: AWS_Secret_Access_Key Default region name [None]: Your_Region Default output format [None]: output_format(json|text) |
Они будут записаны в дефолтное значения ( в файле ~/.aws/config):
1 2 3 4 5 6 |
$ aws configure --profile user2 AWS Access Key ID [None]: AKIAIKLLBJLBNBGJHJVJHAMPLE AWS Secret Access Key [None]: je7MHLKGJKGJKHGHFGFHGEXAMPLEKEY Default region name [None]: us-east-1 Default output format [None]: text |
Работа с AWS S3
Открываем конфиг:
# vim ~/.aws/credentials
Прописываем ключи. Например:
[Your_acc_name]
aws_access_key_id = XXXXXXXXXXXXXXXXXXXXXXXXX
aws_secret_access_key = YYYYYYYYYYYYYYYYYYYY
Где:
- Your_acc_name — Имя для аккаунта. Потом можно его использовать.
- aws_access_key_id — Ключик.
- aws_secret_access_key — Еще один ключик.
Создание AWS S3 bucket-ов через командную строку в Unix/Linux
Работа с бакетом, т.е с S3 начнется непосредственно, с создания самого бакета.
Чтобы создать, используйте:
aws s3 mb s3://TEST43432234432
make_bucket: s3://TEST43432234432/
Иногда, нужно указывать регион в котором будет создаваться бакет:
$ aws s3 mb s3://TEST43432234432 --region us-west-1
Так же, можно через s3api, например:
$ aws s3api create-bucket --bucket Test_bucket --region us-east-1
Просмотр AWS S3 bucket-ов через командную строку в Unix/Linux
Чтобы просмотреть содержимое бакета, используйте:
aws s3 ls s3://TEST43432234432
ИЛИ, просмотреть какие бакеты имеются:
1 2 3 4 5 6 7 8 9 10 11 |
aws s3 ls s3:// 2016-04-12 22:52:40 3189-2115-5431-billing-export 2016-12-22 11:57:19 TEST43432234432 2016-01-15 22:04:32 cf-templates-hktxunelj8xe-us-east-1 2015-05-04 19:39:08 cf-templates-hktxunelj8xe-us-west-2 2015-09-25 05:56:01 elasticbeanstalk-us-west-2-318921155431 2016-08-04 20:17:36 hybrisinstallers 2014-07-30 23:46:12 magento_data 2016-01-20 01:08:51 nsc-savvis-disks 2016-01-21 21:57:19 security-collections 2016-01-15 22:05:02 turinggroupbaseiam-cloudtrailbucket-1acrgd625crdz |
Или, можно вывести список бакетов по конкретному профелю:
ИЛИ, вывести сколько занимают данные:
Копирование, удаление, перемещение данных AWS S3 bucket-ов через командную строку в Unix/Linux
В следующем примере объект копируется в bucket (Test_bucket). Ему назначено чтение для всех пользователей и полный доступ (чтение и запись) для учетной записи My_user@test.ru:
$ aws s3 cp file.txt s3://Test_bucket/ --grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers full=emailaddress=My_user@test.ru
Чтобы указать класс хранения(REDUCED_REDUNDANCY или STANDARD_IA) для объектов которые вы загружаете в S3, используйте опцию —storage-class:
$ aws s3 cp file.txt s3://Test_bucket/ --storage-class REDUCED_REDUNDANCY
Например, давайте скопируем некоторый файл со своего рабочего сервера в бакет:
Если пунктом назначения указан корень bucket-а, то будут скопированы только файлы из указанного каталога:
Если указать каталог, то будет скопировано всё дерево файлов/каталогов:
Можно копировать данные между S3 бакетами:
Чтобы удалить файл в бакете, используйте:
Чтобы удалить весь контент в бакете (рекурсивно), используйте:
Синхронизация AWS S3 bucket-ов через командную строку в Unix/Linux
В следующем примере выполняется синхронизация текущего каталога с бакетом:
$ aws s3 sync . s3://Test_bucket/some_path_in_backet
Normally, sync only copies missing or outdated files or objects between the source and target. However, you may supply the —delete option to remove files or objects from the target not present in the source.
Если вы удалили в текущем каталоге файл и хотите чтобы он удалился ( засинкался) в бакете, используйте «—delete» опцию:
$ aws s3 sync . s3://Test_bucket/some_path_in_backet --delete
Действие наоборот:
$ aws s3 sync s3://Test_bucket/some_path_in_backet . --delete
Используем синхронизацию определенного класса:
$ aws s3 sync . s3://Test_bucket/some_path_in_backet --storage-class STANDARD_IA
Команда sync также принимает параметр «—acl», с помощью которого вы можете установить права доступа для файлов, скопированных в S3. Параметр принимает значения private, public-read и public-read-write:
$ aws s3 sync . s3://Test_bucket/some_path_in_backet --acl public-read
Удаление AWS S3 bucket-ов через командную строку в Unix/Linux
Чтобы удалить бакет, используйте:
aws s3 rb s3://TEST43432234432
remove_bucket: s3://TEST43432234432/
Так же можно использовать принудительное удаление бакета (если он не пустой). Для этого служит «—force» опция:
$ aws s3 rb s3://bucket-name --force
Работа с AWS EC2
Прописываем ключи. Например:
aws_access_key_id = XXXXXXXXXXXXXXXXXXXXXXXXX
aws_secret_access_key = YYYYYYYYYYYYYYYYYYYY
Где:
- Your_acc_name — Имя для аккаунта. Потом можно его использовать.
- aws_access_key_id — Ключик.
- aws_secret_access_key — Еще один ключик.
Просмотр AWS EC2 через командную строку в Unix/Linux
И так, чтобы просмотреть имеющиеся вольюмы для конкретного профиля, используйте:
$ aws ec2 --profile Reaxys describe-volumes
PS: Иногда требуется указывать регион:
Так же, можно region указать в конфиг-файле.
Чтобы распечатать только 1-ю volume, используйте:
$ aws ec2 --profile Reaxys --region us-east-1 describe-volumes --query 'Volumes[0]'
Чтобы распечатать все волюмы, используйте:
Можно выводить не все параметры, а только определенные, например:
Можно вывести волюмы с определенного региона, например:
Очень удобно и наглядно использовать вывод в виде столбцов, например:
Проверим доступность зон:
$ aws ec2 --profile Reaxys --region us-east-1 describe-availability-zones
Чтобы получить описание всех имеджей, выполните:
Генерация CLI Skeleton через командную строку в Unix/Linux
Большинство команд CLI поддерживают параметры «-generate-cli-skeleton» и «-cli-input-json», которые вы можете использовать для хранения параметров в JSON и читать их из файла, а не вводить их в командной строке.
И так, сгенерируем скелетон:
$ aws ec2 --profile Reaxys --region us-east-1 run-instances --generate-cli-skeleton --dry-run
PS: Опция «—dry-run» служит для тестирования ( она не создает никаких изменений).
Можно сохранить вывод в файл:
$ aws ec2 --profile Reaxys --region us-east-1 run-instances --generate-cli-skeleton > ec2runinst.json
Можно открыть данный файл и внести изменения ( например удалить не нужное или что-то добавить).
Передайте конфигурацию JSON-у:
$ aws ec2 --profile Reaxys --region us-east-1 run-instances --cli-input-json file://ec2runinst.json
Перезапуск AWS EC2 инстенсов через командную строку в Unix/Linux
Смотрим какие имеются:
$ aws ec2 --profile Reaxys --region us-east-1 describe-instances --query 'Reservations[].Instances[].[PrivateIpAddress,InstanceId,State.Name]' --output text
И, собственно, ребутаем:
$ aws ec2 --profile Reaxys --region us-east-1 reboot-instances --instance-ids i-09aa273c40cb05767 --dry-run
PS: Я использую «—dry-run» опцию для тестов. С данной опцией не произойдет рестарт инстенса.
В AWS CLI для EC2 нет ничего сложного. Нужно почитать документацию и вникнуть в процесс.
Для помощи, используйте:
$ aws ec2 help
Работа с AWS ELB
Открываем конфиг:
# vim ~/.aws/credentials
Прописываем ключи. Например:
[Your_acc_name]
aws_access_key_id = XXXXXXXXXXXXXXXXXXXXXXXXX
aws_secret_access_key = YYYYYYYYYYYYYYYYYYYY
Где:
- Your_acc_name — Имя для аккаунта. Потом можно его использовать.
- aws_access_key_id — Ключик.
- aws_secret_access_key — Еще один ключик.
Создание, удаление я не выполнял еще. А вот просмотр данных — это да. Сейчас я покажу некоторые примеры использования.
Проверим что содержится во всех LB по определенному аккаунту:
$ aws elb describe-load-balancers --profile Your_acc_name --region us-east-1 --output text
или
$ aws elb describe-load-balancers --profile Your_acc_name --region us-east-1 --output json
Для того, чтобы получить имена всех ELB, выполните:
$ aws elb describe-load-balancers --profile Your_acc_name --region us-east-1 | grep -E "LoadBalancerName"
Проверим что имеется в определенном ELB:
$ aws elb describe-load-balancers --profile Your_acc_name --region us-east-1 --load-balancer-name My_ELB_name
Иногда, выпадают ноды из кластера и чтобы проверить статус хелса всех нод в кластере ELB ( нужно знать имя. Я в верху описывал как получить его):
1 2 3 4 5 6 7 8 9 10 11 12 |
$ aws elb describe-instance-health --profile Your_acc_name --region us-east-1 --output text --load-balancer-name My_ELB_name INSTANCESTATES N/A i-02eb2e3a74dc8755b N/A InService INSTANCESTATES N/A i-03e2bf392cf4d65e6 N/A InService INSTANCESTATES N/A i-041101b6ade745211 N/A InService INSTANCESTATES N/A i-05dd40ff3e5c566db N/A InService INSTANCESTATES N/A i-088bad3a48ac31542 N/A InService INSTANCESTATES N/A i-08e1958dfd3df0989 N/A OutService INSTANCESTATES N/A i-09d6cb51aaadbc909 N/A InService INSTANCESTATES N/A i-0be24594ebc5c3522 N/A InService INSTANCESTATES N/A i-0e00a72a7a6ec154e N/A InService INSTANCESTATES N/A i-0f7a57e6bc0024d31 N/A InService |
Я указал какой регион использовать:
--region us-east-1
Можно добавить данную опцию в конфигурационный файл, например:
aws_access_key_id = XXXXXXXXXXXXXXXXXXXXXXXXX
aws_secret_access_key = YYYYYYYYYYYYYYYYYYYY
region=us-east-1
Тогда, можно будет выполнять:
Предположим, что необходимо убрать одну из нод в ELB кластере, то выполнить это можно так:
Открываем конфиг:
# vim ~/.aws/credentials
Прописываем ключи. Например:
[Your_acc_name]
aws_access_key_id = XXXXXXXXXXXXXXXXXXXXXXXXX
aws_secret_access_key = YYYYYYYYYYYYYYYYYYYY
Где:
- Your_acc_name — Имя для аккаунта. Потом можно его использовать.
- aws_access_key_id — Ключик.
- aws_secret_access_key — Еще один ключик.
И так, если в системе не имеется никаких юзеров, то стоит создать. Логинимся в аккаунт -> Переходи в AWS services и выбираем IAM -> Создаем группу, роль, полиси и юзера ( с нужными правами).
Создание/Удаление группы через командную строку в Unix/Linux
И так, создадим группу:
1 2 3 4 5 6 7 8 9 10 |
$ aws iam create-group --group-name=test { "Group": { "Path": "/", "CreateDate": "2017-05-27T14:44:57.246Z", "GroupId": "AGPAIIW6A737HTMLZCDDW", "Arn": "arn:aws:iam::316963130188:group/test", "GroupName": "test" } } |
Для просмотра групп, используйте:
$ aws iam list-groups
Чтобы удалить ненужную группу, используйте:
И так, группа создана ( у меня она называется test).
Смотрим какие полиси были назначены группе:
$ aws iam list-attached-group-policies --group-name test
Чтобы переименовать группу, используйте следующую команду:
Создание/Удаление пользователя через командную строку в Unix/Linux
И так, создадим юзерa:
$ aws iam create-user --user-name=test
Для просмотра пользователей, используйте:
Чтобы посмотреть в каких группах состоит юзер, используйте:
Роль и полиси создаются аналогичными действиями. Я буду использовать стандартные роли и полиси. И так, давайте добавим некоторые права пользователю.
Чтобы переименовать пользователя, используйте следующую команду:
$ aws iam update-user --user-name test --new-user-name test-1
Создание/Удаление роли/полиси через командную строку в Unix/Linux
Для начала, посмотрим какие полиси имеются:
$ aws iam list-policies
ИЛИ, для конкретного пользователя:
$ aws iam list-user-policies --user-name test
И так, добавим некоторую полис для юзверя:
$ aws iam attach-user-policy --policy-arn=arn:aws:iam::aws:policy/CloudWatchEventsFullAccess --user-name=test
PS: Можно дать полные права юзеру:
$ aws iam attach-user-policy --policy-arn=arn:aws:iam::aws:policy/AdministratorAccess --user-name=test
Для просмотра используем:
$ aws iam list-attached-user-policies --user-name test
Чтобы удалить полиси, юзайте:
$ aws iam detach-user-policy --policy-arn=arn:aws:iam::aws:policy/CloudWatchEventsFullAccess --user-name=test
Для просмотра ролей, используйте:
$ aws iam list-roles
Создание/Удаление алиаса для входа
Сейчас, вы входите по такому принципу:
https://Your_AWS_Account_ID.signin.aws.amazon.com/console/
Где, Your_AWS_Account_ID — это ваш номер аккаунта в виде цифр. Как по мне, его нету смысла запоминать и это не есть удобным решением, по этому — я предлагаю создать удобный для запоминания алиас. Чтобы задать алиас, используйте:
$ aws iam create-account-alias --account-alias My_alias_name
и сейчас, можно перейти по такому УРЛу:
https://My_alias_name.signin.aws.amazon.com/console/
Чтобы проверить имеющиеся алиасы, используйте:
$ aws iam list-account-aliases
Чтобы удалить алиас, используйте:
$ aws iam delete-account-alias --account-alias My_alias_name
Создание/Удаление ключей для пользователей
Для создания ключей для конкретного пользователя, используйте:
$ aws iam create-access-key --user-name=test
Данная команда выведет на экран ключики.
Сейчас, я добавлю сгенерированный ключ пользователю ( статус будет — инактив. Т.е не активный):
$ aws iam update-access-key --access-key-id=AKIAJ44TBBGGHN64K3PQ --status Inactive --user-name=test
PS: Как я уже говорил, данный ключ не будет использоваться т.к он неактивный. Чтобы он стал активным, пропишите в команде что выше:
--status Active
Для просмотра используйте:
$ aws iam list-access-keys --user-name test
Для удаления, служит следующая команда:
$ aws iam delete-access-key --access-key AKIAJ44TBBGGHN64K3PQ --user-name test
Работа с паролями
Смотрим политику по паролем:
$ aws iam get-account-password-policy
Чтобы задать свою политику, используйте:
$ aws iam update-account-password-policy --minimum-password-length 8 --require-numbers
Обновляем пароль и логин для пользователя:
$ aws iam update-login-profile --user-name test --password My_password
Работа с aws Instance Profile
Смотрим какие имеются:
$ aws iam list-instance-profiles
Чтобы удалить, выполните:
$ aws iam delete-instance-profile --instance-profile-name profile_name_here
Где:
- profile_name_here — Имя профиля.