Créez un VPC avec des sous-réseaux privés et des passerelles NAT à l'aide de AWS CLI - Amazon Virtual Private Cloud

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Créez un VPC avec des sous-réseaux privés et des passerelles NAT à l'aide de AWS CLI

Ce didacticiel explique comment créer un VPC que vous pouvez utiliser pour les serveurs d'un environnement de production à l'aide du. AWS CLI Pour améliorer la résilience, vous allez déployer des serveurs dans deux zones de disponibilité, à l'aide d'un groupe Auto Scaling et d'un Application Load Balancer. Pour plus de sécurité, vous allez déployer les serveurs dans des sous-réseaux privés. Les serveurs recevront des demandes via l'équilibreur de charge et pourront se connecter à Internet à l'aide de passerelles NAT. Pour améliorer la résilience, vous allez déployer une passerelle NAT dans chaque zone de disponibilité.

Le schéma suivant donne un aperçu des ressources incluses dans ce didacticiel. Le VPC contient des sous-réseaux privés et des sous-réseaux publics dans deux zones de disponibilité. Chaque sous-réseau public contient une passerelle NAT et un nœud d'équilibreur de charge. Les serveurs s'exécutent dans les sous-réseaux privés, sont lancés et arrêtés à l'aide d'un groupe Auto Scaling et reçoivent du trafic depuis l'équilibreur de charge. Les serveurs peuvent se connecter à Internet via la passerelle NAT. Les serveurs peuvent se connecter à Amazon S3 via un point de terminaison d'un VPC de passerelle.

Un VPC avec des sous-réseaux dans deux zones de disponibilité.

Prérequis

Avant de commencer ce didacticiel, vous devez :

  • Ils AWS CLI sont installés et configurés avec les autorisations nécessaires pour créer des ressources VPC, des EC2 instances, des équilibreurs de charge et des groupes Auto Scaling. Pour plus d'informations sur l'installation du AWS CLI, voir Installation ou mise à jour de la dernière version du AWS CLI.

  • Connaissance de base des concepts VPC, notamment des sous-réseaux, des tables de routage et des passerelles Internet.

  • Le processeur JSON jq de ligne de commande est installé. Ceci est utilisé pour analyser la sortie des AWS CLI commandes. Pour plus d'informations sur l'installation de jq, consultez la section Télécharger jq.

  • Des quotas de service suffisants pour les ressources que vous allez créer, notamment :

  • Au moins 2 adresses IP élastiques disponibles

  • Au moins 2 passerelles NAT

  • Au moins 1 VPC

  • Au moins 4 sous-réseaux

  • Au moins 1 Application Load Balancer

Coût estimé : Les ressources créées dans ce didacticiel seront facturées sur votre AWS compte : NAT Gateways : environ 0,045$ par heure, plus les frais de traitement des données Adresses IP élastiques : gratuites lorsqu'elles sont associées à des instances en cours d'exécution, environ 0,005$ par heure lorsqu'elles ne sont pas associées EC2  : varie selon le type d'instance (t3.micro utilisé dans ce didacticiel) Application Load Balancer : environ 0,0225 dollars par heure, plus les frais de traitement des données

Création du VPC et des sous-réseaux

Tout d'abord, vous allez créer un VPC avec un bloc CIDR de 10.0.0.0/16, qui fournit jusqu'à 65 536 adresses IP privées.

# Create a VPC with CIDR block 10.0.0.0/16 aws ec2 create-vpc --cidr-block 10.0.0.0/16 --tag-specifications 'ResourceType=vpc,Tags=[{Key=Name,Value=ProductionVPC}]'

La commande renvoie un résultat semblable à ce qui suit :

{ "Vpc": { "CidrBlock": "10.0.0.0/16", "DhcpOptionsId": "dopt-abcd1234", "State": "pending", "VpcId": "vpc-abcd1234", "OwnerId": "123456789012", "InstanceTenancy": "default", "Ipv6CidrBlockAssociationSet": [], "CidrBlockAssociationSet": [ { "AssociationId": "vpc-cidr-assoc-abcd1234", "CidrBlock": "10.0.0.0/16", "CidrBlockState": { "State": "associated" } } ], "IsDefault": false, "Tags": [ { "Key": "Name", "Value": "ProductionVPC" } ] } }

Notez l'ID VPC indiqué dans la sortie (par exemple,vpc-abcd1234). Vous utiliserez cet identifiant dans les commandes suivantes.

