← All notes

AWS Cloud Development Kit (CDK)

  • Define your cloud infrastructure using a familiar language:
    • JavaScript/TypeScript, Python, Java and .NET
  • The code is "compiled" into a CloudFormation template (JSON/YAML)
  • You can therefore deploy infrastructure and application runtime code together
    • Great for Lambda functions
    • Great for Docker containers in EC2 / EKS

Elastic Beanstalk

  • Elastic Beanstalk is a developer centric view of deploying an application on AWS

  • It uses all the component's 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 full control over the configuration

  • Beanstalk = Platform as a Service (PaaS)

  • Beanstalk is free but you pay for the underlying instances

  • Manage services

    • Instance configuration / OS is handle by Beanstalk
    • Deployment strategy is configurable but performed by Elastic Beanstalk
    • Capability 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 with Tomcat...

  • Health agent pushes metrics to CloudWatch

  • Checks for app health,

  • publishes health events

AWS CodeDeploy

  • 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

AWS CodeBuild

  • Code building service in the cloud
  • Compiles source code, run tests, and produces packages that are ready to deployed (by CodeDeploy for example)
  • Benefits:
    • Fully managed, serverless
    • Continuously scalable & highly available
    • Secure
    • Pay-as-you-go pricing - only pay for the build time

AWS CodePipeline

  • 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, Elastic Beanstalk, CloudFormation, GitHub, 3rd-party services & custom plugins...
    • Fast delivery & rapid updates

AWS CodeArtifact

  • 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 setup your own artifact management system
  • CodeArtifact is a secure, scalable, and cost-effective artifact management for software development
  • Works with common dependency management tools such as Maven, Gradle, npm, yarn, twine, pip and NuGet
  • Developers and CodeBuild can then retrieve dependencies straight from CodeArtifact

AWS Systems Manager (SSM)

  • 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 important 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 Linux, Windows, MacOS, and Raspberry Pi OS ( Raspbian)

Systems Manager - SSM Session Manager

  • Allows you to start a secure shell on your EC2 and on-premises servers

  • No SSH access, bastion hosts, or SSH keys needed

  • No port 22 needed (better security)

  • Supports Linux, Windows and MacOS

  • Send session log data to S3 or CloudWatch Logs

Systems Manager - Parameter Store

  • Secure store for configuration and secrets
  • API keys, passwords, configurations...
  • Serverless, scalable, durable, easy SDK
  • Control access permissions using IAM
  • Version tracking & encryption (optional)