AWS DevOps Tools

Host code, build, test, and deploy your applications quickly and effectively with AWS developer tools. Leverage core tools like software development kits (SDKs), code editors, and continuous integration and delivery (CI/CD) services for DevOps software development.

AWS CloudFormation

AWS CloudFormation is a service that gives developers and businesses an easy way to create a collection of related AWS and third-party resources and provision and manages them in an orderly and predictable fashion.

• CloudFormation is a declarative way of outlining your AWS Infrastructure for any resources (most of them are supported).
• For example, within a CloudFormation template, you say:

• I want a security group
• I want two EC2 instances using this security group
• I want an S3 bucket
• I want a load balancer (ELB) in front of these machines

• Then CloudFormation creates those for you, in the correct order, with the exact configuration that you specify.

What is CloudFormation suitable for?

• Infrastructure as code
• No resources are manually created, which is excellent for control • Changes to the infrastructure are reviewed through code
• Cost
• Each resource within the stack is tagged with an identifier so you can quickly see how much a stack costs you
• You can estimate the costs of your resources using the CloudFormation template
• Savings strategy: In Dev, you could use automation deletion of templates at 5 PM and recreate at 8 AM, safely

• Productivity
• Ability to destroy and re-create an infrastructure on the cloud on the fly
• Automated generation of diagrams for your templates!
• Declarative programming (no need to figure out ordering and orchestration)
• Don’t re-invent the wheel
• Leverage existing templates on the web! • Leverage the documentation
• Supports (almost) all AWS resources:
• Everything we’ll see in this course is supported
• You can use “custom resources” for resources that are not supported

If a user wants to deploy a service to the AWS Cloud by using infrastructure-as-code (IaC) principles, then AWS CloudFormation can be used to meet this requirement.

Amazon Beanstalk

AWS Elastic Beanstalk is an easy-to-use service for deploying and scaling web applications and services developed with Java, NET, PHP, NodeJS, Python, Ruby, Go, and Docker on familiar servers such as Apache, Nginx, Passenger, and IIS.

• Elastic Beanstalk is a developer-centric view of deploying an application on AWS
• It uses all the components we’ve seen before: EC2, ASG, ELB, RDS, etc.
• But it’s all in one view that’s easy to make sense of!
• We still have complete control over the configuration
• Beanstalk = Platform as a Service (PaaS)
• Beanstalk is free, but you pay for the underlying instances

AWS Elastic Beanstalk works for a company that wants the ability to quickly upload its applications to the AWS Cloud without needing to provision underlying resources. When deploying applications in the AWS Cloud as quickly as possible and minimizing the complexity that is related to the management of AWS resources, a company should use the AWS Elastic Beanstalk service to meet the requirements.

• Managed service
• Beanstalk handles instance configuration / OS
• Deployment strategy is configurable but performed by Elastic Beanstalk • Capacity provisioning
• Load balancing & auto-scaling
• Application health-monitoring & responsiveness
• Just the application code is the responsibility of the developer
• Three architecture models:
• Single Instance deployment: good for Dev
• LB + ASG: great for production or pre-production web applications • ASG only: great for non-web apps in production (workers, etc..)

• Support for many platforms:
• Go
• Java SE
• Java withTomcat
• .NET on Windows Server with IIS
• Node.js
• PHP
• Python
• Ruby
• Packer Builder
• Single Container Docker • Multi-Container Docker • Preconfigured Docker
• If not supported, you can write your custom platform (advanced)

AWS CodeDeploy

AWS CodeDeploy is a service that automates code deployments to any instance, including Amazon EC2 and on-premises instances. AWS CodeDeploy makes it easier to release new features rapidly, helps you avoid downtime during deployment, and handles the complexity of updating your applications.

• We want to deploy our application automatically
• Works with EC2 Instances
• Works with On-Premises Servers
• Hybrid service
• Servers / Instances must be provisioned and configured ahead of time with the CodeDeploy Agent

Amazon Systems Manager

AWS Systems Manager centralizes operational data from multiple AWS services and automates tasks across your AWS resources. You can create logical groups of resources such as applications, different layers of an application stack, or production versus development environments.

• Helps you manage your EC2 and On-Premises systems at scale • Another Hybrid AWS service
• Get operational insights about the state of your infrastructure • Suite of 10+ products
• Most essential features are:
• Patching automation for enhanced compliance
• Run commands across an entire fleet of servers
• Store parameter configuration with the SSM Parameter Store
• Works for both Windows and Linux OS

