Errata

AWS Cookbook

Errata for AWS Cookbook

Submit your own errata for this product.

The errata list is a list of errors and their corrections that were found after the product was released.

The following errata were submitted by our customers and have not yet been approved or disproved by the author or editor. They solely represent the opinion of the customer.

Color Key: Serious technical mistake Minor technical mistake Language or formatting error Typo Question Note Update

Version Location Description Submitted by Date submitted
Step 3. Create a transit gateway attachment for VPC1:
Step 3.

This command fails:

TGW_ATTACH_1=$(aws ec2 create-transit-gateway-vpc-attachment --transit-gateway-id $TGW_ID --vpc-id $VPC_ID_1 --subnet-ids $ATTACHMENT_SUBNETS_VPC_1 --query TransitGatewayVpcAttachment.TransitGatewayAttachmentId --output text)

Error:

An error occurred (InvalidSubnetID.NotFound) when calling the CreateTransitGatewayVpcAttachment operation: The subnet ID 'subnet-foo subnet-bar' does not exist

I think it's because the subnet-ids flag should be formatted as a string list, i.e. --subnet-ids "string" "string" and not subnet-ids 'string string'.


Thomas Delnoij  Feb 03, 2023 
Networking/211-Peering-VPCs/README.md
cdk deploy step

cdk deploy step fails with this error:

```shell
$ cdk deploy
[WARNING] aws-cdk-lib.aws_ec2.VpcProps#cidr is deprecated.
Use ipAddresses instead
This API will be removed in the next major release.
[WARNING] aws-cdk-lib.aws_ec2.VpcProps#cidr is deprecated.
Use ipAddresses instead
This API will be removed in the next major release.
Traceback (most recent call last):
File "/Users/tdelnoij/projects/github.com/mvcatsifma/aws-cookbook/Networking/211-Peering-VPCs/cdk-AWS-Cookbook-211/app.py", line 8, in <module>
CdkAwsCookbook211Stack(app, "cdk-aws-cookbook-211")
File "/Users/tdelnoij/projects/github.com/mvcatsifma/aws-cookbook/Networking/211-Peering-VPCs/cdk-AWS-Cookbook-211/.venv/lib/python3.10/site-packages/jsii/_runtime.py", line 111, in __call__
inst = super().__call__(*args, **kwargs)
File "/Users/tdelnoij/projects/github.com/mvcatsifma/aws-cookbook/Networking/211-Peering-VPCs/cdk-AWS-Cookbook-211/cdk_aws_cookbook_211/cdk_aws_cookbook_211_stack.py", line 146, in __init__
vpc1_subnet_list = vpc1.select_subnets(subnet_type=ec2.SubnetType.ISOLATED)
File "/usr/local/Cellar/python@3.10/3.10.8/Frameworks/Python.framework/Versions/3.10/lib/python3.10/enum.py", line 437, in __getattr__
raise AttributeError(name) from None
AttributeError: ISOLATED

Subprocess exited with error 1
```

I had to update Networking/211-Peering-VPCs/cdk-AWS-Cookbook-211/cdk_aws_cookbook_211/cdk_aws_cookbook_211_stack.py and change ec2.SubnetType.ISOLATED to ec2.SubnetType.PRIVATE_ISOLATED for the cdk deploy step to succeed.

$ aws --version
aws-cli/2.9.3 Python/3.11.0 Darwin/22.2.0 source/x86_64 prompt/off
$ cdk version
2.63.0 (build 7f4e35e)

Thomas Delnoij  Feb 03, 2023 
Networking/211-Peering-VPCs/cdk-AWS-Cookbook-211/cdk_aws_cookbook_211/cdk_aws_cookbook_211_stack.py
line 61

The statement creates a second VPC called AWS-Cookbook-VPC2-209. This should probably be AWS-Cookbook-VPC2-211.

vpc2 = ec2.Vpc(
self,
'AWS-Cookbook-VPC2-209',
cidr='10.20.0.0/23',
max_azs=1,
subnet_configuration=[isolated_subnets]
)

Thomas Delnoij  Feb 03, 2023 
2.10 Enabling Transitive Cross-VPC Connections Using Transit Gateway
Figure 2-14

The figure depicts three VPC's. According to the text, the top one that has the IGW is VPC2. In the figure it has label VPC1 just like the VPC at the bottom left.

Thomas Delnoij  Feb 03, 2023 
3.1 Using S3 Lifecycle Policies to Reduce Storage Costs
Step 2

Got this error while applying the lifecycle rule:

```shell
$ aws s3api put-bucket-lifecycle-configuration --bucket awscookbook301-$RANDOM_STRING --lifecycle-configuration file://lifecycle-rule.json

An error occurred (MalformedXML) when calling the PutBucketLifecycleConfiguration operation: The XML you provided was not well-formed or did not validate against our published schema
```

Had to change the value of the `StorageClass` element in `./lifecycle-rule.jcon` from `INFREQUENTLY_ACCESSED` to `STANDARD_IA` for this to work.

Thomas Delnoij  Feb 13, 2023 
Printed Page 10
Step #1

The "iam update-account-password-policy" generates an error: "invalid literal for int() with base 10: 'true'"
parameter --password-reuse-prevention takes an integer, not "true"
see awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/update-account-password-policy.html

Eric Parent  Dec 03, 2022