Let's learn how to build, release and operate your containerized applications to Amazon ECS and AWS Fargate using AWS Copilot.

Overview

🚀 Welcome to AWS Copilot Workshop

In this workshop, you'll learn how to build, release and operate your containerised applications to Amazon ECS and AWS Fargate using AWS Copilot.

Tl;dr Get Started!

Click here to Get Started with Labs

💻 What we are going to build

In this workshop, we are going to deploy an API to convert a website page into a PDF. We are using containers to build the application and deploy them into Amazon ECS using AWS Fargate as the computing option.

Show me how it looks like!

Here’s a quick look on what you’re going to build.

Quick Look

Diagram architecture

This is the full diagram architecture that we will build in this workshop.

Diagram Architecture

There are 2 main components in this applications, 1) internet facing API, and 2) private worker to process request. The API is responsible to handle to validate and process the initial request. The API then will publish a topic with message "request_received" to Amazon SNS.

How does it work?

The flow works when we trigger HTTP POST method with JSON payload to the API endpoint /process. As the system is running on asynchronous communication between services, we won't get the PDF immediately. The return response from /process would be a request ID. In order to get the PDF file, we need to pass the request ID to the /status/ endpoint. Using that endpoint, we can also check the status of the request.

To build the application, defining the release pipeline and operate the application, we will be using AWS Copilot. AWS Copilot is an open-source CLI tool that makes it easy for us to run containers on AWS. If you'd like to know more about AWS Copilot, please refer to the
documentation page

To understand how we can build and operate our containerized applications, the workshop is break down into 5 labs. The labs provided in this workshop are structured to build understanding how to use AWS Copilot from ground up.

📖 About This Workshop

This is L100-300 workshop and specifically structured for developers from any levels.

Requirements

This workshop requires following applications and tools properly configured. Please follow the instruction provided on the links for each applications/tools.

1. AWS CLI

The AWS Command Line Interface (CLI) is a unified tool to manage your AWS services. With just one tool to download and configure, you can control multiple AWS services from the command line and automate them through scripts.

There are 2 versions of the AWS CLI, and we strongly recommend for you to use AWS CLI version 2.

https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html

2. AWS credentials

Once that you have your AWS CLI installed, you also need to configure the settings. The configurations that you need to configure includes your security credentials, the default output format, and the default AWS Region. 

https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html

3. Docker Desktop

Docker is required in this workshop as we are going to package the application using Docker and Amazon ECS will run the application using Docker engine.

https://docs.docker.com/engine/install/

4. Copilot CLI

The AWS Copilot CLI is a tool for developers to build, release and operate production ready containerized applications. At the point of building this workshop, AWS Copilot supports deployment to AWS AppRunner, Amazon ECS and AWS Fargate.

If you have homebrew installed on your platform, you can use following command to install AWS Copilot

brew install aws/tap/copilot-cli  

Otherwise, you need to follow the instructions listed on this page https://github.com/aws/copilot-cli to install AWS Copilot for your platform.

⚠️ Cleaning Up

This workshop uses AWS services that are mostly covered by the Free Tier allowance - ONLY if your account is less than 12 months old. For accounts passed the free tier eligibility, it may incur some costs. To minimize the cost, make sure you delete resources used in this workshop when you are finished.

Please refer to Lab 5: Cleaning Up for more information.

💻 Let's Get Started!

If you have all the requirements needed to run this workshop, now it's time to deploy some apps!

Get Started!

Owner
Donnie Prakoso
Café racer enthusiast. Self-proclaimed barista. Technology Evangelist at Amazon Web Services. Codes are my own.
Donnie Prakoso
Asynchronous parallel SSH client library.

parallel-ssh Asynchronous parallel SSH client library. Run SSH commands over many - hundreds/hundreds of thousands - number of servers asynchronously

1.1k Dec 31, 2022
Visual disk-usage analyser for docker images

whaler What? A command-line tool for visually investigating the disk usage of docker images Why? Large images are slow to move and expensive to store.

Treebeard Technologies 194 Sep 01, 2022
Let's Git - Version Control & Open Source Homework

Let's Git - Version Control & Open Source Homework Welcome to this homework for our MOOC: Let's Git! We hope you will learn a lot and have fun working

1 Dec 05, 2021
Dockerized iCloud drive

