Amazon Web Services in Action, Second Edition
Michael Wittig and Andreas Wittig
  • MEAP began September 2017
  • Publication in September 2018 (estimated)
  • ISBN 9781617295119
  • 550 pages (estimated)
  • printed in black & white

Provides an excellent overview of many of the services available in AWS.

Gary Hubbard


An eBook copy of the previous edition, Amazon Web Services in Action (First Edition), is included at no additional cost. It will be automatically added to your Manning Bookshelf within 24 hours of purchase.

Fully updated to include the latest revisions and updates to AWS; this new edition also offers three new chapters covering the latest additions to the AWS platform: serverless infrastructure automation with AWS Lambda, sharing data volumes between machines with EFS, and caching data in memory with ElastiCache!

Table of Contents detailed table of contents

Part 1: Getting started

Introducing Amazon Web Services

1. What is Amazon Web Services?

1.1. What is cloud computing?

1.2. What can you do with AWS?

1.2.1. Hosting a web shop

1.2.2. Running a Java EE application in your private network

1.2.3. Implementing a highly available system

1.2.4. Profiting from low costs for batch processing infrastructure

1.3. How you can benefit from using AWS

1.3.1. Innovative and fast-growing platform

1.3.2. Services solve common problems

1.3.3. Enabling automation

1.3.4. Flexible capacity (scalability)

1.3.5. Built for failure (reliability)

1.3.6. Reducing time to market

1.3.7. Benefiting from economies of scale

1.3.8. Global infrastructure

1.3.9. Professional partner

1.4. How much does it cost?

1.4.1. Free Tier

1.4.2. Billing example

1.4.3. Pay-per-use opportunities

1.5. Comparing alternatives

1.6. Exploring AWS services

1.7. Interacting with AWS

1.7.1. Management Console

1.7.2. Command-line interface

1.7.3. SDKs

1.7.4. Blueprints

1.8. Creating an AWS account

1.8.1. Signing up

1.8.2. Signing In

1.8.3. Creating a key pair

1.9. Create a billing alarm to keep track of your AWS bill

1.10. Summary

2. A simple example: WordPress on AWS in five minutes

2.1. Creating your infrastructure

2.2. Exploring your infrastructure

2.2.1. Resource groups

2.2.2. Virtual machines

2.2.3. Load balancer

2.2.4. MySQL database

2.2.5. Network File System

2.3. How much does it cost?

2.4. Deleting your infrastructure

2.5. Summary

Part 2: Building virtual infrastructure with servers and networking

From hardware to virtual computers and networks

3. Using virtual machines: Amazon EC2

3.1. Exploring a virtual machine

3.1.1. Launching a virtual machine

3.1.2. Connecting to your virtual machine

3.1.3. Installing and running software manually

3.2. Monitoring and debugging a virtual machine

3.2.1. Showing logs from a virtual machine

3.2.2. Monitoring the load of a virtual machine

3.3. Shutting down a virtual machine

3.4. Changing the size of a virtual machine

3.5. Starting a virtual machine in another data center

3.6. Allocating a public IP address

3.7. Adding an additional network interface to a virtual machine

3.8. Optimizing costs for virtual machines

3.8.1. Reserve virtual machines

3.8.2. Bidding on unused virtual machines

3.9. Summary

4. Programming your infrastructure: the command-line interface, SDKs, and AWS CloudFormation

4.1. Infrastructure as code

4.1.1. Automation and the DevOps movement

4.1.2. Inventing an infrastructure language: JIML

4.2. Using the command-line interface

4.2.1. Why should you automate?

4.2.2. Installing the CLI

4.2.3. Configuring the CLI

4.2.4. Using the CLI

4.3. Programming with the SDK

4.3.1. Controlling virtual machines with SDK: nodecc

4.3.2. How nodecc creates a virtual machine

4.3.3. How nodecc lists virtual machines and shows virtual machine details

4.3.4. How nodecc terminates a virtual machine

4.4. Using a blueprint to start a virtual machine

4.4.1. Anatomy of a CloudFormation template

4.4.2. Creating your first template

4.5. Summary

5. Deploying apps onto virtual machines: AWS CloudFormation, AWS Elastic Beanstalk, and AWS OpsWorks

5.1. Deploying applications in a flexible cloud environment

5.2. Comparing deployment tools

5.2.1. Classifying the deployment tools

5.2.2. Comparing the deployment services

5.3. Creating a virtual machine and run a deployment script on startup with AWS CloudFormation

