Comment ajouter des routes à la table de routage principale dans mon cloud VPC avec AWS CloudFormation ?

Date de la dernière mise à jour : 08/05/2019

Je souhaite utiliser AWS CloudFormation pour ajouter des routes à la table de routage principale créée par défaut lors de la création de mon Cloud Amazon VPC (Amazon Virtual Private Cloud) en utilisant AWS CloudFormation.

Brève description

AWS CloudFormation ne peut pas reconnaître la table de routage principale créée par défaut lorsque vous créez un cloud VPC en utilisant AWS CloudFormation. Cela signifie que les informations relatives à la table de routage ne peuvent pas être transmises entre votre cloud VPC et AWS CloudFormation. Par conséquent, vous ne pouvez pas ajouter ou supprimer des routes dans la table de routage principale, car vous ne pouvez pas référencer cette dernière depuis votre modèle AWS CloudFormation.

Solution

Pour résoudre ce problème, vous pouvez utiliser une ressource personnalisée basée sur AWS Lambda dans un modèle AWS CloudFormation. Le modèle utilise une fonction Lambda pour récupérer l'ID de table de routage principale associé à votre cloud VPC.

1.    Téléchargez les fichiers RouteTable.template et Routetable.py depuis le référentiel AWS GitHub.

2.    Créez le fichier zip Routetable.zip pour la fonction Lambda. Reportez-vous à l'exemple suivant :

-> Routetable.zip
        |
        |-> Routetable.py

Important : veillez à placer le fichier Routetable.py au niveau de la racine du fichier zip.

3.    En utilisant la console Amazon S3, chargez le fichier zip vers un compartiment Amazon Simple Storage Service (Amazon S3) qui se trouve dans la même région AWS que la pile AWS CloudFormation. Pour charger le fichier zip en utilisant l'interface de ligne de commande AWS (CLI AWS), exécutez la commande suivante depuis le dossier Routetable.zip :

aws s3 cp ./Routetable.zip s3://awsexamplebucket1/Routetable.zip

4.    Pour lancer la pile avec le fichier RouteTable.template, utilisez la console AWS CloudFormation ou l'interface CLI AWS :

aws cloudformation create-stack --stack-name myvpcstack --template-body file://RouteTable.template --parameters ParameterKey=Bucket,ParameterValue=awsexamplebucket1 ParameterKey=Key,ParameterValue=Routetable.zip ParameterKey=Lambdahandler,ParameterValue=Routetable --capabilities CAPABILITY_NAMED_IAM --region us-east-1

Important : lorsque vous créez ou mettez à jour la pile AWS CloudFormation, vous devez transmettre comme paramètres le nom du compartiment Amazon S3 (awsexamplebucket1) où vous avez chargé le fichier zip, le nom du fichier zip (Routetable.zip) et le nom du fichier où vous avez créé la fonction Lambda (Routetable).

La pile crée un cloud VPC, puis utilise une ressource personnalisée basée sur Lambda pour extraire l'ID de la table de routage principale du VPC. L'ID est utilisé dans AWS::EC2::Route pour ajouter une route publique à la table de routage principale. Ensuite, les sorties de la pile affichent l'ID de la table de routage.


Cette page vous a-t-elle été utile ?

Cette page peut-elle être améliorée ?


Vous avez besoin d'aide ?