Como gerenciar a associação de VPC à zona hospedada Route53 usando o CloudFormation?

2

Eu escrevi um modelo do CloudFormation que cria um vpc, sub-redes, rotas, asgs e instâncias.

Eu quero que o CloudFormation lide com a associação do recém-criado vpc com uma zona hospedada Route53 existente, mas não consigo encontrar como fazer isso no CloudFormation.

Usando o aws cli, isso pode ser feito executando (no script user_data):

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

Mas eu quero que o CloudFormation gerencie essas associações, então quando a pilha for excluída, a associação vpc também será excluída.

Não consegui encontrar on-line como isso pode ser feito com o CloudFormation, então alguém sabe se isso pode ser feito?

    
por Itai Ganot 24.10.2017 / 12:28

1 resposta

0

Não consegui encontrar como associar uma VPC a uma zona hospedada Route53, por isso adicionei ao script user_data o seguinte código:

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

A variável vpcid é herdada do modelo do CloudFormation:

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

Então, percebi que quando uma VPC é excluída, sua associação com a zona hospedada Route53 permanece.

Para garantir que as associações antigas sejam removidas, adicionei o seguinte código ao script 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
    
por 24.10.2017 / 13:09