iCloud-drive-docker is a simple iCloud drive client in Docker environment. It uses pyiCloud python library to interact with iCloud

Mandar Patil 376 Jan 01, 2023
Repository tracking all OpenStack repositories as submodules. Mirror of code maintained at opendev.org.

OpenStack OpenStack is a collection of interoperable components that can be deployed to provide computing, networking and storage resources. Those inf

Mirrors of opendev.org/openstack 4.6k Dec 28, 2022
CDK Template of Table Definition AWS Lambda for RDB

CDK Template of Table Definition AWS Lambda for RDB Overview This sample deploys Amazon Aurora of PostgreSQL or MySQL with AWS Lambda that can define

AWS Samples 5 May 16, 2022
framework providing automatic constructions of vulnerable infrastructures

中文 | English 1 Introduction Metarget = meta- + target, a framework providing automatic constructions of vulnerable infrastructures, used to deploy sim

rambolized 685 Dec 28, 2022
SSH to WebSockets Bridge

wssh wssh is a SSH to WebSockets Bridge that lets you invoke a remote shell using nothing but HTTP. The client connecting to wssh doesn't need to spea

Andrea Luzzardi 1.3k Dec 25, 2022
Run Oracle on Kubernetes with El Carro

El Carro is a new project that offers a way to run Oracle databases in Kubernetes as a portable, open source, community driven, no vendor lock-in container orchestration system. El Carro provides a p

Google Cloud Platform 205 Dec 30, 2022
DataOps framework for Machine Learning projects.

Noronha DataOps Noronha is a Python framework designed to help you orchestrate and manage ML projects life-cycle. It hosts Machine Learning models ins

52 Oct 30, 2022
Tools for writing awesome Fabric files

About fabtools includes useful functions to help you write your Fabric files. fabtools makes it easier to manage system users, packages, databases, et

1.3k Dec 30, 2022
Webinar oficial Zabbix Brasil. Uma série de 4 aulas sobre API do Zabbix.

Repositório de scripts do Webinar de API do Zabbix Webinar oficial Zabbix Brasil. Uma série de 4 aulas sobre API do Zabbix. Nossos encontros [x] 04/11

Robert Silva 7 Mar 31, 2022
Hackergame nc 类题目的 Docker 容器资源限制、动态 flag、网页终端

Hackergame nc 类题目的 Docker 容器资源限制、动态 flag、网页终端 快速入门 配置证书 证书用于验证用户 Token。请确保这里的证书文件(cert.pem)与 Hackergame 平台 配置的证书相同,这样 Hackergame 平台为每个用户生成的 Token 才可以通

USTC Hackergame 68 Nov 09, 2022
Honcho: a python clone of Foreman. For managing Procfile-based applications.

___ ___ ___ ___ ___ ___ /\__\ /\ \ /\__\ /\ \ /\__\ /\

Nick Stenning 1.5k Jan 03, 2023
Dockerized service to backup all running database containers

Docker Database Backup Dockerized service to automatically backup all of your database containers. Docker Image Tags: docker.io/jandi/database-backup

Jan Dittrich 16 Dec 31, 2022
A collection of beginner-friendly DevOps content

mansion Mansion is just a testing repo for learners to commit into open source project. These are the steps you need to learn: Please do not edit thes

Bryan Lim 62 Nov 30, 2022
Remote Desktop Protocol in Twisted Python

RDPY Remote Desktop Protocol in twisted python. RDPY is a pure Python implementation of the Microsoft RDP (Remote Desktop Protocol) protocol (client a

Sylvain Peyrefitte 1.6k Dec 30, 2022
Chartreuse: Automated Alembic migrations within kubernetes

Chartreuse: Automated Alembic SQL schema migrations within kubernetes "How to automate management of Alembic database schema migration at scale using

Wiremind 8 Oct 25, 2022
Python job scheduling for humans.

schedule Python job scheduling for humans. Run Python functions (or any other callable) periodically using a friendly syntax. A simple to use API for

Dan Bader 10.4k Jan 02, 2023
A cpp project template that uses CMake to build and Google Test / Github Actions to provide a CI

A cpp project template that uses CMake to build and Google Test / Github Actions to provide a CI

Martin Olivier 6 Nov 17, 2022