从当前 ec2 派生 Route53 托管区域



我正在尝试编写一个可扩展且可重用的脚本来使用 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)

最新更新