派生从目前的EC2 Route53托管区

问题描述:

我想写一个可扩展和可重用的脚本来提供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?

感谢

我花了一段时间,但我想通了:

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)