Тема: Робота з інтерфейсами командного рядка хмарних провайдерів.
Встановлення та налаштування AWS CLI, Azure CLI або Oracle Cloud CLI; автентифікація та конфігурація профілів; виконання основних операцій через CLI; написання простих shell-скриптів для автоматизації хмарних операцій.
Мета: Набути практичні навички роботи з хмарними платформами через інтерфейс командного рядка (CLI), навчитися автентифікуватись, виконувати основні операції та автоматизувати рутинні дії за допомогою скриптів.
Технологічний стек:
Windows:
# Завантажити та встановити MSI-інсталятор
# https://awscli.amazonaws.com/AWSCLIV2.msi
# Або через winget:
winget install Amazon.AWSCLI
macOS:
curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg"
sudo installer -pkg AWSCLIV2.pkg -target /
Linux (Ubuntu/Debian):
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
Перевірка установки:
aws --version
# Очікуваний вивід: aws-cli/2.x.x Python/3.x.x ...
# Автоматичне встановлення (Linux/macOS)
bash -c "$(curl -L https://raw.githubusercontent.com/oracle/oci-cli/master/scripts/install/install.sh)"
# Windows (PowerShell від адміністратора)
Set-ExecutionPolicy RemoteSigned
powershell -NoProfile -ExecutionPolicy Bypass -Command `
"iex ((New-Object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/oracle/oci-cli/master/scripts/install/install.ps1'))"
Перевірка:
oci --version
Access Key ID і Secret Access Keyaws configure
# AWS Access Key ID: <ваш ключ>
# AWS Secret Access Key: <ваш секрет>
# Default region name: eu-central-1
# Default output format: json
Переглянути збережену конфігурацію:
cat ~/.aws/credentials
cat ~/.aws/config
oci setup config
# Слідуйте підказкам:
# - Введіть OCID акаунту (знайдіть у Profile → Tenancy)
# - Введіть OCID користувача (Profile → User Settings)
# - Оберіть регіон (наприклад: eu-frankfurt-1)
# - Генерується API-ключова пара (RSA 2048)
Завантажте публічний ключ (~/.oci/oci_api_key_public.pem) до Oracle Cloud:
# Переглянути інформацію про поточний акаунт
aws sts get-caller-identity
# Список S3-кошиків
aws s3 ls
# Список EC2-екземплярів
aws ec2 describe-instances --query 'Reservations[*].Instances[*].[InstanceId,State.Name,PublicIpAddress]' --output table
# Список IAM-користувачів
aws iam list-users
# Список доступних регіонів
aws ec2 describe-regions --output table
# Список AMI (образів) для Amazon Linux 2
aws ec2 describe-images \
--owners amazon \
--filters "Name=name,Values=amzn2-ami-hvm-*-x86_64-gp2" \
--query 'sort_by(Images, &CreationDate)[-1].ImageId'
# Перевірити автентифікацію
oci iam user get --user-id <ваш_user_ocid>
# Список компартментів
oci iam compartment list
# Список VM-інстанцій у компартменті
oci compute instance list --compartment-id <compartment_ocid>
# Список доступних образів
oci compute image list --compartment-id <compartment_ocid> \
--query 'data[?contains("display-name",`Oracle Linux`)].[display-name, id]' \
--output table
# Створити S3-кошик (bucket name має бути глобально унікальним)
aws s3 mb s3://lab02-bucket-$(whoami)-2024 --region eu-central-1
# Завантажити файл
echo "Hello from CLI!" > test.txt
aws s3 cp test.txt s3://lab02-bucket-$(whoami)-2024/
# Переглянути вміст кошика
aws s3 ls s3://lab02-bucket-$(whoami)-2024/
# Завантажити файл назад
aws s3 cp s3://lab02-bucket-$(whoami)-2024/test.txt downloaded.txt
cat downloaded.txt
# Видалити файл і кошик
aws s3 rm s3://lab02-bucket-$(whoami)-2024/test.txt
aws s3 rb s3://lab02-bucket-$(whoami)-2024
Створіть файл cloud_info.sh (Bash) або cloud_info.ps1 (PowerShell):
Bash (Linux/macOS):
#!/bin/bash
# cloud_info.sh — збір інформації про хмарний акаунт
echo "=============================="
echo " Cloud Account Info Script "
echo "=============================="
echo ""
echo "--- Ідентифікатор акаунту ---"
aws sts get-caller-identity
echo ""
echo "--- Список IAM-користувачів ---"
aws iam list-users --query 'Users[*].[UserName, CreateDate]' --output table
echo ""
echo "--- Список S3-кошиків ---"
aws s3 ls
echo ""
echo "--- EC2 екземпляри у eu-central-1 ---"
aws ec2 describe-instances \
--region eu-central-1 \
--query 'Reservations[*].Instances[*].[InstanceId,InstanceType,State.Name]' \
--output table
echo ""
echo "=============================="
echo " Готово!"
echo "=============================="
PowerShell (Windows):
# cloud_info.ps1 — збір інформації про хмарний акаунт
Write-Host "=============================="
Write-Host " Cloud Account Info Script "
Write-Host "=============================="
Write-Host "`n--- Ідентифікатор акаунту ---"
aws sts get-caller-identity
Write-Host "`n--- Список IAM-користувачів ---"
aws iam list-users --query 'Users[*].[UserName, CreateDate]' --output table
Write-Host "`n--- Список S3-кошиків ---"
aws s3 ls
Write-Host "`n--- EC2 у eu-central-1 ---"
aws ec2 describe-instances --region eu-central-1 --output table
Write-Host "`n=============================="
Write-Host " Готово!"
Write-Host "=============================="
Запустіть скрипт і збережіть вивід:
chmod +x cloud_info.sh
./cloud_info.sh | tee cloud_info_output.txt
# Загальна довідка
aws help
# Допомога по конкретному сервісу
aws s3 help
aws ec2 help
# Допомога по конкретній команді
aws ec2 describe-instances help
# Автодоповнення команд (Bash)
complete -C '/usr/local/bin/aws_completer' aws
Дослідіть --output формати (json, table, text, yaml) та --query (JMESPath-фільтрація):
# Вивід у різних форматах
aws ec2 describe-regions --output json
aws ec2 describe-regions --output table
aws ec2 describe-regions --output text
# JMESPath-запит — лише назви регіонів
aws ec2 describe-regions --query 'Regions[*].RegionName' --output text
--query)? Наведіть приклад.json, table, text у AWS CLI? Коли який використовувати?aws --version або oci --versionaws sts get-caller-identity (або аналогу для OCI)cloud_info.sh / cloud_info.ps1lab02.md