Як використовувати AWS CLI для запуску хмарних служб прямо з клавіатури - графічний інтерфейс не потрібен

Б'юсь об заклад, у вас вже є деякі речі, що працюють на AWS, і ви це зробили за допомогою консолі браузера. Але я впевнений, що ви вже підозрюєте, що натискання шарів та шарів сторінок конфігурації не завжди буде найкращим підходом. Насправді, AWS CLI - кращий спосіб, який дозволить виконати точно таку ж роботу, але з набагато меншими зусиллями.

Використовуючи вміст, адаптований до мого курсу Pluralsight: Автоматизація операцій AWS за допомогою інтерфейсу клієнта AWS , дозвольте мені швидко продемонструвати. Припустимо, ви хочете запустити екземпляр Amazon Linux з EC2. Щоб це було запущено, вам потрібно буде…

  • Завантажте сторінку інформаційної панелі EC2
  • Клацніть Запустити екземпляр
  • Виберіть AMI на сторінці AMI
  • Виберіть тип екземпляра на сторінці Тип екземпляра
  • Встановіть мережу, IAM, поведінку життєвого циклу та налаштування користувацьких даних на сторінці Налаштування деталей екземпляра
  • Виберіть один або кілька томів пам’яті на сторінці Додати пам’ять
  • Додайте теги на сторінці Додати теги
  • Виберіть або налаштуйте групу безпеки на сторінці - дочекайтеся її - Налаштування групи безпеки
  • І нарешті перегляньте та запустіть свій екземпляр на сторінці з назвою (що ще?) Перегляньте та запустіть

Не забудьте натиснути спливаюче вікно, де ви підтвердите свою пару ключів, а потім повернутися до інформаційної панелі EC2 Instance, щоб отримати дані вашого екземпляра (наприклад, IP-адреси).

Звучить для вас весело? Чи все одно це буде виглядати весело, якщо ви працюєте з повільним підключенням до Інтернету? А як щодо того, якщо вам потрібно виконувати варіації цього процесу півтора десятка разів на тиждень?

Хочете побачити, як би ви запустили цю конфігурацію, використовуючи AWS CLI із оболонки Bash (яку ви можете запустити в Linux, macOS, а тепер навіть Windows 10)? Зверніть увагу, як я використовував зворотні скісні риски, щоб сказати Башу, що команда ще не виконана. Натискання клавіші Enter призводить до повного безладу.

aws ec2 run-instances --image-id ami-04681a1dbd79675a5 \ --count 1 \ --instance-type r5d.large \ --key-name MyKeyPair \ --security-group-ids sg-007e43f80a1758f29 \ --subnet-id subnet-970ec9f0 \ --user-data file://my_script.sh \ --tag-specifications \ ‘ResourceType=instance,Tags=[{Key=backend,Value=inventory1}]’

Ця точна команда не буде працювати для вас, якщо ви просто вставите її у свій термінал і запустите. Ідентифікатори групи безпеки та підмережі специфічні для мого облікового запису, і, ймовірно, у вас немає пари ключів під назвою MyKeyPair або файлу сценарію my_script.sh. Але це показує вам, що після того, як ви виконали деякі базові попередні дослідження, щоб отримати всі правильні значення та підтвердили, що це працює, ви зможете зберегти команду у файлі сценарію, який ви можете змінити та запустити щоразу необхідний. Це може знизити п’ятихвилинний процес до декількох секунд.

Найкраще місце для отримання сучасних інструкцій з встановлення CLI для вашої операційної системи - це сторінка документації AWS. Як правило, найкращим вибором буде підхід менеджера пакетів Python із використанням PIP.

Налаштування CLI для безпечного доступу та адміністрування ресурсів вашого облікового запису AWS є досить простим. Хоча спочатку вам потрібно буде створити (і скопіювати / записати) ключ доступу для вашого користувача AWS за посиланням Мої облікові дані безпеки у спадному меню облікового запису на консолі. Закінчивши, просто введіть “aws configure” у командному рядку та введіть ідентифікатор ключа доступу та секретний ключ доступу, які ви отримали з моїх облікових даних безпеки. Ви можете за бажанням вибрати значення регіону та значення вихідного формату.

[email protected]:~$ aws configure AWS Access Key ID [****************KB2Q]: AWS Secret Access Key [****************W/Cu]: Default region name [us-east-1]: Default output format [text]: [email protected]:~$

AWS CLI Синтаксичні шаблони

