Si vous créez un VPC avec Amazon VPC Management Console,
Vous pouvez choisir parmi quatre modèles (à partir d'août 2012), mais comment les utilisez-vous avec l'API pour créer le vôtre? C'est une histoire. N'est-il pas plus cool et plus reproductible avec une seule commande que de le faire avec une console moelleuse?
Pour le moment, créons le premier "VPC avec un seul sous-réseau public". Le langage est Python et la bibliothèque est boto, bien sûr. Cliquez ici pour consulter la référence VPC de boto (http://docs.pythonboto.org/en/latest/ref/vpc.html).
import boto.ec2
from boto.vpc import VPCConnection
#La région est ap-northeast-1
ec2region = boto.ec2.get_region("ap-northeast-1")
def launch_vpc():
conn = VPCConnection(region=ec2region)
#Créer un VPC
vpc = conn.create_vpc('10.0.0.0/16')
#Configurer la passerelle Internet
igw = conn.create_internet_gateway()
conn.attach_internet_gateway(igw.id, vpc.id)
#Créer un sous-réseau
subnet = conn.create_subnet(vpc.id, "10.0.0.0/24")
#Configurer le routage
#Voir ci-dessous pour les filtres
# http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeRouteTables.html
route_table = conn.get_all_route_tables(filters=(("vpc-id", vpc.id),))[0]
conn.create_route(route_table.id, "0.0.0.0/0", gateway_id=igw.id)
print "Created VPC %s" % vpc.id
Cela ressemble à ceci, mais à proprement parler, c'est un peu différent du modèle.
Dans le modèle, la table de routage principale ne peut pas sortir, et une table de routage pour sortir est créée séparément, mais dans le code ci-dessus, un port pour sortir est fourni pour la table de routage principale. Je suis. Une seule table de routage est créée. Je pense que c'est plus facile à utiliser si vous voulez que tous les serveurs sortent.
Le plus dur consistait à allouer la table de routage attribuée au VPC créé. Je pourrais le faire en définissant le filtre pour get_all_route_tables, mais je ne pouvais pas y arriver. Il existe de nombreux types de filtres dans DescribeRouteTable Reference. Lorsque vous utilisez boto, vous devez également vérifier la référence API du côté AWS.
conn.get_all_route_tables(filters=(("vpc-id", vpc.id),))[0]
Vous pouvez maintenant extraire la table de routage où l'ID du VPC correspond à vpc.id.
À propos, au début, je pensais écrire en Ruby, mais le SDK AWS pour Ruby ne prend pas en charge VPC. Après tout, si vous utilisez AWS, c'est Python!
Recommended Posts