我正在尝试编写可扩展且可重复使用的脚本来使用ansible配置ec2。作为其中的一部分,我希望能够确定我的机器所属的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吗?
由于
答案 0 :(得分:1)
对于人来说可能太简单了,但这可行:
aws route53 list-hosted-zones --output text | grep 'MYDOMAIN' | awk '{print $3}' | cut -c13-
...只需以列格式列出AWS中的域,搜索您的域,然后使用awk和cut剪切出区域ID。
答案 1 :(得分: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)