首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从当前ec2派生Route53托管区域

问从当前ec2派生Route53托管区域
EN

Stack Overflow用户
提问于 2017-06-21 22:04:06
回答 2查看 478关注 0票数 0

我正在尝试编写一个可伸缩且可重用的脚本,以使用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,有人能帮我推导出正确的私有托管区吗?

谢谢

EN

回答 2

Stack Overflow用户

发布于 2018-08-13 19:35:02

对人们来说可能太简单了,但这是可行的:

aws route53 list-hosted-zones --output text | grep 'MYDOMAIN' | awk '{print $3}' | cut -c13-

...Just以列的形式列出了亚马逊网络服务中的域名,搜索你的域名,然后用awk和cut删除区域id。

票数 1
EN

Stack Overflow用户

发布于 2017-06-22 08:29:58

我花了一段时间,但我想通了:

代码语言:javascript
复制
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
}

调用时使用:

代码语言:javascript
复制
ZONE_ID=$(getHostedZone $VPC_ID $EC2_REGION)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44678386

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档