5.3.1. Using user data to run a script on startup

5.3.2. Deploying OpenSwan: a VPN server to a virtual machine

5.3.3. Starting from scratch instead of updating

5.4. Deploying a simple web application with AWS Elastic Beanstalk

5.4.1. Components of AWS Elastic Beanstalk

5.4.2. Using AWS Elastic Beanstalk to deploy Etherpad, a Node.js application

5.5. Deploying a multilayer application with AWS OpsWorks Stacks

5.5.1. Components of AWS OpsWorks Stacks

5.5.2. Using AWS OpsWorks Stacks to deploy an IRC chat application

5.6. Summary

6. Securing your system: AWS IAM, security groups, and Amazon VPC

6.1. Who’s responsible for security?

6.2. Keeping your software up to date

6.2.1. Checking for security updates

6.2.2. Installing security updates on startup

6.2.3. Installing security updates on running virtual machines

6.3. Securing your AWS account

6.3.1. Securing your AWS account’s root user

6.3.2. AWS Identity and Access Management (IAM)

6.3.3. Defining permissions with an IAM policy

6.3.4. Users for authentication, and groups to organize users

6.3.5. Authenticating AWS resources with roles

6.4. Controlling network traffic to and from your virtual machine

6.4.1. Controlling traffic to virtual machines with security groups

6.4.2. Allowing ICMP traffic

6.4.3. Allowing SSH traffic

6.4.4. Allowing SSH traffic from a source IP address

6.4.5. Allowing SSH traffic from a source security group

6.5. Creating a private network in the cloud: Amazon Virtual Private Cloud (VPC)

6.5.1. Creating the VPC and an internet gateway (IGW)

6.5.2. Defining the public bastion host subnet

6.5.3. Adding the private Apache web server subnet

6.5.4. Launching virtual machines in the subnets

6.5.5. Accessing the internet from private subnets via a NAT gateway

6.6. Summary

7. Automating operational tasks with AWS Lambda

7.1. Executing your code with AWS Lambda

7.1.1. What is serverless?

7.1.2. Running your code on AWS Lambda

7.1.3. Comparing AWS Lambda with virtual machines (Amazon EC2)

7.2. Building a website health check with AWS Lambda

7.2.1. Creating a Lambda function

7.2.2. Use CloudWatch to search through your Lambda function’s logs

7.2.3. Monitoring a Lambda function with CloudWatch metrics and alarms

7.2.4. Accessing endpoints within a VPC

7.3. Adding a tag containing the owner of an EC2 instance automatically

7.3.1. Event-driven: subscribing to CloudWatch events

7.3.2. Implementing the Lambda function in Python

7.3.3. Setting up a Lambda function with the Serverless Application Model (SAM)

7.3.4. Authorizing a Lambda function to use other AWS services with an IAM role

7.3.5. Deploying a Lambda function with SAM

7.4. What else can you do with AWS Lambda?

7.4.1. What are the limitations of AWS Lambda?

7.4.2. Impacts of the serverless pricing model

7.4.3. Use case: web application

7.4.4. Use case: data processing

7.4.5. Use case: IoT back end

7.5. Summary

Part 3: Storing data in the cloud

Why servers should be stateless

8. Storing your objects: Amazon S3 and Amazon Glacier

8.1. What is an object store?

8.2. Amazon S3

8.3. Backing up your data on S3 with AWS CLI

8.4. Archiving objects to optimize costs

8.4.1. Creating an S3 bucket for the use with Glacier

8.4.2. Adding a lifecycle rule to a bucket

8.4.3. Experimenting with Glacier and your lifecycle rule

8.5. Storing objects programmatically

8.5.1. Setting up an S3 bucket

8.5.2. Installing a web application that uses S3

8.5.3. Reviewing code access S3 with SDK

8.6. Using S3 for static web hosting

8.6.1. Creating a bucket and uploading a static website

8.6.2. Configuring a bucket for static web hosting

8.6.3. Accessing a website hosted on S3

8.7. Best practices for using S3

8.7.1. Ensuring data consistency

8.7.2. Choosing the right keys

8.8. Summary

9. Storing your data on hard drives: Amazon EBS and instance store

9.1. Elastic Block Store (EBS): persistent block-level storage attached over the network

9.1.1. Creating an EBS volume and attaching it to your EC2 instance

9.1.2. Using Elastic Block Store

9.1.3. Tweaking performance

9.1.4. Backing up your data with EBS snapshots

9.2. Instance Store: temporary block-level storage