Ви все готові розпочати. Почнемо з розбиття синтаксису команди на складові частини та проілюструємо, як це все працює, на практичних прикладах. Після префікса команди aws команда CLI складається з опцій (які, як випливає з назви, необов’язкові), команд , підкоманд та параметрів .

aws [options]   [parameters]

Цей приклад поверне всі зображення EC2 AMI, офіційно підтримувані Amazon, які працюють на операційній системі CentOS Linux.

aws --output table ec2 describe-images \ --filters “Name=description,Values=*CentOS*” \ “Name=owner-alias,Values=amazon”

Він використовує параметр виводу , надаючи йому значення " таблиця " для відображення виводу тексту в таблицях. Верхнього рівня команди тут ec2. Більшість команд верхнього рівня, якщо не всі, будуть викликати певні служби AWS. s3, iam та dynamodb - інші приклади.

Субкоманди є описують-образи , які будуть повертати дані , які стосуються усіх Amazon Machine Images , доступних для використання в даний час для ваших екземплярів EC2. Це поверне надзвичайно багато даних, оскільки існує багато сотень AMI, і кожен з них представлений великою кількістю метаданих. Тож вам захочеться трохи звузити пошук. Для цього я вказав два значення параметра - filters: опис зображення повинен містити слово CentOS  - з великими літерами c, o та s, оскільки це буде чутливим до регістру, а значення псевдоніма власника має дорівнювати Amazon .

Ви часто запускаєте підкоманди на основі опису, щоб отримати важливі ідентифікатори ресурсів, які потім можна підключити до ваших фактичних команд дій. Цей ідентифікатор зображення CentOS зазвичай використовується як частина команди ec2 run-instances для фактичного запуску екземпляра.

Окрім опису та запуску, інші розповсюджені підкоманди починатимуться з таких дієслів, як створення, видалення, увімкнення, вимкнення, зміна, запит, зупинка та завершення.

Варіанти включають область , вихід і профіль  - що ви вже бачили - плюс сухий запуск , який нічого не зробить, але замість цього покаже результат, який ваша команда створила б, якщо б вона була насправді запущена. Це може бути дуже корисно, коли ви не впевнені, що синтаксис у вас цілком правильний. Давайте спробуємо запустити команду ec2 run-instances зверху, але цього разу додамо сухий запуск .

S3 Приклад

Настав час трохи магії S3. У мене є бізнес, якому потрібен простий веб-сайт, без доступу до бази даних або безглуздих звичок JavaScript. Просто якийсь звичайний, запущений завод, доброта HTML5. Тож я збираюся створити, ретельно налаштувати та заповнити своє відро, щоб воно працювало як статичний веб-сайт - або, іншими словами, так, щоб вхідний трафік автоматично спрямовувався до створеного мною файлу index.html .

Хоча це не буде грати жодної ролі в цій демонстрації, врешті-решт я захочу встановити доменне ім'я .com у маршруті Amazon 53, яке вказує на сайт, тому мені потрібно буде створити сегмент S3 саме з цим ім'я - .com та все. Я роблю відро, використовуючи mb та унікальну у всьому світі назву відра.

aws s3 mb s3://mysite548.com

Відро повинно бути доступним для читання, тому я буду використовувати s3api put-bucket-acl разом із параметрами відра та acl . Останній з тих , хто буде приймати значення публічного читання .

aws s3api put-bucket-acl --bucket mysite548.com --acl public-read

Далі я буду використовувати s3 sync для переміщення всього вмісту мого поточного локального каталогу до мого сегмента. Я створив три файли: index.html - веб-сторінка за замовчуванням, а error.html - це сторінка, яка завантажується, коли запитується неіснуючий ресурс. Також є невелике зображення, яке допоможе покращити демонстрацію. Параметр acl для загального читання надасть самим файлам такі самі дозволи, що і сегмент.

aws s3 sync . s3://mysite548.com --acl public-read

Finally, I’ll define the purpose of those html files for S3 using “s3 website”. The index-document and error-document parameters simply point to the relevant files. You don’t need to use those specific filenames, by the way, that’s just me. I’ll confirm that operation using s3api get-bucket-website.

aws s3 website s3://mysite548.com/ --index-document index.html --error-document error.html aws s3api get-bucket-website --bucket mysite548.com

What’s Next?

The command syntax of the AWS CLI is fairly intuitive. Nevertheless, you will often need help getting it exactly right. As I show in the Pluralsight course, you can get excellent guidance from the help system at the command line, or from the AWS online documentation. My Learn Amazon Web Services in a Month of Lunches book also contains useful guidance and examples.

This article is an excerpt adapted from my new Pluralsight course, Automating AWS Operations with the AWS CLI.