Instances are not launched into a VPC directly; they are launched into a subnet. A subnet is a slice of the VPC's block that lives in one zone.
The market gets four, a public and a private one in each of two zones, so that losing a zone loses half of each tier and not all of it:
The names say what each subnet is for. Nothing is public or private yet: that comes from route tables in the next two lessons.
Creating one
aws ec2 create-subnet --vpc-id $VPC --cidr-block 10.0.1.0/24 --availability-zone us-east-1a --tag-specifications 'ResourceType=subnet,Tags=[{Key=Name,Value=public-a}]'The same command with another block, zone and name makes each of the others. A block outside the VPC's block fails with InvalidSubnet.Range; one that overlaps another subnet fails with InvalidSubnet.Conflict.
Listing them
aws ec2 describe-subnets --filters Name=vpc-id,Values=$VPC --query "Subnets[].[Tags[0].Value,AvailabilityZone,CidrBlock]" --output tableName=vpc-id keeps the subnets of one VPC. Tags[0].Value is the first tag's value, which here is the Name.