2017-06-21 64 views
0

我想寫一個可擴展和可重用的腳本來提供ec2s使用ansible。作爲其中的一部分,我希望能夠確定哪個Route53託管區域是我的機器的一部分,因此我可以將其添加爲專用區域的記錄集。我不想進入該區域...我想用ec2來解決它。派生從目前的EC2 Route53託管區

對於給定的ec2,我可以得到該實例。從實例中,我得到了VPC-ID。我知道VPC-ID與Route53託管區域相關聯,但似乎無法找到AWS CLI命令從VPC-ID中找出託管區域。

我發現命令'route53 list-vpc-association-authorizations --hosted-zone-id ='命令,它必須在每個單獨的區域上運行,但結果是一個區域爲空的陣列我知道的一個事實是與VPC相關聯。

任何人都可以幫助我派生出正確的私人託管區域,因爲我知道VPC ID和EC2實例ID?

感謝

回答

0

我花了一段時間,但我想通了:

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 
} 

與調用:

ZONE_ID=$(getHostedZone $VPC_ID $EC2_REGION)