Vous allez ensuite identifier deux zones de disponibilité dans votre région afin de créer une architecture résiliente.

# Get available Availability Zones aws ec2 describe-availability-zones --query 'AvailabilityZones[0:2].ZoneName' --output text

La commande renvoie un résultat semblable à ce qui suit :

us-east-1a us-east-1b

Créez à présent quatre sous-réseaux : deux sous-réseaux publics pour l'équilibreur de charge et les passerelles NAT, et deux sous-réseaux privés pour vos serveurs d'applications. vpc-abcd1234Remplacez-le par votre identifiant VPC actuel us-east-1a et us-east-1b par vos zones de disponibilité réelles.

# Create public subnet in first AZ aws ec2 create-subnet \ --vpc-id vpc-abcd1234 \ --cidr-block 10.0.0.0/24 \ --availability-zone us-east-1a \ --tag-specifications 'ResourceType=subnet,Tags=[{Key=Name,Value=PublicSubnet1}]' # Create private subnet in first AZ aws ec2 create-subnet \ --vpc-id vpc-abcd1234 \ --cidr-block 10.0.1.0/24 \ --availability-zone us-east-1a \ --tag-specifications 'ResourceType=subnet,Tags=[{Key=Name,Value=PrivateSubnet1}]' # Create public subnet in second AZ aws ec2 create-subnet \ --vpc-id vpc-abcd1234 \ --cidr-block 10.0.2.0/24 \ --availability-zone us-east-1b \ --tag-specifications 'ResourceType=subnet,Tags=[{Key=Name,Value=PublicSubnet2}]' # Create private subnet in second AZ aws ec2 create-subnet \ --vpc-id vpc-abcd1234 \ --cidr-block 10.0.3.0/24 \ --availability-zone us-east-1b \ --tag-specifications 'ResourceType=subnet,Tags=[{Key=Name,Value=PrivateSubnet2}]'

Chaque commande renvoie une sortie contenant l'ID du sous-réseau. Remarquez-les IDs pour les utiliser dans les commandes suivantes :

  • Sous-réseau public 1 : subnet-abcd1234

  • Sous-réseau privé 1 : subnet-abcd5678

  • Sous-réseau public 2 : subnet-efgh1234

  • Sous-réseau privé 2 : subnet-efgh5678

Création et configuration de la connectivité Internet

Dans cette section, vous allez créer une passerelle Internet pour permettre la communication entre votre VPC et Internet, et l'associer à votre VPC.

# Create an Internet Gateway aws ec2 create-internet-gateway --tag-specifications 'ResourceType=internet-gateway,Tags=[{Key=Name,Value=ProductionIGW}]'

La commande renvoie une sortie contenant l'ID Internet Gateway. Notez cet identifiant (par exemple,igw-abcd1234).

Connectez l'Internet Gateway à votre VPC. igw-abcd1234Remplacez-le par votre identifiant Internet Gateway actuel et vpc-abcd1234 par votre identifiant VPC actuel.

# Attach the Internet Gateway to the VPC aws ec2 attach-internet-gateway --internet-gateway-id igw-abcd1234 --vpc-id vpc-abcd1234

Créez ensuite des tables de routage pour vos sous-réseaux publics et privés. vpc-abcd1234Remplacez-le par votre identifiant VPC actuel.

# Create a route table for public subnets aws ec2 create-route-table --vpc-id vpc-abcd1234 --tag-specifications 'ResourceType=route-table,Tags=[{Key=Name,Value=PublicRouteTable}]' # Create route table for private subnet in first AZ aws ec2 create-route-table --vpc-id vpc-abcd1234 --tag-specifications 'ResourceType=route-table,Tags=[{Key=Name,Value=PrivateRouteTable1}]' # Create route table for private subnet in second AZ aws ec2 create-route-table --vpc-id vpc-abcd1234 --tag-specifications 'ResourceType=route-table,Tags=[{Key=Name,Value=PrivateRouteTable2}]'

Chaque commande renvoie une sortie contenant l'ID de la table de routage. Notez les points suivants IDs :

  • Tableau de routage public : rtb-abcd1234

  • Tableau des itinéraires privés 1 : rtb-efgh1234

  • Tableau des itinéraires privés 2 : rtb-ijkl1234

Ajoutez un itinéraire vers Internet Gateway dans la table de routage publique pour permettre l'accès à Internet. rtb-abcd1234Remplacez-le par l'identifiant de votre table de routage publique et igw-abcd1234 par votre identifiant Internet Gateway actuel.

