派生从目前的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)