3 votes

Comment gérer l'association de VPC à la zone hébergée Route53 en utilisant CloudFormation ?

J'ai écrit un modèle CloudFormation qui crée un vpc, des sous-réseaux, des routes, des asg et des instances.

Je veux que CloudFormation gère l'association du vpc nouvellement créé avec une zone hébergée Route53 existante mais je ne trouve pas comment le faire dans CloudFormation.

En utilisant la cli aws, cela peut être réalisé en exécutant (dans le script de user_data) :

aws route53 associate-vpc-with-hosted-zone --hosted-zone-id AAZZZ123AA --vpc VPCRegion=us-west-2,VPCId=$vpcid

Mais je veux que CloudFormation gère ces associations de sorte que lorsque la pile est supprimée, l'association vpc le soit également.

Je n'ai pas trouvé en ligne comment le faire avec CloudFormation, alors quelqu'un sait-il si c'est possible ?

1voto

Itai Ganot Points 10219

Je n'ai pas trouvé comment associer un VPC à une zone hébergée par Route53, j'ai donc ajouté au script de user_data le code suivant :

aws route53 get-hosted-zone --id XXXAAA12345 | grep -q $vpcid
if [[ ! $? -eq 0 ]]; then
  aws route53 associate-vpc-with-hosted-zone --hosted-zone-id XXXAAA12345 --vpc VPCRegion=us-west-2,VPCId=$vpcid
else
  echo "VPC $vpcid is already associated to hosted zone company-private"
fi

La variable vpcid est héritée du modèle CloudFormation :

{ "Fn::Join": [ "=", [ "vpcid", { "Ref": "VPC" } ] ] },

Ensuite, j'ai réalisé que lorsqu'un VPC est supprimé, son association à la zone hébergée par Route53 demeure.

Afin de s'assurer que les anciennes associations sont supprimées, j'ai ajouté le code suivant au script de user_data :

defaultvpc="vpc-20AAAA4b"
vpc_array=()
for vpc in $(aws route53 get-hosted-zone --id XXXAAA12345 | grep vpc | awk '{print $2}' | tr -d '\"|,'); do
  vpc_array+=($vpc)
done
for i in ${!vpc_array[@]}; do
  if [[ ! ${vpc_array[$i]} = $vpcid && ! ${vpc_array[$i]} = $defaultvpc ]] ; then
    echo "VPC ${vpc_array[$i]} doesnt exist anymore - removing association to Route53 hosted zone"
    aws route53 disassociate-vpc-from-hosted-zone --hosted-zone-id XXXAAA12345 --vpc VPCRegion=us-west-2,VPCId=${vpc_array[$i]}
  fi
done

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X