Introduction
- Why Spring Boot & AWS?
- Who Should Read This Book?
- Prerequisites for the Hands-On Examples
- What to Expect from This Book?
- Getting in Touch
- Resources
- About the Authors
- Part I: Deploying with AWS
1. Getting Warm with AWS
- Getting Ready
- Inspecting the “Hello World” Todo App
- Publishing the “Hello World” App to Docker Hub
- Getting Started with AWS Resources
- Inspecting the CloudFormation Templates
- Inspecting the Deployment Scripts
- Inspecting the AWS Console
2. An Overview of AWS Services
- AWS CloudFormation
- AWS Cloud Development Kit (CDK)
- Amazon CloudWatch
- Amazon Cognito
- Amazon DynamoDB
- Amazon Elastic Compute Cloud (EC2)
- Amazon Elastic Container Registry (ECR)
- Amazon Elastic Container Service (ECS)
- Amazon MQ
- Amazon Relational Database Service (RDS)
- Amazon Route 53
- Amazon Simple Email Service (SES)
- Amazon Simple Queue Service (SQS)
- Amazon Simple Storage Service (S3)
- Amazon Virtual Private Cloud (VPC)
- AWS Certificate Manager
- AWS Identity and Access Management (IAM)
- AWS Lambda
- AWS Secrets Manager
- AWS Systems Manager (SSM)
- Elastic Load Balancing (ELB)
3. Managing Permissions with IAM
- Users, Groups, and Roles
- Root Users vs. Individual Users
- Defining Policies
- Creating AWS Access Keys for Each User
- Managing IAM Resources Programmatically
- Best Practices for Managing Permissions with IAM
4. The Evolution of Automated Deployments
- An Anecdote about Manual Deployments
- Self-Service Deployments with the AWS Console
- Scriptable Deployments with the AWS CLI
- Declarative Deployments with CloudFormation
- Programmable Deployments with CDK
5. First Steps with CDK
- Creating Our First CDK App
- Deploying a Spring Boot App with a CDK Construct
- Why Not Stop Here?
6. Designing a Deployment Project with CDK
- The Big Picture
- Working with CDK
- The Docker Repository CDK App
- The Network CDK App
- The Service CDK App
- Playing with the CDK Apps
7. Building a Continuous Deployment Pipeline
- GitHub Actions Concepts
- Bootstrapping a New Environment
- Deploying a Shared Network
- Deploying an Application Environment
- Building a Continuous Deployment Workflow
- Supporting High-Frequency Deployments with Amazon SQS and AWS Lambda
Addendum: Configuring HTTPS and a Custom Domain with Route 53 and ELB
- Domain Name System (DNS)
- HTTPS and Transport Layer Security (TLS)
- Registering or Transferring a Domain
- Creating an SSL Certificate with CDK
- Creating an HTTPS Listener Using the Network App
- Associating a Custom Domain For the ELB
- Part II: Spring Boot & AWS
8. The Sample Todo Application
- Features
- Application Architecture
- Domain Model
- Skeleton Application Setup
9. Local Development
- The Challenges of Local Cloud Development
- LocalStack - Our Local AWS Cloud
- Local Amazon RDS & Amazon Cognito
- Bringing It All Together
10. Building User Registration and Login with Amazon Cognito
- What’s OAuth2?
- OAuth 2.0 Terminology
- OpenID Connect 1.0 (OIDC)
- Alternatives to OAuth2 & OpenID Connect
- Using Amazon Cognito for User Management
- Using Amazon Cognito as an Identity Provider With Spring Security
- Enabling Local Development
11. Connecting to a Database with Amazon RDS
- Introduction to AWS Relational Database Service (RDS)
- Setting up IAM Permissions
- Creating a Database CDK App
- Strategies for Initializing the Database Structure
- Configuring the Database in the Todo App
- Using the Database for Storing and Retrieving Todos
- Enabling Local Development
12. Sharing Todos with Amazon SQS and Amazon SES
- Using Amazon SQS for Asynchronous Workloads
- Sending Emails with Amazon SES
- Enabling Local Development
13. Push Notifications with Amazon MQ
- What Are Push Notifications Anyway?
- Push Notifications for Live Updates
- AWS Services for Implementing Push Notifications
- Setting up a Message Broker with CDK
- Implementing Push Notifications in the Todo App
- Enabling Local Development
14. Tracing User Actions with Amazon DynamoDB
- Use Case: Tracing User Actions
- Amazon RDS vs. Amazon DynamoDB
- Implementing User Tracing in the Todo App
- Enabling Local Development
- Part III: Production Readiness with AWS
15. Structured Logging with Amazon CloudWatch
- Logging with AWS
- CloudWatch Logging Terminology
- Status Quo: Logging Unstructured Text
- Logging and Querying Structured Data
16. Metrics with Amazon CloudWatch
- Introduction to Monitoring Metrics with Amazon CloudWatch
- Sending Metrics from AWS Services
- Sending Metrics from Our Spring Boot Application
- Monitoring Metrics with Amazon CloudWatch
17. Alerting with Amazon CloudWatch
- Introduction to Alerting with Amazon CloudWatch
- Creating Alarms with the AWS CDK
- Working and Living with Alarms and Incidents
18. Synthetic Monitoring with Amazon CloudWatch
- Introduction to CloudWatch Synthetics
- Recording a Canary Script for the Todo App
- Keeping it Simple
- Automating Canary Deployment with CDK
- Alerting on Canary Failure
- Closing Thoughts
Conquer the Cloud
- Additional Resources
- Appendix
- Technical GitHub Actions IAM User
- Deployment Guide

