Чтобы прокинуть #IAM роль (инстанса) внутрь докера (актуально, например, при запуске тестов в докере на #CodeBuild), нужно использовать переменную AWS_CONTAINER_CREDENTIALS_RELATIVE_URI:
→ https://docs.aws.amazon.com/codebuild/latest/userguide/troubleshooting.html#troubleshooting-versions
→ https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html
docker-compose run --name MS -e AWS_CONTAINER_CREDENTIALS_RELATIVE_URI app bash -c "python manage.py test -v --junit-report=/report.xml"
→ https://docs.aws.amazon.com/codebuild/latest/userguide/troubleshooting.html#troubleshooting-versions
→ https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html
Amazon
Troubleshooting AWS CodeBuild - AWS CodeBuild
Provides troubleshooting information for AWS CodeBuild.
AWS CodeBuild + Secrets Manager
В CodeBuild завезли родную поддержку секретов:
https://aws.amazon.com/about-aws/whats-new/2019/11/aws-codebuild-adds-support-for-aws-secrets-manager/
Свои секреты можно добавить в раздел env → secrets-manager файла buildspec.yml или через консоль (см. ниже картинку).
#CodeBuild #Secrets
В CodeBuild завезли родную поддержку секретов:
https://aws.amazon.com/about-aws/whats-new/2019/11/aws-codebuild-adds-support-for-aws-secrets-manager/
Свои секреты можно добавить в раздел env → secrets-manager файла buildspec.yml или через консоль (см. ниже картинку).
#CodeBuild #Secrets
Notifications в Code* сервисах
В сервисы CodeCommit, CodeBuild, CodeDeploy и CodePipeline были добавлены Notifications, которые шлются через SNS:
https://aws.amazon.com/about-aws/whats-new/2019/11/introducing-notifications-for-aws-codecommit-aws-codebuild-aws-codedeploy-and-asw-codepipeline/
Notifications можно вешать на нужные события — сбилдилось, нет, в процессе и т.п.:
https://docs.aws.amazon.com/codestar-notifications/latest/userguide/concepts.html#events-ref-repositories
В общем, реально полезное дополнение для организации CI/CD процесса.
#CodeCommit #CodeBuild #CodeDeploy #CodePipeline
В сервисы CodeCommit, CodeBuild, CodeDeploy и CodePipeline были добавлены Notifications, которые шлются через SNS:
https://aws.amazon.com/about-aws/whats-new/2019/11/introducing-notifications-for-aws-codecommit-aws-codebuild-aws-codedeploy-and-asw-codepipeline/
Notifications можно вешать на нужные события — сбилдилось, нет, в процессе и т.п.:
https://docs.aws.amazon.com/codestar-notifications/latest/userguide/concepts.html#events-ref-repositories
В общем, реально полезное дополнение для организации CI/CD процесса.
#CodeCommit #CodeBuild #CodeDeploy #CodePipeline
Кто активно работает с CodeBuild и кому нужно знать, что входит в состав текущих дефолтных амазоновских образов, то их исходники (
https://github.com/aws/aws-codebuild-docker-images
#CodeBuild
Dockerfile-ы) можно посмотреть здесь:https://github.com/aws/aws-codebuild-docker-images
#CodeBuild
GitHub
GitHub - aws/aws-codebuild-docker-images: Official AWS CodeBuild repository for managed Docker images http://docs.aws.amazon.c…
Official AWS CodeBuild repository for managed Docker images http://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref.html - aws/aws-codebuild-docker-images
CodeBuild и ECS
Когда из CodeBuild нужно работать с другим аккаунтом, и потребуется переключаться в роль с помощью флажка
Это потому, что вместо обычного:
В секции профиля файла
И всё заработает.
Почему? Получается, видимо, потому, что CodeBuild под капотом использует ECS.
В принципе, логично, хоть и не видел подобного в документации (что тоже логично).
#CodeBuild
Когда из CodeBuild нужно работать с другим аккаунтом, и потребуется переключаться в роль с помощью флажка
--profile, учтите , что обычный вариант не сработает и будет давать ошибку:Error when retrieving credentials from Ec2InstanceMetadata: No credentials found in credential_source referenced in profile ***Это потому, что вместо обычного:
credential_source = Ec2InstanceMetadataВ секции профиля файла
~/.aws/config нужно использовать:credential_source = EcsContainerИ всё заработает.
Почему? Получается, видимо, потому, что CodeBuild под капотом использует ECS.
В принципе, логично, хоть и не видел подобного в документации (что тоже логично).
#CodeBuild
Telegram
aws_notes
Чтобы запустить #aws_cli команду для другого аккаунта, нужно сначала добавить в ~/.aws/config профиль типа:
[profile devops-codecommit]
role_arn = arn:aws:iam::123456789012:role/codecommit-role
credential_source = Ec2InstanceMetadata
Параметры:
devops-codecommit…
[profile devops-codecommit]
role_arn = arn:aws:iam::123456789012:role/codecommit-role
credential_source = Ec2InstanceMetadata
Параметры:
devops-codecommit…
Достаточно простая, но хорошая статейка о том, когда нужно что-то автоматизировать, а переписывать под Лямду не получается (дольше, сложней или просто лень), то нужно помнить про CodeBuild.
В отличие от Лямбды, CodeBuild может просто выполнять длительные процедуры, не в такой мере, однако также экономный, но главное — там можно привычно башить!
https://aws.amazon.com/blogs/devops/using-aws-codebuild-to-execute-administrative-tasks/
Сам использую CodeBuild для всевозможных задач — от разовых до постоянно-периодичных. Крайне удобно, минимальный порог входа, максимальная отдача.
#CodeBuild
В отличие от Лямбды, CodeBuild может просто выполнять длительные процедуры, не в такой мере, однако также экономный, но главное — там можно привычно башить!
https://aws.amazon.com/blogs/devops/using-aws-codebuild-to-execute-administrative-tasks/
Сам использую CodeBuild для всевозможных задач — от разовых до постоянно-периодичных. Крайне удобно, минимальный порог входа, максимальная отдача.
#CodeBuild
Amazon
Using AWS CodeBuild to execute administrative tasks | Amazon Web Services
This article is a guest post from AWS Serverless Hero Gojko Adzic. At MindMup, we started using AWS CodeBuild to quickly lift and shift support tasks to the cloud. MindMup is a collaborative mind-mapping tool, used by millions of teachers and students to…
У CodeBuild есть возможность сохранять результаты тестов — Test Reports:
https://docs.aws.amazon.com/codebuild/latest/userguide/test-reporting.html
В Test Reports есть поддержка JUnit, Cucumber, TestNG и TRX форматов, история хранится 30 дней в самом сервисе, а чтобы больше - нужно закидывать на S3.
Пример конфигурации в блоге:
https://aws.amazon.com/blogs/devops/test-reports-with-aws-codebuild/
#CodeBuild
https://docs.aws.amazon.com/codebuild/latest/userguide/test-reporting.html
В Test Reports есть поддержка JUnit, Cucumber, TestNG и TRX форматов, история хранится 30 дней в самом сервисе, а чтобы больше - нужно закидывать на S3.
Пример конфигурации в блоге:
https://aws.amazon.com/blogs/devops/test-reports-with-aws-codebuild/
#CodeBuild
CodeBuild + SSM
Чтобы отладить что-то в CodeBuild можно использовать SSM Session Manager:
https://docs.aws.amazon.com/codebuild/latest/userguide/session-manager.html
То есть можно тормознуть процесс сборки CodeBuild с помощью вставки
#CodeBuild #SSM
Чтобы отладить что-то в CodeBuild можно использовать SSM Session Manager:
https://docs.aws.amazon.com/codebuild/latest/userguide/session-manager.html
То есть можно тормознуть процесс сборки CodeBuild с помощью вставки
codebuild-breakpoint, после приконнектиться через SSM, посмотреть на местности, что не так и после продолжить билд с помощью команды codebuild-resume.#CodeBuild #SSM
Amazon
View a running build in Session Manager - AWS CodeBuild
Use Session Manager to view a running CodeBuild build.
Запустить билды в CodeBuild можно оптом (
https://docs.aws.amazon.com/codebuild/latest/userguide/batch-build.html
Есть варианты запустить последовательно (batch-graph), параллельно (batch-list) и с разными наборами переменных (batch-matrix).
Можно переоределить настройки и переменные для нужного "под-билда" и задать опцию, чтобы, например, все параллельные билды падали, когда какой-то из них уже упал (чтобы длительные операции не ели зря деньги).
Задать нужные настройки и запустить оптом CodeBuild можно из CodePipeline:
https://docs.aws.amazon.com/codepipeline/latest/userguide/action-reference-CodeBuild.html
#CodeBuild #CodePipeline
batch):https://docs.aws.amazon.com/codebuild/latest/userguide/batch-build.html
Есть варианты запустить последовательно (batch-graph), параллельно (batch-list) и с разными наборами переменных (batch-matrix).
Можно переоределить настройки и переменные для нужного "под-билда" и задать опцию, чтобы, например, все параллельные билды падали, когда какой-то из них уже упал (чтобы длительные операции не ели зря деньги).
batch: fast-fail: trueЗадать нужные настройки и запустить оптом CodeBuild можно из CodePipeline:
https://docs.aws.amazon.com/codepipeline/latest/userguide/action-reference-CodeBuild.html
#CodeBuild #CodePipeline
Обнаружив ошибку
Которая обозначает, что превышен лимит для вытягивания публичных образов из докерхаба, то решить вопрос можно, добавив аутентификацию:
https://aws.amazon.com/blogs/devops/how-to-use-docker-images-from-a-private-registry-in-aws-codebuild-for-your-build-environment/
Для чего потребуется создать секрет, прописав его
https://docs.aws.amazon.com/codebuild/latest/userguide/sample-private-registry.html#private-registry-sample-create-project
#CodeBuild
CannotPullContainerError в логах CodeBuild:Unable to pull customers container image: toomanyrequests. You have reached your pull rate limit.You may increase the limit by authenticating and upgrading: https://www.docker.com/increase-rate-limit (status code: BUILD_CONTAINER_UNABLE_TO_PULL_IMAGE)Которая обозначает, что превышен лимит для вытягивания публичных образов из докерхаба, то решить вопрос можно, добавив аутентификацию:
https://aws.amazon.com/blogs/devops/how-to-use-docker-images-from-a-private-registry-in-aws-codebuild-for-your-build-environment/
Для чего потребуется создать секрет, прописав его
ARN в CodeBuild. Для получения секрета нужно добавить сервисной роли права на secretsmanager:GetSecretValue:https://docs.aws.amazon.com/codebuild/latest/userguide/sample-private-registry.html#private-registry-sample-create-project
#CodeBuild