# Add a route to the Internet Gateway aws ec2 create-route --route-table-id rtb-abcd1234 --destination-cidr-block 0.0.0.0/0 --gateway-id igw-abcd1234

Associez les sous-réseaux à leurs tables de routage respectives. Remplacez la table de routage IDs et le sous-réseau IDs par les vôtres. IDs

# Associate public subnets with the public route table aws ec2 associate-route-table --route-table-id rtb-abcd1234 --subnet-id subnet-abcd1234 aws ec2 associate-route-table --route-table-id rtb-abcd1234 --subnet-id subnet-efgh1234 # Associate private subnets with their respective route tables aws ec2 associate-route-table --route-table-id rtb-efgh1234 --subnet-id subnet-abcd5678 aws ec2 associate-route-table --route-table-id rtb-ijkl1234 --subnet-id subnet-efgh5678

Création de passerelles NAT

Les passerelles NAT permettent aux instances situées dans des sous-réseaux privés de se connecter à Internet ou à d'autres AWS services, mais empêchent Internet d'établir des connexions avec ces instances. Tout d'abord, allouez des adresses IP élastiques à vos passerelles NAT.

# Allocate Elastic IP for NAT Gateway in first AZ aws ec2 allocate-address --domain vpc --tag-specifications 'ResourceType=elastic-ip,Tags=[{Key=Name,Value=NAT1-EIP}]' # Allocate Elastic IP for NAT Gateway in second AZ aws ec2 allocate-address --domain vpc --tag-specifications 'ResourceType=elastic-ip,Tags=[{Key=Name,Value=NAT2-EIP}]'

Chaque commande renvoie une sortie contenant l'ID d'allocation. Notez les points suivants IDs :

  • Numéro d'allocation EIP 1 : eipalloc-abcd1234

  • Numéro d'allocation EIP 2 : eipalloc-efgh1234

Créez des passerelles NAT dans chaque sous-réseau public. Remplacez le sous-réseau IDs et l'allocation IDs par les vôtres. IDs

# Create NAT Gateway in public subnet of first AZ aws ec2 create-nat-gateway \ --subnet-id subnet-abcd1234 \ --allocation-id eipalloc-abcd1234 \ --tag-specifications 'ResourceType=natgateway,Tags=[{Key=Name,Value=NAT-Gateway1}]' # Create NAT Gateway in public subnet of second AZ aws ec2 create-nat-gateway \ --subnet-id subnet-efgh1234 \ --allocation-id eipalloc-efgh1234 \ --tag-specifications 'ResourceType=natgateway,Tags=[{Key=Name,Value=NAT-Gateway2}]'

Chaque commande renvoie une sortie contenant l'ID de passerelle NAT. Notez les points suivants IDs :

  • Passerelle NAT 1 : nat-abcd1234

  • Passerelle NAT 2 : nat-efgh1234

Le provisionnement des passerelles NAT prend quelques minutes. Attendez qu'ils soient disponibles avant de continuer. Remplacez la passerelle NAT IDs par votre passerelle actuelle IDs.

# Wait for NAT Gateways to be available aws ec2 wait nat-gateway-available --nat-gateway-ids nat-abcd1234 aws ec2 wait nat-gateway-available --nat-gateway-ids nat-efgh1234

Ajoutez des routes aux passerelles NAT dans les tables de routage privées pour permettre l'accès à Internet pour les instances situées dans des sous-réseaux privés. Remplacez la table de routage IDs et la passerelle NAT IDs par les vôtres IDs.

# Add route to NAT Gateway 1 in private route table 1 aws ec2 create-route \ --route-table-id rtb-efgh1234 \ --destination-cidr-block 0.0.0.0/0 \ --nat-gateway-id nat-abcd1234 # Add route to NAT Gateway 2 in private route table 2 aws ec2 create-route \ --route-table-id rtb-ijkl1234 \ --destination-cidr-block 0.0.0.0/0 \ --nat-gateway-id nat-efgh1234

Création d'un point de terminaison VPC pour Amazon S3

Un point de terminaison VPC pour Amazon S3 permet aux instances de vos sous-réseaux privés d'accéder à S3 sans passer par la passerelle NAT, ce qui réduit les coûts de transfert de données et améliore les performances du réseau. vpc-abcd1234Remplacez-le par votre identifiant VPC actuel et la table de routage IDs par votre identifiant réel. IDs

