Errata: April 5, 2019

Thank you for purchasing Amazon Web Services in Action, Second Edition. Please post any errors, other than those listed below, in the book's Author Online Forum. We'll update this list as necessary. Thank you!


Section all: Terminal commands on Windows

All terminal commands are optimized for Bash (Linux and MacOS). If you are using Windows, you have to make the following adjustments:

The leading $ can be ignored.

In PowerShell: Replace line breaks \ with a `

In Command Prompt: Replace line breaks \ with a ^

Printed book page 0 - 2019-03-21

Section 1.2.2: Figure 1.4

Private subnet 10.10.0.0/24

should be

Public subnet 10.10.0.0/24

Printed book page 7 - 2018-10-10

Section 1.2.4: Linux instances are billed per second

AWS bills virtual machines per minute.

should be

AWS bills Linux virtual machines per second with a minimum of 60 seconds and Windows virtual machines per hour.

Printed book page 9 - 2019-03-21

Section 1.4.2: Linux instances are billed per second

Based on minutes or hours of usage — A virtual machine is billed per minute. A load balancer is billed per hour.

should be

Based on time of use — A Linux virtual machine is billed per second. A load balancer is billed per hour.

Printed book page 13 - 2019-03-21

Section 1.4.2: Figure 1.8

AWS bills services on minutes or hours of usage, by traffic, or by used storage

should be

AWS bills services on time of use, by traffic, or by used storage

Printed book page 14 - 2019-03-21

Section 2.2.1: Resource Groups are now classic / legacy

The Resource Groups used in the book are now called classic or legacy Resource Groups. See the differences.

Printed book page 44 - 2018-10-16

Section 2.2.X: Resource groups

AWS has changed the way resource groups work and AWS has also updated the UI.

Click on Create a Resource Group as shown in figure 2.9.

is now

Click on Create a group as shown in figure 2.9.

To create a resource group, follow tis steps:

  1. Check if Group type is set to Tag based.
  2. Check if Resource types is set to All supported resource types.
  3. Add a tag system with the value wordpress.
  4. Set the Group name to wordpress or whatever you like.
  5. Click Create group to save.

To navigate to the resources:

Printed book page 44 - 2019-03-21

Section 3.4: Private IP address does not change on instance resize

The public and private IP addresses have also changed. Grab the new public DNS to reconnect via SSH; you’ll find it in the VM’s Details view.

should be

The publicIP address also changed. Grab the new public DNS name to reconnect via SSH; you’ll find it in the VM’s Details view.

Printed book page 81 - 2018-10-10

Section 3.7: Download placeholder websites

The bash code to download placeholder websites is broken.

$ sudo -s
$ mkdir /var/www/html/a
$ wget -P /var/www/html/a https://raw.githubusercontent.com/AWSinAction/\
 code2/master/chapter03/a/index.html
$ mkdir /var/www/html/b
$ wget -P /var/www/html/b https://raw.githubusercontent.com/AWSinAction/\
 code2/master/chapter03/b/index.html

should be (lines after \ should not start with a space)

$ sudo -s
$ mkdir /var/www/html/a
$ wget -P /var/www/html/a https://raw.githubusercontent.com/AWSinAction/\
code2/master/chapter03/a/index.html
$ mkdir /var/www/html/b
$ wget -P /var/www/html/b https://raw.githubusercontent.com/AWSinAction/\
code2/master/chapter03/b/index.html
Printed book page 91 - 2019-03-21

Section 7.3.1: CloudWatch Events from CloudTrail

CloudTrail emits an event for every call to the AWS API.

should be

CloudTrail emits an event for every call to the AWS API if CloudTrail is enabled in the AWS account and region.

Printed book page 219 - 2019-03-21

Section 7.3.5: CloudWatch Events from CloudTrail example

If your AWS account has CloudTrail enabled (not the default), you have to use a different aws cloudformation deploy command:

$ aws cloudformation deploy --stack-name ec2-owner-tag --template-file output.yaml --parameter-overrides CreateCloudTrail=false --capabilities CAPABILITY_IAM

If your AWS account has CloudTrail not enabled (the default), you have to execute an additional command to clean up:

$ aws s3 rb s3://ec2-owner-tag-$accountId --force
Printed book page 226 - 2019-03-21

Section 7.4.5: Figure 7.24

The caption of figure 7.24

Processing access logs from a load balancer with AWS Lambda

should be

Processing events from an IoT device with AWS Lambda

Printed book page 231 - 2019-03-21

Section 8.7.2: S3 object prefixes no longer need to be randomized

Since July 2018, S3 increased performance to support at least 3,500 write requests per second and 5,500 read requests per second per “prefix” (previously 100 requests per second).

Printed book page 256 - 2018-10-16

Section 9.1.3: Table 9.2

AWS announced new max performance numbers:

Volume type MiB/s IOPS
General Purpose SSD (gp2) 250 3 per GiB (up to 16,000 IOPS)
Provisioned IOPS SSD (io1) 1,000 As much as you provision (up to 50 IOPS per GiB or 64,000 IOPS)
Printed book page 264 - 2019-03-21

Section 9.1.3: Table 9.1

Instance type Max bandwidth (MiB/s) Max IOPS EBS optimized by default?
m5.large–m5.24xlarge 417–1669 18,750–80,000 Yes
c5.large–c5.18xlarge 417–1669 20,000–80,000 Yes
Printed book page 264 - 2019-03-21

Section 12.5.1: Single-threaded Redis can be monitored using EngineCPUUtilization metric

Since April 2018, ElastiCache for Redis provides an additional metric (EngineCPUUtilization) which provides access to the Redis process CPU utilization. EngineCPUUtilization is better suited to monitor CPU saturation because Redis is single threaded. CPUUtilization shows the utilization across all cores.

Printed book page 344 - 2018-10-16