You can deploy the application with a single command:
copilot init --app go-arch \
--name api \
--type 'Load Balanced Web Service' \
--dockerfile './Dockerfile' \
--env test \
--port 8080 \
The default architecture is
copilot command builds the container on your local machine for
amd64, pushes it to the container registry (Amazon ECR), and creates everything needed to run the application on AWS Fargate.
You can also specify an existing container image using
--image instead of
--dockerfile. Make sure the image is a multi-architecture image supporting both
While you are waiting for the command to complete, you can look in your AWS account and see the resources created in AWS S3, CloudFormation, and ECS.
copilot command completes, the URL of the load balancer is printed.
Visit the URL in your browser and see the printed message.
To access the application from the command line, run
curl with the URL (your URL will be different).
curl -w '\n' http://go-arc-Publi-UvaFr7DQF5ud-988490958.us-west-2.elb.amazonaws.com
The output is:
Hello from CPU PLATFORM:linux/amd64
You can also check running status using:
copilot svc status
The output is similar to:
Found only one deployed service api in environment test
Running ██████████ 1/1 desired tasks are running
Health ██████████ 1/1 passes HTTP health checks
██████████ 1/1 passes container health checks
ID Status Revision Started At Cont. Health HTTP Health
-- ------ -------- ---------- ------------ -----------
7779652d RUNNING 1 7 minutes ago HEALTHY HEALTHY
To move from
arm64 edit the file
copilot/api/manifest.yml and change the
platform entry from
If you don’t have a
platform entry, add one after the existing entries. Either way, you should have this line in your
You are now ready to run on Graviton2.
Save the file and redeploy the application using:
copilot svc deploy
Copilot rebuilds the container image for the
arm64 architecture, pushes the image to the container registry and deploys the new image.
If you look in your AWS console and visit the task configuration in ECS, you will see the task now shows
ARM64 as the architecture.
Visit the URL again using a browser or the same
curl command and the message prints
Hello from CPU PLATFORM:linux/arm64
If you need to troubleshoot a container, you can use Copilot to connect.
copilot svc exec
Answer yes to install the Session Manager plugin, and you have a shell into the running container.
Starting session with SessionId: ecs-execute-command-0f1f212e5ff00ec05
You can make changes to the container and do any needed investigation. Copilot is an easy way to connect to running containers.
You have deployed a containerized application on Fargate running AWS Graviton2 processors using Copilot. The Copilot CLI makes it much easier to create the required resources and easily make changes using the
There doesn’t seem to be a way to specify
arm64 on the initial
copilot init command, but it would be a useful enhancement.
Delete the resources created by Copilot by running:
copilot app delete