# Get the prefix list ID for S3 in your region S3_PREFIX_LIST_ID=$(aws ec2 describe-prefix-lists --filters "Name=prefix-list-name,Values=com.amazonaws.$(aws configure get region).s3" --query 'PrefixLists[0].PrefixListId' --output text) # Create the VPC endpoint for S3 aws ec2 create-vpc-endpoint \ --vpc-id vpc-abcd1234 \ --service-name com.amazonaws.$(aws configure get region).s3 \ --route-table-ids rtb-efgh1234 rtb-ijkl1234 \ --tag-specifications 'ResourceType=vpc-endpoint,Tags=[{Key=Name,Value=S3-Endpoint}]'

La commande renvoie une sortie contenant l'ID du point de terminaison du VPC. Notez cet identifiant (par exemple,vpce-abcd1234).

Configurer des groupes de sécurité

Les groupes de sécurité agissent comme des pare-feux virtuels permettant à vos instances de contrôler le trafic entrant et sortant. Créez un groupe de sécurité pour l'équilibreur de charge qui autorise le trafic HTTP entrant depuis n'importe où. vpc-abcd1234Remplacez-le par votre identifiant VPC actuel.

# Create security group for the load balancer aws ec2 create-security-group \ --group-name LoadBalancerSG \ --description "Security group for the load balancer" \ --vpc-id vpc-abcd1234 \ --tag-specifications 'ResourceType=security-group,Tags=[{Key=Name,Value=LoadBalancerSG}]'

La commande renvoie une sortie contenant l'ID du groupe de sécurité. Notez cet identifiant (par exemple,sg-abcd1234).

Autorisez le trafic HTTP entrant vers l'équilibreur de charge. sg-abcd1234Remplacez-le par l'identifiant réel du groupe de sécurité de votre équilibreur de charge.

# Allow inbound HTTP traffic from anywhere aws ec2 authorize-security-group-ingress \ --group-id sg-abcd1234 \ --protocol tcp \ --port 80 \ --cidr 0.0.0.0/0

Créez un groupe de sécurité pour les serveurs d'applications qui autorise le trafic entrant uniquement depuis l'équilibreur de charge. vpc-abcd1234Remplacez-le par votre identifiant VPC actuel.

# Create security group for the application servers aws ec2 create-security-group \ --group-name AppServerSG \ --description "Security group for the application servers" \ --vpc-id vpc-abcd1234 \ --tag-specifications 'ResourceType=security-group,Tags=[{Key=Name,Value=AppServerSG}]'

La commande renvoie une sortie contenant l'ID du groupe de sécurité. Notez cet identifiant (par exemple,sg-efgh1234).

Autorisez le trafic HTTP entrant du groupe de sécurité de l'équilibreur de charge vers les serveurs d'applications. sg-efgh1234Remplacez-le par l'ID réel du groupe de sécurité de votre serveur d'applications et sg-abcd1234 par l'ID du groupe de sécurité de votre équilibreur de charge réel.

# Allow inbound HTTP traffic from the load balancer security group aws ec2 authorize-security-group-ingress \ --group-id sg-efgh1234 \ --protocol tcp \ --port 80 \ --source-group sg-abcd1234

Création d'un modèle de lancement pour les EC2 instances

Un modèle de lancement contient les informations de configuration nécessaires au lancement d'une instance, telles que l'ID de l'AMI, le type d'instance et les groupes de sécurité. Créez d'abord un script de données utilisateur qui sera exécuté au lancement de l'instance.

cat > user-data.sh << 'EOF' #!/bin/bash yum update -y yum install -y httpd systemctl start httpd systemctl enable httpd echo "<h1>Hello from $(hostname -f) in $(curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone)</h1>" > /var/www/html/index.html EOF

Encodez le script de données utilisateur en base64.

USER_DATA=$(base64 -w 0 user-data.sh)

Obtenez l'identifiant AMI Amazon Linux 2 le plus récent.

# Get the latest Amazon Linux 2 AMI ID aws ec2 describe-images --owners amazon --filters "Name=name,Values=amzn2-ami-hvm-*-x86_64-gp2" "Name=state,Values=available" --query 'sort_by(Images, &CreationDate)[-1].ImageId' --output text

Créez un modèle de lancement avec l'ID de l'AMI, le type d'instance, le groupe de sécurité et les données utilisateur. sg-efgh1234Remplacez-le par l'ID réel du groupe de sécurité de votre serveur d'applications $AMI_ID et $USER_DATA par les valeurs obtenues à l'aide des commandes précédentes.

