Table of Content:
- Introduction
- What is AWS CodeBuild
- What is Amazon ECR
- Prerequisites
- Step 1: Buildspec.yml
- Step 2: IAM Roles and Permissions
- Step 3: Create a CodeBuild Project
- Step 4: Run CodeBuild project
Introduction
In this article, we'll explore how to use AWS CodeBuild to build a Node.js Express application, create a Docker image, and push it to Amazon ECR.
What is AWS CodeBuild:
AWS CodeBuild is a fully managed continuous integration service by Amazon Web Services that automates the build and testing phases of software development.
Developers define build projects using buildspec.yml files, specifying the steps for building Docker images and running tests.
With support for various programming languages, build tools, and seamless integrations with AWS services and version control systems, CodeBuild facilitates the efficient creation, testing, and deployment of applications within a scalable and customizable environment.
What is Amazon ECR:
Amazon Elastic Container Registry (Amazon ECR) is a fully managed Docker container registry service provided by Amazon Web Services (AWS). It allows developers to store, manage, and deploy Docker container images.
ECR integrates seamlessly with other AWS services, making it easy to build, store, and deploy containerized applications using tools like Amazon ECS (Elastic Container Service) and AWS Fargate. With features such as image scanning, encryption, and fine-grained access control, Amazon ECR provides a secure and scalable solution for container image management within the AWS ecosystem.
Without delay, let's delve into the practical aspects of the topic at hand.
Prerequisites
Before you begin, make sure you have the following prerequisites:
- An AWS account
- A Node.js Express application hosted on a version control system like CodeCommit or GitHub
- Already setup ECR repository
Step 1: Buildspec.yml
Create a buildspec.yml
file in the root of your Node.js Express project. This file defines the build steps for CodeBuild.
version: 0.2
phases:
install:
runtime-versions:
nodejs: latest
pre_build:
commands:
- echo Logging in to Amazon ECR...
- aws --version
- aws ecr get-login-password --region $AWS_REGION | docker login --username AWS --password-stdin $AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com
- COMMIT_HASH=$(echo $CODEBUILD_RESOLVED_SOURCE_VERSION | cut -c 1-7)
build:
commands:
- echo Build started on `date`
- echo Building the Docker image...
- docker build -t $AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com/$IMAGE_REPO_NAME:$IMAGE_TAG .
- docker tag $AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com/$IMAGE_REPO_NAME:$IMAGE_TAG $AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com/$IMAGE_REPO_NAME:latest
post_build:
commands:
- echo Build completed on `date`
- echo Pushing the Docker image...
- docker push $AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com/$IMAGE_REPO_NAME:$IMAGE_TAG
Step 2: IAM Roles and Permissions
To enable CodeBuild to push Docker images to Amazon ECR, it is essential to establish IAM roles and permissions.
Begin by crafting an IAM role specifically for CodeBuild, equipped with the necessary authorizations
ECR permissions to facilitate the pushing of Docker images to your repository. Opt for the aws-managed
AmazonEC2ContainerRegistryPowerUser
role for a streamlined approach.CloudWatch Logs permissions to enable the writing of build logs to CloudWatch Logs. Activating CloudWatch during the setup will automatically add the requisite policies.
Step 3: Create a CodeBuild Project
a) To create a CodeBuild project, you need to follow these steps.
- Open the AWS Management Console.
- Navigate to the CodeBuild service.
- Click on "Create build project.
b) Give your project a name and description, and select the source code location as the newly created AWS CodeCommit repository, and the associated branch.
c) For the Environment section, use the below settings:
- Provisioning mode: On-demand
- Environment image: Managed image
- Compute: EC2
- Operating system: Amazon Linux
- Runtime(s): Standard
- Image: use the latest standard image
- Image version: Always use the latest image for this runtime version
d) For the Service role, select the Existing IAM Role, you created earlier with AmazonEC2ContainerRegistryPowerUser
e) Additional configuration:
Scroll down to Environment Variables and update your environmental variables
f) For Build specifications, select Use a buildspec file and for Logs, add CloudWatch Group name, Stream name and click Create build project
Step 4: Run CodeBuild project
Select the codebuild project and click on Start build
Wait for build to Succeed!
Then check ECR for build Image.
And that's it! You have successfully used AWS CodeBuild to build a Node.js Express application, create a Docker image, and push it to Amazon ECR.
Top comments (0)