AWS EC2 CLI — Довідник команд
AWS EC2 CLI — Довідник команд
Цей довідник охоплює всі важливі aws ec2 команди, згруповані за категоріями. Для кожної команди наведено опис ключових параметрів та очікуваний вивід терміналу.
aws configure або змінні середовища AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_DEFAULT_REGION. Більшість команд потребують --region — зручно встановити через export AWS_DEFAULT_REGION=eu-central-1.EC2 Instances — управління instances
run-instances
Запускає один або кілька EC2 instances із вказаним AMI. Це основна команда для створення нових серверів.
ami-xxxxxxxxxxxxxxxxx. Прив'язаний до регіону — один і той самий AMI у різних регіонах має різний ID.t3.micro, t3.medium, m6i.large тощо. Визначає кількість vCPU, RAM та мережеву продуктивність.sg-111 sg-222. Визначає правила мережевого доступу.мін:макс, наприклад 1:3. Або просто число для точної кількості.file://path/to/script.sh або як inline base64-рядок.Name=my-profile або Arn=arn:aws:iam::.... Надає instance доступ до AWS-сервісів без hardcode ключів.'ResourceType=instance,Tags=[{Key=Name,Value=my-server}]'.--query "Instances[0].InstanceId" --output text одразу повертає чистий ID без JSON — зручно для збереження в змінну: INSTANCE_ID=$(aws ec2 run-instances ... --output text).describe-instances
Повертає інформацію про один або кілька instances: стан, тип, IP-адреси, Security Groups, теги тощо.
i-111 i-222. Без цього параметра повертає всі instances у регіоні.Name=key,Values=val1,val2. Популярні фільтри: instance-state-name (running/stopped), tag:Name, instance-type, image-id.start-instances / stop-instances / reboot-instances
Змінюють стан одного або кількох instances. stop зупиняє instance зі збереженням EBS (обчислення не тарифікуються). reboot перезавантажує без зміни IP та фізичного хосту.
i-111 i-222. Усі вказані instances отримують нову команду одночасно.stop-instances. Зберігає вміст RAM на EBS-диск. Instance відновиться з того самого стану (вимагає попереднього налаштування Hibernate).terminate-instances
Незворотньо видаляє instance. За замовчуванням root EBS том також видаляється. Перед виконанням переконайтеся, що вибрали правильний Instance ID.
i-111 i-222 i-333.terminate-instances — незворотна операція. Після переходу в terminated instance та root EBS том не можна відновити. Завжди перевіряйте --instance-ids перед виконанням.wait
Блокує виконання скрипту поки instance не досягне цільового стану. Незамінний в автоматизації — дозволяє уникнути polling вручну та sleep.
running. Виконується після run-instances або start-instances.stopped. Корисно перед зміною типу instance або створенням AMI.running, але й успішне проходження обох status checks (system check + instance check). Більш надійний варіант перед SSH-підключенням.AMI — Amazon Machine Images
describe-images
Шукає AMI у поточному регіоні за фільтрами. Основне використання — знайти актуальний AMI ID для автоматизованих скриптів.
099720109477 — Canonical (Ubuntu), amazon — офіційні Amazon AMI, self — ваші Custom AMI, aws-marketplace — Marketplace.Name=name,Values=*pattern*, Name=state,Values=available, Name=architecture,Values=x86_64.sort_by(Images, &CreationDate)[-1].ImageId — повертає ID найновішого AMI з результатів фільтрації.describe-images з відповідними фільтрами.create-image
Створює Custom AMI зі знімку запущеного або зупиненого instance. AMI зберігає повний стан EBS-дисків.
--no-reboot.deregister-image
Видаляє реєстрацію AMI — після цього неможливо запустити нові instances з цього AMI. Вже запущені instances продовжують працювати. EBS snapshots, пов'язані з AMI, не видаляються автоматично — потрібно видалити вручну.
copy-image
Копіює AMI між регіонами або в межах того самого регіону. Необхідно для мультирегіональних Auto Scaling груп або аварійного відновлення.
Key Pairs — SSH ключі
create-key-pair
Створює нову Key Pair та повертає приватний ключ у JSON-відповіді. Це єдиний момент, коли AWS показує приватний ключ — одразу збережіть його у файл.
rsa (за замовчуванням, сумісний з PuTTY) або ed25519 (коротший, безпечніший, рекомендований для OpenSSH).pem (для OpenSSH/Linux/Mac) або ppk (для PuTTY на Windows).chmod 400 — обов'язковий крок. SSH відмовить у підключенні якщо файл ключа має надто відкриті права. Помилка буде: Permissions are too open або bad permissions: ignore key file.import-key-pair
Імпортує публічний ключ із вашої локальної пари (якщо SSH ключ вже створений). AWS зберігає лише публічну частину.
fileb://~/.ssh/id_ed25519.pub або file://. fileb:// — бінарний режим (рекомендований).describe-key-pairs / delete-key-pair
describe-key-pairs перелічує всі Key Pairs у регіоні. delete-key-pair видаляє запис з AWS — вже запущені instances залишаються доступними, але новий instance з таким іменем не можна запустити.
Security Groups — мережевий доступ
create-security-group
Створює нову Security Group у вказаному VPC.
authorize-security-group-ingress
Додає правило вхідного трафіку до Security Group.
tcp, udp, icmp, або -1 (all).80-8080. Для ICMP вказуйте -1.0.0.0.0/0 (усі), 203.0.113.5/32 (один IP), 10.0.0.0/16 (підмережа).22 для 0.0.0.0/0 у production. Автоматизовані сканери за лічені хвилини починають підбір паролів. Завжди обмежуйте SSH до /32 вашого IP або використовуйте EC2 Instance Connect / Systems Manager Session Manager.revoke-security-group-ingress
Видаляє правило вхідного трафіку. Параметри — ті самі, що у authorize-security-group-ingress.
describe-security-groups
Перелічує Security Groups та їхні правила.
Elastic IP — статична публічна адреса
allocate-address
Виділяє нову Elastic IP адресу для вашого акаунту. Після виділення IP прив'язаний до акаунту (та тарифікується ~$0.005/год якщо не прикріплений до запущеного instance).
vpc — для instance у VPC (сучасний підхід). Застарілий standard для EC2-Classic більше не підтримується.associate-address / disassociate-address
associate-address прикріплює Elastic IP до instance. disassociate-address від'єднує (EIP залишається виділеним та тарифікується — не плутати з release-address).
--network-interface-id для прикріплення до ENI.eipalloc-xxx.release-address
Повністю звільняє Elastic IP — адреса повертається до пулу AWS і тарифікація зупиняється. Виконується після disassociate-address.
release-address ця IP-адреса більше не належить вашому акаунту — вона може бути виділена іншому клієнту AWS. Якщо вона використовується в DNS записах — сайт перестане працювати до оновлення DNS.describe-addresses
Перелічує всі Elastic IP у регіоні разом з інформацією про прикріплення.
describe-addresses — EIP з InstanceId: None тарифікується (~$3.6/місяць кожен). Звільняйте невикористані адреси.EBS — Elastic Block Store
create-volume
Створює новий EBS том у вказаній Availability Zone. Том не підключений — потрібна окрема команда attach-volume.
gp3 (рекомендований загального призначення), gp2 (застарілий), io2 (high IOPS), st1 (throughput HDD), sc1 (cold HDD).eu-central-1a. Важливо: том і instance мають бути в одній AZ.gp3 і io2. Для gp3: 3000 за замовчуванням, до 16,000. Для io2: до 64,000.gp3. Пропускна здатність у MB/s: 125 за замовчуванням, до 1,000.attach-volume / detach-volume
attach-volume підключає EBS том до instance (том і instance — у тій самій AZ). На Linux пристрій з'являється як /dev/xvdf або /dev/nvme1n1. detach-volume від'єднує перед видаленням тому або переміщенням до іншого instance.
/dev/xvdf, /dev/xvdg тощо. AWS рекомендує /dev/sd[f-z], але на сучасних Nitro-instance пристрій відображається як /dev/nvme[1-26]n1 незалежно від вказаного імені.create-snapshot
Створює point-in-time резервну копію EBS тому, збережену в S3. Snapshot — інкрементальний (зберігаються лише зміни з часу попереднього snapshot).
Before .NET upgrade 2024-01-15.modify-volume
Змінює розмір, тип або IOPS існуючого EBS тому без зупинки instance. Після зміни потрібно розширити файлову систему зсередини ОС.
gp2 на gp3).describe-volumes / delete-volume
describe-volumes перелічує томи та їхній стан. delete-volume видаляє том (том має бути у стані available — не підключений).
Tags — теги ресурсів
create-tags
Додає або оновлює теги на будь-якому EC2 ресурсі: instance, AMI, volume, snapshot, Security Group, Elastic IP тощо.
i-111 vol-222 snap-333. Можна тегувати кілька ресурсів одночасно.Key=Name,Value=my-server. Кілька тегів через пробіл: Key=Env,Value=prod Key=Owner,Value=team-backend.describe-tags
Знаходить EC2 ресурси за їхніми тегами.
IAM Instance Profile — прив'язка ролей
associate-iam-instance-profile
Прикріплює IAM Instance Profile (і відповідно IAM Role) до запущеного instance. Дозволяє коду на instance звертатись до AWS-сервісів без hardcode ключів.
Name=profile-name або Arn=arn:aws:iam::....describe-iam-instance-profile-associations / replace / disassociate
describe — переглянути поточну прив'язку. replace — замінити IAM Role без від'єднання (нульовий downtime). disassociate — прибрати IAM Role з instance.
User Data — bootstrap-скрипти
describe-instance-attribute (userData)
Читає User Data вже запущеного instance у base64. Корисно для перевірки або дебагу bootstrap-скрипту.
modify-instance-attribute (userData)
Змінює User Data у зупиненого instance. Нові дані застосуються при наступному запуску.
modify-instance-attribute, потрібно зупинити та запустити instance (не reboot). Логи User Data на Ubuntu: /var/log/cloud-init-output.log.EC2 Instance Connect
send-ssh-public-key
Тимчасово завантажує ваш SSH публічний ключ на instance (дійсний 60 секунд). Дозволяє підключитись через стандартний ssh без попередньо збереженого Key Pair.
ubuntu для Ubuntu AMI, ec2-user для Amazon Linux, Administrator для Windows.file://~/.ssh/id_ed25519.pub.mssh — CLI утиліта (рекомендована альтернатива)
mssh — утиліта ec2instanceconnectcli, що автоматично виконує send-ssh-public-key + ssh в одній команді. Зручніший варіант для повсякденної роботи.
mssh — ідеальний варіант для розробників: не потрібно зберігати .pem файли, не потрібно знати публічний IP, не потрібно відкривати 22 порт для 0.0.0.0/0. Достатньо дозволити трафік з IP-діапазонів EC2 Instance Connect AWS (публікуються в aws ec2 describe-managed-prefix-lists).Корисні однорядники
Швидка автоматизація — змінні середовища для роботи
# Базові змінні для роботи в скриптах
export REGION="eu-central-1"
export INSTANCE_ID="i-0a1b2c3d4e5f67890"
export SG_ID="sg-0a1b2c3d4e5f67890"
export VOLUME_ID="vol-0a1b2c3d4e5f67890"
export ALLOC_ID="eipalloc-0a1b2c3d4e5f67890"
Отримати публічний IP instance
aws ec2 describe-instances \
--instance-ids $INSTANCE_ID \
--query "Reservations[0].Instances[0].PublicIpAddress" \
--output text --region $REGION
Знайти default VPC і підмережу
VPC_ID=$(aws ec2 describe-vpcs \
--filters "Name=isDefault,Values=true" \
--query "Vpcs[0].VpcId" --output text --region $REGION)
SUBNET_ID=$(aws ec2 describe-subnets \
--filters "Name=vpc-id,Values=$VPC_ID" \
"Name=defaultForAz,Values=true" \
--query "Subnets[0].SubnetId" --output text --region $REGION)
Зупинити і видалити instance + EIP + Security Group
# Повне очищення ресурсів після lab-роботи
REGION="eu-central-1"
# 1. Від'єднати та звільнити EIP
ASSOC_ID=$(aws ec2 describe-addresses \
--allocation-ids $ALLOC_ID \
--query "Addresses[0].AssociationId" --output text --region $REGION)
aws ec2 disassociate-address --association-id $ASSOC_ID --region $REGION
aws ec2 release-address --allocation-id $ALLOC_ID --region $REGION
# 2. Видалити instance
aws ec2 terminate-instances --instance-ids $INSTANCE_ID --region $REGION
aws ec2 wait instance-terminated --instance-ids $INSTANCE_ID --region $REGION
# 3. Видалити Security Group (лише після того, як instance terminated)
aws ec2 delete-security-group --group-id $SG_ID --region $REGION
echo "Cleanup complete!"
Список усіх instances у регіоні з тегами Name та станом
aws ec2 describe-instances \
--query "Reservations[*].Instances[*].{ID:InstanceId,Name:Tags[?Key=='Name'].Value|[0],State:State.Name,Type:InstanceType,IP:PublicIpAddress}" \
--output table --region $REGION
Amazon EC2 — Elastic Compute Cloud
Повне керівництво з Amazon EC2 для .NET розробників. Instance Types, AMI, Pricing Models, Security Groups, EBS, запуск .NET 10 на Linux та ASP.NET на Windows Server з IIS від А до Я.
Elastic Load Balancing та Auto Scaling
Глибоке дослідження Application Load Balancer, Network Load Balancer, Target Groups та Auto Scaling Groups для .NET застосунків — від фундаментальних принципів балансування навантаження до повного налаштування HTTPS, health checks та стратегій автоматичного масштабування.