# Create a launch template aws ec2 create-launch-template \ --launch-template-name AppServerTemplate \ --version-description "Initial version" \ --tag-specifications 'ResourceType=launch-template,Tags=[{Key=Name,Value=AppServerTemplate}]' \ --launch-template-data '{ "NetworkInterfaces": [{ "DeviceIndex": 0, "Groups": ["sg-efgh1234"], "DeleteOnTermination": true }], "ImageId": "ami-abcd1234", "InstanceType": "t3.micro", "UserData": "IyEvYmluL2Jhc2gKeXVtIHVwZGF0ZSAteQp5dW0gaW5zdGFsbCAteSBodHRwZApzeXN0ZW1jdGwgc3RhcnQgaHR0cGQKc3lzdGVtY3RsIGVuYWJsZSBodHRwZAplY2hvICI8aDE+SGVsbG8gZnJvbSAkKGhvc3RuYW1lIC1mKSBpbiAkKGN1cmwgLXMgaHR0cDovLzE2OS4yNTQuMTY5LjI1NC9sYXRlc3QvbWV0YS1kYXRhL3BsYWNlbWVudC9hdmFpbGFiaWxpdHktem9uZSk8L2gxPiIgPiAvdmFyL3d3dy9odG1sL2luZGV4Lmh0bWw=", "TagSpecifications": [{ "ResourceType": "instance", "Tags": [{ "Key": "Name", "Value": "AppServer" }] }] }'

Création d'un équilibreur de charge et d'un groupe cible

Un groupe cible achemine les demandes vers des cibles enregistrées, telles que EC2 des instances, en utilisant le protocole et le port que vous spécifiez. Créez un groupe cible pour vos serveurs d'applications. vpc-abcd1234Remplacez-le par votre identifiant VPC actuel.

# Create a target group aws elbv2 create-target-group \ --name AppTargetGroup \ --protocol HTTP \ --port 80 \ --vpc-id vpc-abcd1234 \ --target-type instance \ --health-check-protocol HTTP \ --health-check-path / \ --health-check-port traffic-port

La commande renvoie une sortie contenant l'ARN du groupe cible. Notez cet ARN (par exemple,arn:aws:elasticloadbalancing:us-east-1:123456789012:targetgroup/AppTargetGroup/abcd1234).

Créez un Application Load Balancer dans les sous-réseaux publics. Remplacez l'ID du sous-réseau IDs et du groupe de sécurité par votre identifiant actuel IDs.

# Create a load balancer aws elbv2 create-load-balancer \ --name AppLoadBalancer \ --subnets subnet-abcd1234 subnet-efgh1234 \ --security-groups sg-abcd1234 \ --tags Key=Name,Value=AppLoadBalancer

La commande renvoie une sortie contenant l'ARN de l'équilibreur de charge. Notez cet ARN (par exemple,arn:aws:elasticloadbalancing:us-east-1:123456789012:loadbalancer/app/AppLoadBalancer/abcd1234).

Attendez que l'équilibreur de charge soit actif avant de continuer. arn:aws:elasticloadbalancing:us-east-1:123456789012:loadbalancer/app/AppLoadBalancer/abcd1234Remplacez-le par l'ARN de votre équilibreur de charge actuel.

# Wait for load balancer to be active aws elbv2 wait load-balancer-available \ --load-balancer-arns arn:aws:elasticloadbalancing:us-east-1:123456789012:loadbalancer/app/AppLoadBalancer/abcd1234

Créez un écouteur pour l'équilibreur de charge qui transmet le trafic HTTP au groupe cible. Remplacez l'ARN de l'équilibreur de charge et l'ARN du groupe cible par votre ARN réel ARNs.

# Create a listener aws elbv2 create-listener \ --load-balancer-arn arn:aws:elasticloadbalancing:us-east-1:123456789012:loadbalancer/app/AppLoadBalancer/abcd1234 \ --protocol HTTP \ --port 80 \ --default-actions Type=forward,TargetGroupArn=arn:aws:elasticloadbalancing:us-east-1:123456789012:targetgroup/AppTargetGroup/abcd1234

Créer un groupe Auto Scaling

Un groupe Auto Scaling contient un ensemble d' EC2 instances traitées comme un regroupement logique à des fins de dimensionnement et de gestion automatiques. Créez un groupe Auto Scaling qui utilise le modèle de lancement et place les instances dans les sous-réseaux privés. Remplacez l'ARN du sous-réseau IDs et du groupe cible par votre ARN actuel IDs .

