从当前的ec2派生Route53托管区域

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从当前的ec2派生Route53托管区域相关的知识,希望对你有一定的参考价值。

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

谢谢

答案

对于人来说可能过于简单,但这有效:

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)

以上是关于从当前的ec2派生Route53托管区域的主要内容,如果未能解决你的问题,请参考以下文章

route53 裸域未到达亚马逊弹性负载均衡器

Amazon Route 53:域转移与名称服务器更新

Amazon Route 53 - 托管区域和查询到底是啥意思?

我可以在不同的托管区域中拥有一个 route53 子域吗?

Amazon AWS Route 53 托管区域不起作用

AWS Route53:同一域下的私有和公共托管区域