9.2.1. Using an instance store

9.2.2. Testing performance

9.2.3. Backing up your data

9.3. Summary

10. Sharing data volumes between machines: Amazon EFS

10.1. Creating a file system

10.1.1. Using CloudFormation to describe a file system

10.1.2. Pricing

10.2. Creating a mount target

10.3. Mounting the EFS share on EC2 instances

10.4. Sharing files between EC2 instances

10.5. Tweaking performance

10.5.1. Performance mode

10.5.2. Expected throughput

10.6. Monitoring a file system

10.6.1. Should you use Max I/O Performance Mode?

10.6.2. Monitoring your permitted throughput

10.6.3. Monitoring your usage

10.7. Backing up your data

10.7.1. Using CloudFormation to describe an EBS volume

10.7.2. Using the EBS volume

10.8. Summary

11. Using a relational database service: Amazon RDS

11.1. Starting a MySQL database

11.1.1. Launching a WordPress platform with an RDS database

11.1.2. Exploring an RDS database instance with a MySQL engine

11.1.3. Pricing for Amazon RDS

11.2. Importing data into a database

11.3. Backing up and restoring your database

11.3.1. Configuring automated snapshots

11.3.2. Creating snapshots manually

11.3.3. Restoring a database

11.3.4. Copying a database to another region

11.3.5. Calculating the cost of snapshots

11.4. Controlling access to a database

11.4.1. Controlling access to the configuration of an RDS database

11.4.2. Controlling network access to an RDS database

11.4.3. Controlling data access

11.5. Relying on a highly available database

11.5.1. Enabling high-availability deployment for an RDS database

11.6. Tweaking database performance

11.6.1. Increasing database resources

11.6.2. Using read replication to increase read performance

11.7. Monitoring a database

11.8. Summary

12. Caching data in memory: Amazon ElastiCache

12.1. Creating a cache cluster

12.1.1. Minimal CloudFormation template

12.1.2. Test the Redis cluster

12.2. Cache deployment options

12.2.1. Memcached: cluster

12.2.2. Redis: single-node cluster

12.2.3. Redis: cluster with cluster mode disabled

12.2.4. Redis: cluster with cluster mode enabled

12.3. Controlling cache access

12.3.1. Controlling access to the configuration

12.3.2. Controlling network access

12.3.3. Controlling cluster and data access

12.4. Installing the sample application Discourse with CloudFormation: A platform for community discussion

12.4.1. VPC—​Network configuration

12.4.2. Cache—​Security group, subnet group, cache cluster

12.4.3. Database—​Security group, subnet group, database instance

12.4.4. Virtual machine—​Security group, EC2 instance

12.4.5. Testing the CloudFormation template for Discourse

12.5. Monitoring a cache

12.5.1. Monitoring host-level metrics

12.5.2. Is my memory sufficient?

12.5.3. Is my Redis replication up-to-date?

12.6. Tweaking cache performance

12.6.1. Selecting the right cache node type

12.6.2. Selecting the right deployment option

12.6.3. Compressing your data

12.7. Summary

13. Programming for the NoSQL database service: Amazon DynamoDB

13.1. Operating DynamoDB

13.1.1. Administration

13.1.2. Pricing

13.1.3. Networking

13.1.4. RDS comparison

13.1.5. NoSQL comparison

13.2. DynamoDB for developers

13.2.1. Tables, items, and attributes

13.2.2. Primary key

13.2.3. DynamoDB Local

13.3. Programming a to-do application

13.4. Creating tables

13.4.1. Users are identified by a partition key

13.4.2. Tasks are identified by a partition key and sort key

13.5. Adding data

13.5.1. Adding a user

13.5.2. Adding a task

13.6. Retrieving data

13.6.1. Getting an item by key

13.6.2. Querying items by key and filter

13.6.3. Using global secondary indexes for more flexible queries

13.6.4. Scanning and filtering all of your table’s data

13.6.5. Eventually consistent data retrieval

13.7. Removing data

13.8. Modifying data

13.9. Scaling capacity

13.9.1. Capacity Units

13.9.2. Auto Scaling

13.10. Summary

Part 4: Architecting on AWS

Everything fails all the time

14. Making your infrastructure highly available: availability zones, auto-scaling, and Amazon CloudWatch

14.1. Recovering from EC2 instance failure with CloudWatch

14.1.1. Creating a CloudWatch alarm to trigger recovery when status checks fail

14.1.2. Monitoring and recovering a virtual machine based on a CloudWatch alarm

