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
Docker Container wallstreetbets-sentiment-analysis

Docker Container wallstreetbets-sentiment-analysis A docker container using restful endpoints exposed on port 5000 "/analyze" to gather sentiment anal

145 Nov 22, 2022
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
Let's learn how to build, release and operate your containerized applications to Amazon ECS and AWS Fargate using AWS Copilot.

🚀 Welcome to AWS Copilot Workshop In this workshop, you'll learn how to build, release and operate your containerised applications to Amazon ECS and

Donnie Prakoso 15 Jul 14, 2022
Kube kombu - Running kombu consumers with support of liveness probe for kubernetes

Setup and Running Kombu consumers Steps: Install python 3.9 or greater on your s

Anmol Porwal 5 Dec 10, 2022
A simple python application for running a CI pipeline locally This app currently supports GitLab CI scripts

🏃 Simple Local CI Runner 🏃 A simple python application for running a CI pipeline locally This app currently supports GitLab CI scripts ⚙️ Setup Inst

Tom Stowe 0 Jan 11, 2022
IP address management (IPAM) and data center infrastructure management (DCIM) tool.

NetBox is an IP address management (IPAM) and data center infrastructure management (DCIM) tool. Initially conceived by the network engineering team a

NetBox Community 11.8k Jan 07, 2023
MagTape is a Policy-as-Code tool for Kubernetes that allows for evaluating Kubernetes resources against a set of defined policies to inform and enforce best practice configurations.

MagTape is a Policy-as-Code tool for Kubernetes that allows for evaluating Kubernetes resources against a set of defined policies to inform and enforce best practice configurations. MagTape includes

T-Mobile 143 Dec 27, 2022
pyinfra automates infrastructure super fast at massive scale. It can be used for ad-hoc command execution, service deployment, configuration management and more.

pyinfra automates/provisions/manages/deploys infrastructure super fast at massive scale. It can be used for ad-hoc command execution, service deployme

Nick Barrett 2.1k Dec 29, 2022
More than 130 check plugins for Icinga and other Nagios-compatible monitoring applications. Each plugin is a standalone command line tool (written in Python) that provides a specific type of check.

Python-based Monitoring Check Plugins Collection This Enterprise Class Check Plugin Collection offers a package of more than 130 Python-based, Nagios-

Linuxfabrik 119 Dec 27, 2022
Wiremind Kubernetes helper

Wiremind Kubernetes helper This Python library is a high-level set of Kubernetes Helpers allowing either to manage individual standard Kubernetes cont

Wiremind 3 Oct 09, 2021
Lima is an alternative to using Docker Desktop on your Mac.

lima-xbar-plugin Table of Contents Description Installation Dependencies Lima is an alternative to using Docker Desktop on your Mac. Description This

Joe Block 68 Dec 22, 2022
Hatch plugin for Docker containers

hatch-containers CI/CD Package Meta This provides a plugin for Hatch that allows

Ofek Lev 11 Dec 30, 2022
Micro Data Lake based on Docker Compose

Micro Data Lake based on Docker Compose This is the implementation of a Minimum Data Lake

Abel Coronado 15 Jan 07, 2023
Chef-like functionality for Fabric

/ / ___ ___ ___ ___ | | )| |___ | | )|___) |__ |__/ | __/ | | / |__ -- Chef-like functionality for Fabric About Fabric i

Sébastien Pierre 1.3k Dec 21, 2022
Run your clouds in RAID.

UniKlaud Run your clouds in RAID Table of Contents About The Project Built With Getting Started Installation Usage Roadmap Contributing License Contac

3 Jan 16, 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
Bitnami Docker Image for Python using snapshots for the system packages repositories

Python Snapshot packaged by Bitnami What is Python Snapshot? Python is a programming language that lets you work quickly and integrate systems more ef

Bitnami 1 Jan 13, 2022
MLops tools review for execution on multiple cluster types: slurm, kubernetes, dask...

MLops tools review focused on execution using multiple cluster types: slurm, kubernetes, dask...

4 Nov 30, 2022
Cado Response Integration with Amazon GuardDuty using AWS Lambda

Cado Response Integration with Amazon GuardDuty using AWS Lambda This repository contains a simple example where: An alert is triggered by GuardDuty T

Cado Security 4 Mar 02, 2022
Ganeti is a virtual machine cluster management tool built on top of existing virtualization technologies such as Xen or KVM and other open source software.

Ganeti 3.0 =========== For installation instructions, read the INSTALL and the doc/install.rst files. For a brief introduction, read the ganeti(7) m

395 Jan 04, 2023