AWS Notes
5.6K subscribers
443 photos
42 videos
10 files
2.8K links
AWS Notes — Amazon Web Services Educational and Information Channel

Chat: https://xn--r1a.website/aws_notes_chat

Contacts: @apple_rom, https://www.linkedin.com/in/roman-siewko/
Download Telegram
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
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
Кто активно работает с CodeBuild и кому нужно знать, что входит в состав текущих дефолтных амазоновских образов, то их исходники (Dockerfile-ы) можно посмотреть здесь:

https://github.com/aws/aws-codebuild-docker-images

#CodeBuild
CodeBuild и ECS

Когда из 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
Достаточно простая, но хорошая статейка о том, когда нужно что-то автоматизировать, а переписывать под Лямду не получается (дольше, сложней или просто лень), то нужно помнить про CodeBuild.

В отличие от Лямбды, CodeBuild может просто выполнять длительные процедуры, не в такой мере, однако также экономный, но главное — там можно привычно башить!

https://aws.amazon.com/blogs/devops/using-aws-codebuild-to-execute-administrative-tasks/

Сам использую CodeBuild для всевозможных задач — от разовых до постоянно-периодичных. Крайне удобно, минимальный порог входа, максимальная отдача.

#CodeBuild
​​У 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
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
​​Запустить билды в CodeBuild можно оптом (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
​​Обнаружив ошибку 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
​​CI/CD: CodeCommit + CodeBuild + CodePipeline + Terraform

https://www.tecracer.com/blog/2023/05/terraform-ci/cd-pipelines-use-aws-codepipeline-to-build-fully-managed-deployment-pipelines-for-terraform..html

Хорошая задумка, мне нравится. Похожую схему использую много лет, лишь вместо CodePipeline у меня Jenkins и KICS в качестве SAST.

#CodeBuild #CodePipeline #Terraform
8
​​🆕 CodeBuild + GitHub Actions:

https://docs.aws.amazon.com/codebuild/latest/userguide/action-runner.html

You can use an action runner to run GitHub Actions within CodeBuild. This can be done by adding steps to any phase in your buildspec file.

#CodeBuild #GitHub
👍5🎉1
​​CodeBuild + GitHub Actions self-hosted runners 🎉

https://docs.aws.amazon.com/codebuild/latest/userguide/action-runner.html

CodeBuild's integration with GitHub Actions webhooks offers all compute platforms, including Lambda, GPU-enhanced and Arm-based instances.

#CodeBuild #GitHub_Actions
👍4
​​CodeBuild + macOS

https://aws.amazon.com/blogs/aws/add-macos-to-your-continuous-integration-pipelines-with-aws-codebuild/

▫️ Apple M2
▫️ macOS 14 Sonoma

⚠️ $0.02 per minute but 24h minimum (28.8$+) 😐

#CodeBuild
3😁9🤮4🤡3👍1
CodeBuild Docker Server — building Docker images in seconds!

https://aws.amazon.com/blogs/aws/accelerate-ci-cd-pipelines-with-the-new-aws-codebuild-docker-server-capability/

BUT — you'll be charged like for a regular EC2 instance (around $50/month) unless you explicitly disable the CodeBuild Docker Server feature — even if you don’t run any builds.

So use it with caution.
Or better: modify your project settings before the first build of the day to reduce costs.

Note: The first run takes the usual time, and only subsequent builds benefit from layer caching to speed things up.

#CodeBuild
👍7