{"id":18942431,"url":"https://github.com/exitfound/aws-profile-switcher","last_synced_at":"2026-05-06T11:38:13.271Z","repository":{"id":248000022,"uuid":"823721995","full_name":"exitfound/aws-profile-switcher","owner":"exitfound","description":"Утилита для быстрой смены профиля AWS при работе с Terraform.","archived":false,"fork":false,"pushed_at":"2024-09-07T17:54:58.000Z","size":27,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-25T10:43:05.358Z","etag":null,"topics":["aws","cli","terraform"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/exitfound.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-07-03T15:18:48.000Z","updated_at":"2024-09-07T17:54:13.000Z","dependencies_parsed_at":"2024-07-11T20:32:43.792Z","dependency_job_id":"236f9261-404d-4a82-b345-ae69ef6dabc0","html_url":"https://github.com/exitfound/aws-profile-switcher","commit_stats":null,"previous_names":["exitfound/aws-profile-switcher"],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/exitfound/aws-profile-switcher","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exitfound%2Faws-profile-switcher","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exitfound%2Faws-profile-switcher/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exitfound%2Faws-profile-switcher/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exitfound%2Faws-profile-switcher/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/exitfound","download_url":"https://codeload.github.com/exitfound/aws-profile-switcher/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exitfound%2Faws-profile-switcher/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32692623,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-06T08:33:17.875Z","status":"ssl_error","status_checked_at":"2026-05-06T08:33:17.221Z","response_time":117,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aws","cli","terraform"],"created_at":"2024-11-08T12:32:49.906Z","updated_at":"2026-05-06T11:38:13.265Z","avatar_url":"https://github.com/exitfound.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# AWS Profile Switcher\n\n**AWS Profile Switcher** – это консольная утилита, написанная на Python и предназначенная для быстрой смены профилей учетных данных AWS, которые хранятся в файле `credentials` по пути `~/.aws/credentials`. На данный момент не поддерживает какие-либо сложные системы конфигурирования профилей от AWS, по типу SSO и т.д. Больше всего подходит, когда у вас есть N-ое количество классических профилей, между которыми необходимо быстро переключаться.\n\n## **Мотивация:**\n\nОсновной мотивацией, помимо очевидного изучения Python, послужила ситуация, когда у нас есть несколько независимых аккаунтов в AWS и с каждым из них приходится активно взаимодействовать. Это значит, что когда файл credentials от AWS выглядит следующим образом:\n\n```\n# Company 1\n[default]\naws_access_key_id = your_access_key\naws_secret_access_key = your_secret_key\n\n# Company 2\n#[default]\n#aws_access_key_id = your_access_key\n#aws_secret_access_key = your_secret_key\n```\n\nИ нам нужно переключиться на работу с Company 2, приходится редактировать содержимое самого файла (а это комментирование и раскомментирование). Конечно у консольной утилиты от самого AWS есть поддержка профилей. И она отлично работает. Но как-то держать в голове все профили и использовать их через параметр в CLI не очень интересно. Поэтому, забавы ради, решил написать свою утилиту, которая в два счета подкинет тот профиль в файл `credentials`, который нужен в данный момент времени.\n\n## **Установка:**\n\nДля успешного взаимодействия с данной утилитой необходимо обладать минимальным количеством программных коммпонентов и вспомогательных инструментов, поскольку сама утилита не несет каких-либо зависимостей. В частности, это:\n\n- `Python` версии 3 для запуска непосредственно самой утилиты;\n\n- `Git` с помощью которого вами будет загружен репозиторий из Github;\n\n- `Wget`, `curl` и `jq`, которые понадобятся для загрузки бинарной версии из релиза (опционально);\n\n- Файл в формате JSON, в котором будут храниться все профили (об этом более подробно чуть ниже);\n\n### **Из исходного кода:**\n\nЧтобы начать работу с исходной версией приложения достаточно выполнить следующую последовательность команд:\n\n```\ngit clone https://github.com/exitfound/aws-profile-switcher.git\ncd aws-profile-switcher\npython3 aws.py -h\n```\n\n### **Бинарная версия:**\n\nДанный метод основан на упаковке Python-скрипта в бинарный файл с помощью инструмента `Pyinstaller`. Является наиболее удобным и предпочтительным вариантом. Сам бинарник хранится в релизе. Чтобы начать работу с бинарной версией необходимо выполнить следующую последовательность команд:\n\n```\nwget $(wget -q -O - https://api.github.com/repos/exitfound/aws-profile-switcher/releases/latest | jq -r '.assets[] | select(.name | contains (\"aps\")) | .browser_download_url')\nunzip aps_linux_amd64.zip\nsudo mv aps /usr/local/bin/\naps -h\n```\n\nПримечание: Альтернативный путь, по которому также можно забрать архив с бинарным файлом с помощью `wget`:\n\n```\nwget https://github.com/exitfound/aws-profile-switcher/releases/latest/download/aps_linux_amd64.zip\n```\n\n### **С помощью Docker:**\n\nЯ бы не сказал, что данный метод сильно удобен в работе с представленной утилитой, поскольку необходимо монтировать директорию `.aws/`, и всё же поддержка Docker также предусмотрена. Метод является опциональным, но в случае применения необходимо выполнить следующую последовательность команд:\n\n```\ndocker build -t \"awstool:local\" --build-arg UID=$UID .\ndocker run -dit --name awstool -v ~/.aws/:/home/ubuntu/.aws/ awstool:local\ndocker exec -it awstool ./aps -h\n```\n\n## **Быстрый старт:**\n\nИспользуйте следующую команду (в зависимости от применяемого метода запуска) для заполнения файла с профилями своими учетными данными от AWS:\n\n```\npython3 aws.py -g\naps -g\n```\n\nИспользуйте следующую команду (в зависимости от применяемого метода запуска) для вывода списка текущих профилей (опционально):\n\n```\npython3 aws.py -l\naps -l\n```\n\nИспользуйте следующую команду (в зависимости от применяемого метода запуска) для сохранения оригинального файла `credentials` (опционально):\n\n```\npython3 aws.py -o\naps -o\n```\n\nИспользуйте следующую команду (в зависимости от применяемого метода запуска) для загрузки желаемого профиля в файл `credentials`:\n\n```\npython3 aws.py -p [имя_профиля]\naps -p [имя_профиля]\n```\n\nИспользуйте следующую команду (в зависимости от применяемого метода запуска) для отображения текущего активного профиля:\n\n```\npython3 aws.py -c\naps -c\n```\n\nПосле этого вы можете перейти к работе с указанными учетными данными AWS. Ниже представлен весь процесс работы, а также более подробно рассказано о том, для чего нужен каждый аргумент.\n\n## **Работа с утилитой:**\n\nДля успешного взаимодействия с утилитой необходимо создать файл в формате JSON с именем `profiles.json` и разместить его там же, где находится файл `credentials`, то бишь в директории `.aws/`. В самом репозитории находится пример данного файла, имя которого `profiles.json.example`. Это поведение по умолчанию, но при желании и использовании специального ключа, данный файл можно хранить где угодно. Сам файл будет содержать в себе структуру следующего вида:\n\n```\n{\n    \"profiles\": [\n        {\n            \"name\": \"medoed\",\n            \"aws_access_key_id\": \"access_key\",\n            \"aws_secret_access_key\": \"secret_key\",\n            \"region\": \"us-east-1\"\n        },\n        {\n            \"name\": \"dvp\",\n            \"aws_access_key_id\": \"access_key\",\n            \"aws_secret_access_key\": \"secret_key\"\n        },\n        {\n            \"name\": \"limbo\",\n            \"aws_access_key_id\": \"access_key\",\n            \"aws_secret_access_key\": \"secret_key\",\n            \"region\": \"eu-west-1\"\n        },\n        {\n            \"name\": \"tesla\",\n            \"aws_access_key_id\": \"access_key\",\n            \"aws_secret_access_key\": \"secret_key\"\n        }\n    ]\n}\n```\n\nЭто и есть место хранения всех наших учетных данных от AWS. Поле `region` является опциональным – если оно указано, регион будет записан в файл `credentials` при загрузке профиля. Вы можете удалять или добавлять желаемые профили в зависимости от ситуации. При этом данный файл также можно сгенерировать с помощью используемой утилиты. По умолчанию, без указания пути, он (файл) будет размещён по пути `~/.aws/profiles.json`. Сделать это можно с помощью следующей команды:\n\n```\npython3 aws.py -g [путь_расположения (опционально)]\n```\n\nПосле выполнения команды выше вам будет предложено ввести произвольное имя профиля, access и secret ключи, а также регион (опционально). Последние два значения представляют собой аналог `aws_access_key_id` и `aws_secret_access_key` в оригинальном файле `credentials`. Также стоит понимать, что файл с исходными значениями будет перезатерт после вызова того или иного профиля, поэтому если вы хотите сохранить файл, используйте следующую команду:\n\n```\npython3 aws.py -o [путь_расположения (опционально)]\n```\n\nПо умолчанию, без указания пути, аргумент, представленный выше, сохранит оригинальный файл `credentials` с именем `credentials.original` в той же директории. Если вы хотите вывести список всех профилей, которые на текущий момент записаны в файл `profiles.json`, используйте следующую команду:\n\n```\npython3 aws.py -l\n```\n\nПримечание: при выводе списка ключи маскируются для безопасности (например, `AKIA...XYZ`).\n\nЧтобы узнать, какой профиль загружен в данный момент, используйте следующую команду:\n\n```\npython3 aws.py -c\n```\n\nЧтобы загрузить один из существующих профилей, которые находятся в файле `profiles.json`, используйте следующую команду:\n\n```\npython3 aws.py -p [имя_профиля]\n```\n\nПосле выполнения команды из примера выше в файл `credentials` будет загружен указанный ранее профиль. Чтобы загрузить новый профиль просто выполните команду ещё раз, только теперь укажите имя нового профиля. Если по каким-то причинам вы хотите разместить содержимое файла `credentials` по иному пути, указав соответствующее имя, используйте следующую команду:\n\n```\npython3 aws.py -a [путь_к_файлу] -p [имя_профиля]\n```\n\nЕсли вы сгенерировали файл в формате JSON, который не соответствует пути по умолчанию, то в таком случае следующая команда поможет вам указать путь до этого файла (где хранятся ваши профили):\n\n```\npython3 aws.py -j [путь_к_JSON_файлу] -p [имя_профиля]\n```\n\nКак уже было отмечено ранее, если вы хотите расширить или сократить файл с профилями, вы можете просто отредактировать его с помощью любого удобного для вас редактора. Однако новый профиль можно подгрузить к уже существующему списку профилей, использовав для этого следующую команду:\n\n```\npython3 aws.py -e [путь_к_JSON_файлу (опционально)]\n```\n\nА если вы хотите удалить тот или иной профиль, используйте вот такую команду:\n\n```\npython3 aws.py -d [имя_профиля] -j [путь_к_JSON_файлу (опционально)]\n```\n\n## Сборка бинарного файла:\n\nЕсли у вас возникла потребность в самостоятельной сборке бинарного файла, можете воспользоваться следующей командой:\n\n```\npip3 install --user -r requirements.txt\npython3 -m PyInstaller --onefile --noconfirm --clean --name aps aws.py\n./dist/aps -h\n```\n\n## Лицензия:\n\nДанный проект распространяется под лицензией [MIT](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexitfound%2Faws-profile-switcher","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fexitfound%2Faws-profile-switcher","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexitfound%2Faws-profile-switcher/lists"}