我正在尝试编写一个可伸缩且可重用的脚本,以使用ansible提供ec2s。作为其中的一部分,我希望能够确定我的计算机是哪个Route53托管区域的一部分,这样我就可以将其添加为私有区域的记录集。我不想进入这个区域...我希望能够使用ec2来解决这个问题。
对于给定的ec2,我可以获得实例。从实例中,我得到了VPC-ID。我知道VPC-ID与Route53托管区域相关联,但我似乎找不到AWS CLI命令来从VPC-ID中找出托管区域。
我找到了命令‘route53 list- VPC -association-authorizations -list zone -id=’命令,该命令必须在每个区域上运行,但结果是一个区域的空数组,我知道该区域与VPC相关联。
如果我知道私有网络id和ec2实例ID,有人能帮我推导出正确的私有托管区吗?
谢谢
发布于 2018-08-13 19:35:02
对人们来说可能太简单了,但这是可行的:
aws route53 list-hosted-zones --output text | grep 'MYDOMAIN' | awk '{print $3}' | cut -c13-
...Just以列的形式列出了亚马逊网络服务中的域名,搜索你的域名,然后用awk和cut删除区域id。
发布于 2017-06-22 08:29:58
我花了一段时间,但我想通了:
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)https://stackoverflow.com/questions/44678386
复制相似问题