AWS CodeCommit — настройка отдельного release-удалённого репозитория

Быстрые ссылки
- Что такое CodeCommit?
- Настройка дополнительного release-remote для CodeCommit
- Проверка и устранение неполадок
- Альтернативные подходы и рекомендации безопасности
Что такое CodeCommit?
AWS CodeCommit — это управляемое хранилище исходного кода от Amazon. По сути, это Git-сервер в облаке AWS, который интегрируется с остальными сервисами CodeSuite (CodeBuild, CodePipeline, CodeDeploy и т. п.). CodeCommit удобно использовать как часть CI/CD-пайплайна: вы храните снимок кода в CodeCommit — оттуда CodeBuild собирает проект и запускает тесты, а CodePipeline отправляет результаты на EC2 или в Lambda.
Ключевая идея документа: вы не обязаны переносить основную разработку в CodeCommit. Вместо этого используйте двух-удалённую (two-remote) стратегию: основная работа остаётся в обычном провайдере, а при готовности к релизу вы копируете (push) текущую ветку в CodeCommit. Это даёт вам преимущества интеграции с AWS без отказа от привычных инструментов.
Краткая полезная терминология:
- CodeCommit — управляемый Git-сервис AWS.
- Remote — удалённый репозиторий в конфигурации Git (обычно origin, добавим release).
- IAM-пользователь — отдельный пользователь AWS с правами доступа.
Почему использовать двa remote вместо полного перехода
Преимущества:
- Минимальная административная работа: вы не меняете основной workflow.
- Контроль релизов: CodeCommit содержит точную копию для релизов.
- Экономия: вы используете минимум пользователей в CodeCommit, что часто остаётся в рамках бесплатного уровня.
Ограничения:
- CodeCommit уступает GitHub/GitLab в UX и экосистеме интеграций.
- Для непрерывного двунаправленного workflow потребуется дополнительная синхронизация.
Подготовка: когда это имеет смысл и когда не подходит
Используйте эту схему, если:
- Основная разработка ведётся в GitHub/GitLab/Bitbucket.
- Нужна автоматическая интеграция с AWS CodePipeline.
- Вы хотите сохранить историю коммитов в релизе и не переносить всю работу в CodeCommit.
Не подходит, если:
- Вы хотите полноценную работу в CodeCommit (pull requests, web UI) и перенос всей команды.
- У вас много бинарных файлов и большой объём репозитория — возможно, понадобится S3-интеграция или LFS.
Шаг 1 — создать репозиторий CodeCommit
- Откройте AWS Console → CodeCommit → Repositories → Create Repository.

- Дайте репозиторию имя, описание и теги, затем нажмите Create.
Важно: не используйте root-аккаунт для доступа к CodeCommit через SSH. Следующие шаги выполняются от имени IAM-пользователя.
Шаг 2 — создать IAM-пользователя для доступа к CodeCommit
- Откройте IAM Console и создайте нового пользователя или выберите существующего, который будет использоваться для доступа к CodeCommit. Для удобства используйте учётную запись менеджера релиза.

- На этапе ролей и прав добавьте необходимые права для CodeCommit (минимально — права на чтение/запись в конкретный репозиторий или управляемую политику AWSCodeCommitFullAccess при тестовой настройке).
Примечание по безопасности: давайте минимально необходимые права, привязывайте доступ к конкретным репозиториям и используйте MFA для критичных ролей.
Шаг 3 — загрузить публичный SSH-ключ в IAM
В IAM у выбранного пользователя откройте вкладку “Security Credentials” и найдите секцию для загрузки публичных SSH-ключей для Git. Нажмите Add/Upload и вставьте содержимое вашего публичного ключа.
Сгенерировать ключ, если его нет:
ssh-keygen -t rsa -b 4096 -C "codecommit-key"
cat ~/.ssh/id_rsa.pubПосле загрузки вы увидите присвоенный SSH Key ID — скопируйте его.

