Доступ в #CodeCommit (git репозиторий) можно получить не только через привычные логин-пароль (https) и ключ (ssh), но и с помощью IAM роли. Это удобно и безопасно, т.к. нет #credentials (лишь прикреплённая к инстансу роль). В качестве адреса репозитория при этом используется https-вариант.
Когда CodeCommit-репозиторий в том же аккаунте, то всё работает очевидно. Однако что делать, если согласно #multi_account_strategy какое-то test-окружение, поднятое в своём test-аккаунте, должно загрузить репозиторий из репозитория, расположенного в (другом) devops-аккаунте?
Тут потребуется подправить настройки credential.helper - чтобы #git сам переключался в нужный аккаунт.
То есть для этого используем описанный в предыдущем посте метод.
Вот полный пример кода для #user_data с загрузкой git из другого аккаунта:
https://docs.aws.amazon.com/codecommit/latest/userguide/auth-and-access-control.html
Когда CodeCommit-репозиторий в том же аккаунте, то всё работает очевидно. Однако что делать, если согласно #multi_account_strategy какое-то test-окружение, поднятое в своём test-аккаунте, должно загрузить репозиторий из репозитория, расположенного в (другом) devops-аккаунте?
Тут потребуется подправить настройки credential.helper - чтобы #git сам переключался в нужный аккаунт.
git config --global credential.helper '!aws codecommit --profile devops-codecommit credential-helper $@'То есть для этого используем описанный в предыдущем посте метод.
Вот полный пример кода для #user_data с загрузкой git из другого аккаунта:
## Setup Git for CodeCommit
mkdir /root/.aws
AWS_CONFIG=/root/.aws/config
echo "[profile devops-codecommit]" > $AWS_CONFIG
echo "credential_source = Ec2InstanceMetadata" >> $AWS_CONFIG
echo "role_arn = ${CodeCommitRoleArn}" >> $AWS_CONFIG
export HOME=/root
git config --global credential.helper '!aws codecommit --profile devops-codecommit credential-helper $@'
git config --global credential.UseHttpPath true
## get repos from CodeCommit
HTTPS_GIT=https://git-codecommit.us-east-1.amazonaws.com/v1/repos
git clone -b ${ProjectBranch} --quiet $HTTPS_GIT/${ProjectName} $DOCKERPROJECT_DIR &> /dev/null
https://docs.aws.amazon.com/codecommit/latest/userguide/auth-and-access-control.html
Amazon
Authentication and access control for AWS CodeCommit - AWS CodeCommit
Control user access using IAM policies to specify which CodeCommit actions a user in your Amazon Web Services account can perform.
Когда вы пишете условный pipeline/утилиту/скрипт, который будет работать (например, деплоить) с разными окружениями (dev/test/stage/prod), то часто возникает искушение использовать под каждое окружение свою ветку. Это кажется логичным и очевидным.
Однако это (branch-by-environment strategy) не лучший подход и вскоре вы можете столкнуться с трудностями - от неудобности внесения каких-то глобальных изменений, которые потребуют внесения одного и того же по всем веткам, до сложности что-то потестировать в отдельном окружении с последующим откатом.
Потому правильно закладывать логику разных конфигов для различных окружений (т.е. в одной ветке разные файлы/конфиги на разные окружения), при этом используя общепринятые схемы #git branching.
• https://guides.github.com/introduction/flow/
• https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow
Однако это (branch-by-environment strategy) не лучший подход и вскоре вы можете столкнуться с трудностями - от неудобности внесения каких-то глобальных изменений, которые потребуют внесения одного и того же по всем веткам, до сложности что-то потестировать в отдельном окружении с последующим откатом.
Потому правильно закладывать логику разных конфигов для различных окружений (т.е. в одной ветке разные файлы/конфиги на разные окружения), при этом используя общепринятые схемы #git branching.
• https://guides.github.com/introduction/flow/
• https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow
Atlassian
Gitflow Workflow | Atlassian Git Tutorial
A deep dive into the Gitflow Workflow. Learn if this Git workflow is right for you and your team with this comprehensive tutorial.
AWS replacement for CodeCommit — git-remote-s3
https://github.com/awslabs/git-remote-s3
• git remote helper to use S3 as a serverless Git server
• git-lfs custom transfer to push LFS files
#CodeCommit #git #S3
https://github.com/awslabs/git-remote-s3
• git remote helper to use S3 as a serverless Git server
• git-lfs custom transfer to push LFS files
#CodeCommit #git #S3
GitHub
GitHub - awslabs/git-remote-s3
Contribute to awslabs/git-remote-s3 development by creating an account on GitHub.
🔥8🤔6👍3