14.2. Recovering from a data center outage

14.2.1. Availability zones: groups of isolated data centers

14.2.2. Using auto-scaling to ensure that an EC2 instance is always running

14.2.3. Recovering a failed virtual machine to another availability zone with the help of auto-scaling

14.2.4. Pitfall: recovering network-attached storage

14.2.5. Pitfall: network interface recovery

14.3. Analyzing disaster-recovery requirements

14.3.1. RTO and RPO comparison for a single EC2 instance

14.4. Summary

15. Decoupling your infrastructure: Elastic Load Balancing and Amazon Simple Queue Service

15.1. Synchronous decoupling with load balancers

15.1.1. Setting up a load balancer with virtual machines

15.2. Asynchronous decoupling with message queues

15.2.1. Turning a synchronous process into an asynchronous one

15.2.2. Architecture of the URL2PNG application

15.2.3. Setting up a message queue

15.2.4. Producing messages programmatically

15.2.5. Consuming messages programmatically

15.2.6. Limitations of messaging with SQS

15.3. Summary

16. Designing for fault tolerance

16.1. Using redundant EC2 instances to increase availability

16.1.1. Redundancy can remove a single point of failure

16.1.2. Redundancy requires decoupling

16.2. Considerations for making your code fault-tolerant

16.2.1. Let it crash, but also retry

16.2.2. Idempotent retry makes fault tolerance possible

16.3. Building a fault-tolerant web application: Imagery

16.3.1. The idempotent state machine

16.3.2. Implementing a fault-tolerant web service

16.3.3. Implementing a fault-tolerant worker to consume SQS messages

16.3.4. Deploying the application

16.4. Summary

17. Scaling up and down: auto-scaling and Amazon CloudWatch

17.1. Managing a dynamic EC2 instance pool

17.2. Using metrics or schedules to trigger scaling

17.2.1. Scaling based on a schedule

17.2.2. Scaling based on CloudWatch metrics

17.3. Decouple your dynamic EC2 instance pool

17.3.1. Scaling a dynamic EC2 instance pool synchronously decoupled by a load balancer

17.3.2. Scaling a dynamic EC2 instances pool asynchronously decoupled by a queue

17.4. Summary

About the Technology

Whether you're analyzing real-time data, hosting enterprise software, or running an e-commerce site, Amazon Web Services offers you a reliable cloud-based platform with services that scale to fit your needs. The most mature cloud platform available, AWS provides basic infrastructure resources like connectivity, networking, computing power, and storage - all on a pay-as-you-go basis so you can get just what you need when you need it.

About the book

Amazon Web Services in Action, Second Edition is a comprehensive introduction to computing, storing, and networking in the AWS cloud. You'll find clear, relevant coverage of all the essential AWS services you to know, emphasizing best practices for security, high availability and scalability. The practical, hands-on examples include different approaches to deploying applications on AWS, how to secure your infrastructure by isolating networks, and controlling traffic and managing access to AWS resources. You'll also learn to integrate AWS services into your own applications using SDKs and gain handy ideas on how to design applications for high availability, fault tolerance, and scalability.

What's inside

  • An overview of AWS cloud concepts and best practices
  • Managing servers on EC2 for cost-effectiveness
  • Infrastructure automation with Infrastructure as Code (AWS CloudFormation)
  • Deploying applications on AWS
  • Storing data on AWS
  • Integrating Amazon's pre-built services
  • Architecting highly available and fault tolerant systems

About the reader

Written for developers and DevOps engineers moving distributed applications to the AWS platform.

About the authors

Andreas Wittig and Michael Wittig are software engineers and consultants focused on AWS and web development. They migrated the first bank in Germany to AWS along with other heavily regulated businesses with legacy applications.

Manning Early Access Program (MEAP) Read chapters as they are written, get the finished eBook as soon as it’s ready, and receive the pBook long before it's in bookstores.
Amazon Web Services in Action, Second Edition (combo) added to cart
continue shopping
go to cart

MEAP combo $54.99 pBook + eBook + liveBook
Amazon Web Services in Action, Second Edition (eBook) added to cart
continue shopping
go to cart

MEAP eBook $43.99 pdf + ePub + kindle + liveBook

FREE domestic shipping on three or more pBooks

It's not just a guide, it's practical knowledge you can use right away.

Jose San Leandro

Does a great job at giving a high-level overview of some of the important AWS services that Amazon offers by running through small sample tasks.

Ryan Burrows