Шаг 4 — настроить SSH-клиент
Откройте или создайте файл ~/.ssh/config и добавьте блок для CodeCommit. Подставьте свой SSH Key ID вместо IAM-SSH-KEY-ID и при необходимости скорректируйте регион:
Host git-codecommit.*.amazonaws.com
User IAM-SSH-KEY-ID
IdentityFile ~/.ssh/id_rsaУстановите корректные права на файл:
chmod 600 ~/.ssh/configЦель: заставить Git использовать IAM-пользователя при подключении к CodeCommit по SSH.
Шаг 5 — добавить remote release и отправить ветку релиза
В локальном репозитории добавьте новый удалённый репозиторий с именем release, используя SSH-URL, который даёт CodeCommit (с учётом вашего региона и имени репозитория):
git remote add release ssh://git-codecommit.us-east-1.amazonaws.com/v1/repos/RepoNameЗатем отправьте ветку, которую хотите использовать для релиза (например, master или release):
git push release masterВы также можете настроить отдельную ветку для релизов и установить upstream на release, чтобы упростить команду пуша:
git push -u release release-v1.2Если всё настроено правильно, CodeCommit получит обновлённую ветку, и соответствующий CodePipeline (если он привязан к этому репозиторию/ветке) начнёт сборку и деплой.
Критерии приёмки
- В CodeCommit видна та же история коммитов, что и в основном репозитории (по релизному диапазону).
- При пуше в release начинается сборка в CodeBuild или запускается Pipeline.
- SSH-подключение к git-codecommit.*.amazonaws.com происходит от имени IAM-пользователя — проверьте логи AWS CloudTrail.
Чек-лист ролей (кто что делает)
- Разработчик: поддерживает основной репозиторий, создает ветки релиза локально.
- Менеджер релизов: собирает изменения, выполняет git push release и запускает пайплайн.
- Администратор AWS/IAM: создает IAM-пользователя, загружает SSH-ключи, настраивает права.
- DevOps инженер: настраивает CodePipeline, CodeBuild и привязки репозитория/ветки.
Тесты и контроль качества (короткий набор)
- Тест 1: проверить ssh-подключение к CodeCommit: попробуйте git ls-remote ssh://… — ожидается список refs.
- Тест 2: пуш ветки в release — ожидается успешный push и видимая история в консоли CodeCommit.
- Тест 3: инициируемый пайплайн — проверьте, что CodeBuild запускается и возвращает успешный статус.
Устранение неполадок
- Ошибка permission denied: убедитесь, что в IAM-пользователе загружен публичный ключ и в ~/.ssh/config указан корректный SSH Key ID.
- Не удаётся подключиться по SSH: проверьте сетевые политики и DNS (git-codecommit.<регион>.amazonaws.com), файлы разрешений 600 и владельца.
- Пайплайн не стартует: проверьте, что trigger привязан к нужному репозиторию/ветке и что роль сервиса имеет права на чтение CodeCommit.
Совет по отладке: включите CloudTrail и CloudWatch для логов доступа и сборки — это поможет быстро локализовать проблему.
Альтернативные подходы
Прямой webhook/интеграция с GitHub/Bitbucket: CodeBuild поддерживает GitHub и Bitbucket как источник, что устраняет необходимость в CodeCommit. Подходит, если вы хотите, чтобы исходный репозиторий был источником правды.
Загрузка архива в S3 и запуск пайплайна вручную: менее удобный и более ручной подход, но полезен для одноразовых сценариев или больших бинарных артефактов.
Использование зеркалирования репозитория (git mirror): автоматическая синхронизация с помощью CI-скрипта, который периодически зеркалит основной репозиторий в CodeCommit.
Когда альтернативы лучше: если вы хотите полный опыт GitHub/GitLab (issues, PR reviews, встроенные actions), оставьте основной репозиторий и подключите CodeBuild/CodePipeline напрямую.
Ментальные модели и рекомендации
- Модель «источник правды»: основной репозиторий остаётся таким источником; CodeCommit — стабильное зеркало для релизов.
- Разделение обязанностей: держите администрирование AWS и разработку отдельно — это снижает риск случайных ошибок с доступами.
- Малым командам часто выгодно централизовать релизы через одного IAM-пользователя с ограниченной ответственностью.
Безопасность и соответствие
- Минимизируйте права IAM: выдавайте доступ только к нужным репозиториям.
- Храните приватные ключи на управляемых машинах с доступом через MFA и разграничением ролей.
- Ревью и ротация ключей: периодически удаляйте старые SSH-ключи и создавайте новые.
- Если вы работаете с персональными данными, убедитесь, что пайплайн и среды хранения соответствуют требованиям локального законодательства и внутренним политикам безопасности.
План отката (rollback)
Если пуш в release вызвал проблемный деплой:
- Остановите пайплайн или развертывание в CodeDeploy/CodePipeline.
- Откатите ветку в CodeCommit на предыдущий стабильный коммит (git revert или git reset + push).
- Перезапустите пайплайн после проверки кода.
Сниппеты и быстрый чек
Примеры команд, собранные в одном месте:
# Получить публичный ключ
cat ~/.ssh/id_rsa.pub
# Добавить remote
git remote add release ssh://git-codecommit.us-east-1.amazonaws.com/v1/repos/RepoName
# Отправить master в release
git push release master
# Отправить и установить upstream
git push -u release release-v1.2Решение: использовать CodeCommit или нет (схема принятия решения)
flowchart TD
A[Где хранится основной код?] -->|GitHub/Bitbucket/GitLab| B{Нужно ли автоматическое интегрирование с AWS?}
B -->|Да| C[Настроить двух-удалённую схему: добавить release в CodeCommit]
B -->|Нет| D[Использовать текущий провайдер и прямую интеграцию с CodeBuild]
A -->|CodeCommit| E[Оставить всё в CodeCommit — использовать как основной репозиторий]Когда схема может провалиться
- Большие двунаправленные изменения, требующие постоянной синхронизации ветвей — без автоматического зеркалирования вы получите расхождения.
- Наличие большого набора бинарных файлов: CodeCommit имеет ограничения стоимости и хранения; возможно, лучше S3/LFS.
Рекомендации по миграции и совместимости
- Если в будущем вы решите полностью перейти в CodeCommit, запланируйте перенос issues/PR и доступов из текущего провайдера.
- Для миграции репозитория с полным сохранением истории используйте git clone –mirror и push –mirror в новый репозиторий.
Итог и шаги следующей итерации
- Создать репозиторий CodeCommit.
- Настроить IAM-пользователя и загрузить SSH-ключ.
- Обновить ~/.ssh/config и проверить подключение.
- Добавить remote release и выполнить git push.
- Убедиться, что CodePipeline стартует и успешно деплоит.
Последующее улучшение: автоматизируйте синхронизацию (если нужно) с помощью CI-скриптов или mirror-процессов, добавьте мониторинг и уведомления о неудачных сборках.
Важное замечание: внимательно относитесь к правам доступа и ротации ключей — это минимизирует риск утечки и даст устойчивую схему релизов.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента