惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
DataBreaches.Net
GbyAI
GbyAI
aimingoo的专栏
aimingoo的专栏
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
月光博客
月光博客
大猫的无限游戏
大猫的无限游戏
M
MIT News - Artificial intelligence
腾讯CDC
博客园 - Franky
Engineering at Meta
Engineering at Meta
C
Check Point Blog
T
The Blog of Author Tim Ferriss
有赞技术团队
有赞技术团队
Microsoft Azure Blog
Microsoft Azure Blog
MyScale Blog
MyScale Blog
I
InfoQ
Blog — PlanetScale
Blog — PlanetScale
P
Proofpoint News Feed
The GitHub Blog
The GitHub Blog
N
Netflix TechBlog - Medium
Last Week in AI
Last Week in AI
S
SegmentFault 最新的问题
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
WordPress大学
WordPress大学

二丫讲梵

学习周刊-总第258期-2026年第15周 学习周刊-总第257期-2026年第14周 学习周刊-总第256期-2026年第13周 学习周刊-总第255期-2026年第12周 学习周刊-总第254期-2026年第11周 学习周刊-总第253期-2026年第10周 临时插播一条羊毛,免费领取450元大模型API代金券 学习周刊-总第252期-2026年第09周 学习周刊-总第251期-2026年第08周 学习周刊-总第250期-2026年第07周 学习周刊-总第249期-2026年第06周 诚邀评论,聊聊你所知欲知的我 学习周刊-总第248期-2026年第05周 我的QQ动态之2015年 我的QQ动态之2014年 我的QQ动态之2013年 我的QQ动态之2012年 我的QQ动态-2010-2011年 我的QQ动态-创栏小叙 学习周刊-总第247期-2026年第04周 Nexus社区版权益阉割--一文告诉你有哪些版本可以选择 学习周刊-总第246期-2026年第03周 学习周刊-总第245期-2026年第02周 学习周刊-总第244期-2026年第01周 学习周刊-总第243期-2025年第52周 学习周刊-总第242期-2025年第51周 开源项目ZenOps:带你领略禅意运维 学习周刊-总第241期-2025年第50周 用京东金融,享负债人生 学习周刊-总第240期-2025年第49周
AWS运维部署实践--route53私有域跨账号共享
二丫讲梵 · 2024-10-19 · via 二丫讲梵

# 前言

如果你的业务场景有多个 AWS 账号,那么私有域共享就是一个绕不开的话题。

aws 中的 route53 私有域配置跨账号共享有两种方案,一种是直接跨账号关联 VPC,一种是通过配置文件共享的形式实现。本文采用第一种方案,只需要两条命令即可完成此需求。

# 操作

比如要将 A 账号的 test.com 共享给 B 账号的 VPC 使用:

  1. 首先在 A账号 发起关联 B账号 VPC 的请求。注意此命令要在添加了 A账号 秘钥的 aws 命令行上执行。

    aws route53 create-vpc-association-authorization --hosted-zone-id Z02343401TXXXXX --vpc VPCRegion=ap-southeast-1,VPCId=vpc-xxxxxxxxxxxx --region ap-southeast-1
    

    1

    • --hosted-zone-id:指定私有域的 ID。文末会提供批量查询私有域 ID 的方法。
    • region:指定区域。
    • VPCId:指定 B 账号的 VPCID。
  2. 然后在 B账号 接受刚刚的请求。注意此命令要在添加了 B账号 秘钥的 aws 命令行上执行。

    $ aws route53 associate-vpc-with-hosted-zone --hosted-zone-id Z02343401TXXXXX --vpc VPCRegion=ap-southeast-1,VPCId=vpc-xxxxxxxxxxxx --region ap-southeast-1
    
    # 可能会有如下输出:
    
    {
        "ChangeInfo": {
            "Id": "/change/C083xxxxxxxxxx",
            "Status": "PENDING",
            "SubmittedAt": "2024-10-16T11:21:39.232000+00:00",
            "Comment": ""
        }
    }
    

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    执行完毕之后,需要等待一会儿,然后再去到 A账号 查看私有域 test.com 所关联的 VPC列表,已经可以看到关联到了 B账号VPCId

    大约要再等一会儿,就可以在 B 账号 VPC 内的主机上进行验证了。如果不生效,请多等一会儿。

如上两步均通过 aws cli 命令行完成,控制台没有操作的入口,注意先配置好两个账号的秘钥认证工作。

申明

原创文章eryajf,未经授权,严禁转载,侵权必究!此乃文中随机水印,敬请读者谅解。

# 其他辅助命令

查看账号下所有私有域列表

有了如上两条命令之后,你可能会需要批量处理粗需求,那么可以先通过命令拿到私有域列表。然后遍历 ID 进行批量处理。

#!/bin/bash

# 获取所有托管区域信息
hosted_zones=$(aws route53 list-hosted-zones --query "HostedZones[?Config.PrivateZone==\`true\`]" --output json)

# 打印表头
printf "| %-20s | %-30s | %-10s | %-15s |\n" "ID" "Name" "备注" "解析记录数"
printf "|----------------------|--------------------------------|------------|-----------------|\n"

# 遍历每个托管区域并打印信息
echo "$hosted_zones" | jq -c '.[]' | while read -r zone; do
    id=$(echo "$zone" | jq -r '.Id' | sed 's/\/hostedzone\///')
    name=$(echo "$zone" | jq -r '.Name')
    comment=$(echo "$zone" | jq -r '.Config.Comment // "无"')
    record_count=$(echo "$zone" | jq -r '.ResourceRecordSetCount')

    printf "| %-20s | %-30s | %-10s | %-15s |\n" "$id" "$name" "$comment" "$record_count"
done

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

查看指定私有域关联的 VPC 列表

aws route53 get-hosted-zone --id Z02343401TXXXXX --query 'VPCs[*].[VPCId, VPCRegion]' --output table

1