[PYTHON] Créez votre propre VPC avec un seul sous-réseau public uniquement avec boto

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

Créez votre propre VPC avec un seul sous-réseau public uniquement avec boto
Essayez de créer votre propre AWS-SDK avec bash
Un mémorandum pour faire WebDAV uniquement avec nginx
Créez rapidement votre propre module avec setuptools (python)
Créez votre propre lecteur de musique avec Bottle0.13 + jPlayer2.5!
Faites une loterie avec Python
Faire un feu avec kdeplot
Si vous créez 1 milliard de clés privées, vous pouvez créer une clé publique comprenant votre nom avec une probabilité élevée.
Transformez plusieurs données numériques d'élévation en une seule image avec Python
Comment créer votre propre site de domaine avec heroku (plan gratuit)
[Python] Créez votre propre bot LINE
Créez votre propre manuel. [Linux] [homme]
Faisons une interface graphique avec python.
Faites un son avec le notebook Jupyter
Résolvez votre propre labyrinthe avec Q Learning
Faisons une rupture de bloc avec wxPython
Créer un système de recommandation avec python
Créer un filtre avec un modèle django
Faisons un graphe avec python! !!
Faisons un spacon avec xCAT
Créer un itérateur de modèle avec PySide
Entraînez UGATIT avec votre propre jeu de données
Faire un joli graphique avec plotly
Résolvez votre propre labyrinthe avec DQN
Créons un modèle de reconnaissance d'image avec vos propres données et jouons!
[Streamlit] Je déteste JavaScript, donc je crée une application Web uniquement avec Python