AWS OpsWorks

AWS OpsWorks is a configuration management service that provides managed instances of Chef and Puppet. Chef and Puppet are automation platforms that allow you to use code to automate the configurations of your servers.

• Chef & Puppet help you perform server configuration automatically, or repetitive actions
• They work great with EC2 & On-PremisesVM
• AWS OpsWorks = Managed Chef & Puppet
• It’s an alternative to AWS SSM
• Only provision standard AWS resources:
• EC2 Instances, Databases, Load Balancers, EBS volumes…

AWS CodeCommit

AWS CodeCommit is a secure, highly scalable, managed source control service that hosts private Git repositories. It makes it easy for teams to securely collaborate on code with contributions encrypted in transit and at rest.
Amazon CodeBuild

• Before pushing the application code to servers, it needs to be stored somewhere
• Developers usually store code in a repository, using the Git technology
• A famous public offering is GitHub; AWS’ competing product is CodeCommit
• CodeCommit:
• Source-control service that hosts Git-based repositories • Makes it easy to collaborate with others on code
• The code changes are automatically versioned
• Benefits:
• Fully managed
• Scalable & highly available
• Private, Secured, Integrated with AWS

If a developer is working on enhancing applications at AWS and needs a service that can securely host GitHub-based code, repositories, and version controls, the developer can use the AWS CodeCommit service.

AWS CodeCommit is a way a company that wants to host a private version control system for its application code in the AWS Cloud can meet the requirement.

Amazon Web Services CodePipeline

AWS CodePipeline is a continuous delivery service you can use to model, visualize, and automate the steps required to release your software. You can quickly model and configure the different stages of a software release process. CodePipeline automates the steps necessary to release your software changes continuously.

• Orchestrate the different steps to have the code automatically pushed to production • Code => Build => Test => Provision => Deploy
• Basis for CICD (Continuous Integration & Continuous Delivery)
• Benefits:
• Fully managed, compatible with CodeCommit, CodeBuild, CodeDeploy, ElasticBeanstalk, CloudFormation, GitHub, 3rd-party services (GitHub…) & custom plugins.
• Fast delivery & rapid updates

AWS CodeArtifact

AWS CodeArtifact is a fully managed artifact repository service that makes it easy for organizations of any size to securely store, publish, and share software packages used in their software development process.

• Software packages depend on each other to be built (also called code dependencies), and new ones are created
• Storing and retrieving these dependencies is called artifact management
• Traditionally, you need to set up your artifact management system
• CodeArtifact is a secure, scalable, and cost-effective artifact management for software development
• Works with standard dependency management tools such as Maven, Gradle, npm, yarn, twine, pip, and NuGet
• Developers and CodeBuild can then retrieve dependencies straight from CodeArtifact

Amazon CodeStar

AWS CodeStar is a cloud‑based development service that provides the tools you need to develop, build, and deploy applications on AWS quickly. With AWS CodeStar, you can set up your entire continuous delivery toolchain in minutes, allowing you to start releasing code faster.

• Unified UI to easily manage software development activities in one place
• “Quick way” to get started to correctly setup CodeCommit, CodePipeline, CodeBuild, CodeDeploy, Elastic Beanstalk, EC2, etc
• Can edit the code” in-the-cloud” using AWS Cloud9

A company that wants to set up an entire development and continuous delivery toolchain for coding, building, testing, and deploying code can use AWS CodeStar to meet their requirements.

AWS Cloud9

AWS Cloud9 is a cloud-based integrated development environment (IDE) that lets you write, run, and debug your code with just a browser. It combines an IDE’s rich code editing features, such as code completion, hinting, and step-through debugging, with access to an entire Linux server for running and storing code.

• AWS Cloud9 is a cloud IDE (Integrated Development Environment) for writing, running, and debugging code
• “Classic” IDE (like IntelliJ, Visual Studio Code…) are downloaded on a computer before being used
• A cloud IDE can be used within a web browser, meaning you can work on your projects from your office, home, or anywhere with the internet with no setup necessary
• AWS Cloud9 also allows for code collaboration in real-time (pair programming)

AWS CDK

The AWS Cloud Development Kit (AWS CDK) is an open-source software development framework to define your cloud application resources using familiar programming languages.

Learn more about AWS DevOps