# Create an Auto Scaling group aws autoscaling create-auto-scaling-group \ --auto-scaling-group-name AppAutoScalingGroup \ --launch-template LaunchTemplateName=AppServerTemplate,Version='$Latest' \ --min-size 2 \ --max-size 4 \ --desired-capacity 2 \ --vpc-zone-identifier "subnet-abcd5678,subnet-efgh5678" \ --target-group-arns arn:aws:elasticloadbalancing:us-east-1:123456789012:targetgroup/AppTargetGroup/abcd1234 \ --health-check-type ELB \ --health-check-grace-period 300 \ --tags Key=Name,Value=AppServer,PropagateAtLaunch=true

Tester votre configuration

Une fois que le groupe Auto Scaling a lancé des instances et qu'elles ont passé avec succès les tests de santé, vous pouvez tester votre équilibreur de charge. Obtenez le nom DNS de l'équilibreur de charge. Remplacez l'ARN de l'équilibreur de charge par votre ARN réel.

# Get the DNS name of the load balancer aws elbv2 describe-load-balancers \ --load-balancer-arns arn:aws:elasticloadbalancing:us-east-1:123456789012:loadbalancer/app/AppLoadBalancer/abcd1234 \ --query 'LoadBalancers[0].DNSName' \ --output text)

Utilisez curl pour tester l'application portant le nom de l'équilibreur de charge.

curl http://LoadBalancerName

Si vous actualisez la page plusieurs fois, vous devriez voir des réponses provenant de différentes instances dans différentes zones de disponibilité.

Nettoyage des ressources

Lorsque vous aurez terminé ce didacticiel, vous devez supprimer toutes les ressources pour éviter d'encourir des frais. Remplacez le tout IDs par votre ressource réelle IDs.

# Delete the Auto Scaling group aws autoscaling delete-auto-scaling-group \ --auto-scaling-group-name AppAutoScalingGroup \ --force-delete # Wait for the Auto Scaling group to be deleted sleep 60 # Delete the load balancer aws elbv2 delete-load-balancer \ --load-balancer-arn arn:aws:elasticloadbalancing:us-east-1:123456789012:loadbalancer/app/AppLoadBalancer/abcd1234 # Wait for the load balancer to be deleted sleep 30 # Delete the target group aws elbv2 delete-target-group \ --target-group-arn arn:aws:elasticloadbalancing:us-east-1:123456789012:targetgroup/AppTargetGroup/abcd1234 # Delete the launch template aws ec2 delete-launch-template \ --launch-template-name AppServerTemplate # Delete the NAT Gateways aws ec2 delete-nat-gateway --nat-gateway-id nat-abcd1234 aws ec2 delete-nat-gateway --nat-gateway-id nat-efgh1234 # Wait for the NAT Gateways to be deleted sleep 90 # Release the Elastic IPs aws ec2 release-address --allocation-id eipalloc-abcd1234 aws ec2 release-address --allocation-id eipalloc-efgh1234 # Delete the VPC endpoint aws ec2 delete-vpc-endpoints --vpc-endpoint-ids vpce-abcd1234 # Wait for security group dependencies to clear sleep 30 # Delete the security groups aws ec2 delete-security-group --group-id sg-efgh1234 aws ec2 delete-security-group --group-id sg-abcd1234 # Detach the Internet Gateway aws ec2 detach-internet-gateway --internet-gateway-id igw-abcd1234 --vpc-id vpc-abcd1234 # Delete the Internet Gateway aws ec2 delete-internet-gateway --internet-gateway-id igw-abcd1234 # Delete the route tables aws ec2 delete-route-table --route-table-id rtb-efgh1234 aws ec2 delete-route-table --route-table-id rtb-ijkl1234 aws ec2 delete-route-table --route-table-id rtb-abcd1234 # Delete the subnets aws ec2 delete-subnet --subnet-id subnet-abcd1234 aws ec2 delete-subnet --subnet-id subnet-efgh1234 aws ec2 delete-subnet --subnet-id subnet-abcd5678 aws ec2 delete-subnet --subnet-id subnet-efgh5678 # Delete the VPC aws ec2 delete-vpc --vpc-id vpc-abcd1234

Étapes suivantes

Maintenant que vous avez créé un VPC avec des sous-réseaux privés et des passerelles NAT, vous souhaiterez peut-être explorer les sujets connexes suivants :