我正在尝试编写一个可扩展且可重用的脚本来使用 ansible 配置 ec2s。作为其中的一部分,我希望能够确定我的计算机属于哪个 Route53 托管区域,以便我可以将其添加为私有区域的记录集。我不想进入该区域...我希望能够使用 ec2 弄清楚。
对于给定的 ec2,我可以获取实例。从实例中,我获得了 VPC-ID。我知道 VPC-ID 与 Route53 托管区域相关联,但我似乎找不到 AWS CLI 命令来从 VPC-ID 中找出托管区域。
我找到了命令'route53 list-vpc-association-authorizations --hosted-zone-id='命令,该命令必须在每个单独的区域上运行,但结果是我知道与VPC关联的区域的空数组。
鉴于我知道 VPC ID 和 ec2 实例 ID,谁能帮我派生正确的私有托管区域?
谢谢
也许对人们来说太简单了,但这有效:
aws route53 list-hosted-zones --output text | grep 'MYDOMAIN' | awk '{print $3}' | cut -c13-
。只需以列格式列出 AWS 中的域,搜索您的域,然后使用 awk 和 cut 剪切区域 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)