Termux на Android превращает смартфон или планшет в удобную командную среду. А когда поверх него работает AWS CLI, вы получаете практичный способ автоматизировать рутинные операции в AWS: запуск и остановку инстансов EC2, загрузку артефактов в S3, а также управление функциями Lambda (создание/обновление, публикация версий, запуск тестовых событий).
В этой статье покажу, как организовать связку Termux ↔ AWS через CLI-инструменты и как построить безопасный и воспроизводимый рабочий процесс.
Что потребуется
- Android‑устройство с установленным Termux.
- AWS аккаунт с доступом к EC2, S3 и Lambda.
- IAM пользователь (или роль) с ограниченными правами.
- Данные доступа: Access Key ID и Secret Access Key (если используете IAM пользователя).
- Интернет‑доступ для обращения к AWS API.
Шаг 1. Подготовка Termux и установка зависимостей
Обновите пакеты и установите базовые компоненты. В зависимости от версии Termux команды могут незначительно отличаться, но общая логика сохраняется.
pkg update && pkg upgrade -ypkg install -y python openssh curl unzipДалее установим AWS CLI. Проще всего — через pip.
pip install --upgrade pippip install awscli --upgradeПроверьте, что CLI доступен:
aws --versionШаг 2. Настройка учётных данных AWS (безопасно)
Для работы из Termux необходимо предоставить AWS CLI учётные данные. Рекомендуемый подход — минимальные права в IAM и хранение секретов вне истории команд.
Вариант A (частый для CLI): через переменные окружения в текущей сессии.
export AWS_ACCESS_KEY_ID='ВАШ_ACCESS_KEY_ID'export AWS_SECRET_ACCESS_KEY='ВАШ_SECRET_ACCESS_KEY'Опционально задайте регион по умолчанию:
export AWS_DEFAULT_REGION='eu-central-1'Вариант B (профиль): через конфигурацию AWS CLI. Вы создадите профиль один раз и потом будете ссылаться на него.
Сначала подготовьте директорию конфигураций:
mkdir -p ~/.awsСоздайте файл credentials:
nano ~/.aws/credentialsВставьте:
[default]
aws_access_key_id=ВАШ_ACCESS_KEY_ID
aws_secret_access_key=ВАШ_SECRET_ACCESS_KEYСоздайте файл config:
nano ~/.aws/configВставьте:
[default]
region=eu-central-1
output=jsonПроверка доступности API:
aws sts get-caller-identityШаг 3. Базовый контроль: что есть в аккаунте
Перед автоматизацией полезно убедиться, что CLI видит нужные ресурсы.
Например, перечислим бакеты S3:
aws s3 lsСписок инстансов EC2 (ограничьте фильтрами при необходимости):
aws ec2 describe-instances --max-results 10Список функций Lambda:
aws lambda list-functions --max-items 10Шаг 4. Автоматизация управления EC2 через CLI
С помощью AWS CLI из Termux можно выполнять типовые сценарии: запуск, остановка, получение состояния, выбор AMI/Instance profile (в рамках разрешений IAM).
4.1. Запуск и остановка инстанса
Остановка (например, по ID):
aws ec2 stop-instances --instance-ids i-0123456789abcdef0Запуск:
aws ec2 start-instances --instance-ids i-0123456789abcdef04.2. Мониторинг статуса
Проверка состояния инстансов:
aws ec2 describe-instances --instance-ids i-0123456789abcdef0 --query "Reservations[0].Instances[0].State.Name" --output text4.3. Запуск нового инстанса (пример)
Создание инстанса зависит от VPC/сабнетов, Security Group и AMI. Ниже — общий шаблон, который нужно адаптировать под вашу инфраструктуру.
aws ec2 run-instances --image-id ami-0abcdef1234567890 --instance-type t3.micro --subnet-id subnet-0abc12345def67890 --security-group-ids sg-0123abcd --count 1После этого получите ID нового инстанса через описание или через вывод run-instances.
Шаг 5. Автоматизация работы с S3 через CLI
Для S3 CLI-интеграция особенно полезна: загрузка конфигураций, выгрузка артефактов сборки, синхронизация папок.
5.1. Создание бакета (пример)
Регион и уникальность имени важны. Имя бакета должно быть глобально уникальным.
aws s3 mb s3://your-unique-bucket-name5.2. Загрузка файла
aws s3 cp ./artifact.zip s3://your-unique-bucket-name/artifacts/artifact.zip5.3. Загрузка директории
С рекурсией:
aws s3 cp ./dist s3://your-unique-bucket-name/app/dist --recursive5.4. Скачивание
aws s3 cp s3://your-unique-bucket-name/artifacts/artifact.zip ./5.5. Синхронизация с учётом изменений
aws s3 sync ./local-folder s3://your-unique-bucket-name/local-folderШаг 6. Автоматизация Lambda через CLI
Для Lambda важны: пакет (zip), права на обновление, корректный runtime и способ вызова (через invoke или event sources).
6.1. Подготовка пакета
Соберите артефакт в zip-архив. Пример для Node.js/ Python зависит от вашего проекта, но общий подход такой: упаковать код и зависимости.
zip -r function.zip . -x ".git" -x "node_modules/*"6.2. Обновление кода функции
Если функция уже существует, можно обновлять код:
aws lambda update-function-code --function-name your-function-name --zip-file fileb://function.zipАльтернативный вариант для больших артефактов — через S3, если это предусмотрено вашим пайплайном.
6.3. Вызов Lambda (invoke)
Подготовьте JSON событие в файл:
echo '{ "hello": "termux-aws" }' > event.jsonВызов функции и получение ответа:
aws lambda invoke --function-name your-function-name --payload fileb://event.json output.jsonПроверка содержимого результата:
cat output.jsonЕсли нужно подавить вывод в консоль и работать с результатом через файл — используйте параметр --log-type и обработку в соответствии с вашим сценарием.
Шаг 7. Соединяем EC2, S3 и Lambda в один сценарий
Сильная сторона CLI — возможность выстроить цепочки команд. Например:
- Собрать артефакт в Termux.
- Загрузить его в S3.
- Обновить код Lambda.
- Запустить обработку (invoke).
- Опционально — при необходимости поднять/остановить EC2 инстанс для фоновой задачи.
Пример скрипта (адаптируйте под ваш проект и имена ресурсов):
# 1) Упаковка
zip -r function.zip .
# 2) Загрузка в S3 (если нужно для аудита/хранения артефактов)
aws s3 cp function.zip s3://your-unique-bucket-name/artifacts/function.zip
# 3) Обновление Lambda
aws lambda update-function-code --function-name your-function-name --zip-file fileb://function.zip
# 4) Запуск обработки
aws lambda invoke --function-name your-function-name --payload fileb://event.json output.jsonШаг 8. Практики безопасности и эксплуатации
- Минимизация прав: выдавайте IAM пользователю только нужные действия. Например, для S3 —
ListBucket,PutObject,GetObjectв ограниченных ресурсах. - Разделяйте окружения: отдельные профили/аккаунты/роли для dev, staging и prod.
- Не храните секреты в истории: избегайте ввода ключей в интерактивные команды, которые могут попадать в history. Предпочтительнее использовать файлы профиля с защищёнными правами или аккуратные переменные окружения в сессии.
- Логи и трассировка: используйте CloudWatch Logs для Lambda, а для EC2 — системные/сервисные события.
- Шифрование: включайте SSE для S3 и следите за шифрованием секретов/конфигураций для приложений.
Шаг 9. Про VPN (только для локальной сети)
Если вам нужна локальная сеть для доступа к внутренним ресурсам (например, приватный endpoint, бастион или внутренние сервисы), можно использовать VPN для построения локального сегмента. Это не предназначено для обхода ограничений или блокировок — только для безопасного подключения к ресурсам в вашей сети.
В таком сценарии убедитесь, что outbound доступ к нужным AWS API разрешён в рамках вашей сетевой политики.
Отладка: типовые проблемы
- Ошибка доступа (AccessDenied): чаще всего дело в IAM политике и ограничениях по ресурсам/региону.
- Регион не совпадает: проверьте
AWS_DEFAULT_REGIONи настройки профиля. - Неправильный формат аргументов: для
--zip-fileиспользуйтеfileb://и убедитесь, что архив сформирован корректно. - Ограничения на размер: для некоторых случаев удобнее хранить артефакты в S3 и разворачивать Lambda по вашему механизму.
Заключение
Интеграция Termux с AWS через CLI позволяет собрать компактную и мобильную “операционную панель” для управления EC2, работы с S3 и развёртывания/вызова Lambda. При правильной настройке IAM (минимальные права), использовании профилей/переменных окружения и выстраивании цепочек команд вы получаете автоматизацию, которую удобно запускать как из сценариев, так и из интерактивной сессии.
Хотите, чтобы ваша связка Termux ↔ AWS была безопасной, с корректными IAM политиками и удобными скриптами под ваши ресурсы? Обратитесь в РыбинскЛАБ — поможем с архитектурой, настройкой и внедрением под ваш контур.