2017-06-21 6 views
0

J'essaye d'écrire un script évolutif et réutilisable pour provisionner ec2 en utilisant ansible. Dans ce cadre, j'aimerais pouvoir déterminer quelle zone hébergée par Route53 fait partie de ma machine, donc je peux l'ajouter comme un ensemble d'enregistrements pour une zone privée. Je ne veux pas avoir à entrer dans la zone ... Je veux être capable de le comprendre en utilisant l'ec2.Dériver la zone hébergée Route53 de l'ec2 actuelle

Pour un ec2 donné, je peux obtenir l'instance. De l'instance, je reçois un ID VPC. Je sais que les ID VPC sont associés aux zones hébergées Route53, mais je n'arrive pas à trouver une commande AWS CLI pour déterminer la zone hébergée à partir de l'ID VPC.

J'ai trouvé la commande 'route53 list-vpc-association-authorizations --hosted-zone-id =', qui doit être exécutée sur chaque zone individuelle, mais le résultat est un tableau vide pour une zone que je connais pour un fait est associé à un VPC.

Quelqu'un peut-il m'aider à dériver la zone hébergée privée correcte, étant donné que je connais l'ID de VPC et l'ID de l'instance ec2?

Merci

Répondre

0

Il m'a fallu un certain temps, mais j'ai tout compris:

getHostedZone(){ 
    ZONE_IDS=$(aws route53 --region $2 list-hosted-zones | jq ".HostedZones | map(.Id)") 
    while IFS= read -r; do 
    ZONE=$(aws route53 --region $2 get-hosted-zone --id $REPLY) 
    hasVPCs=$(echo $ZONE | jq 'has("VPCs")') 
    VPCs=$(echo $ZONE | jq ".VPCs") 
    if [ "$hasVPCs" == true ] 
    then 
     VPC=$(echo $VPCs | jq ".[] | select(.VPCId == \"$1\")") 
     if [ -n "$VPC" ] 
     then 
     HOSTED_ZONE=$(echo $REPLY | sed 's/^\/hostedzone\///g') 
     fi 
    fi 
    done < <(echo $ZONE_IDS | jq -r '.[]') 

    echo $HOSTED_ZONE 
} 

Appelé avec:

ZONE_ID=$(getHostedZone $VPC_ID $EC2_REGION)