AWS运维部署实践--route53私有域跨账号共享
文章发布较早,内容可能过时,阅读注意甄别。
# 前言
如果你的业务场景有多个 AWS 账号,那么私有域共享就是一个绕不开的话题。
aws 中的 route53
私有域配置跨账号共享有两种方案,一种是直接跨账号关联 VPC,一种是通过配置文件共享的形式实现。本文采用第一种方案,只需要两条命令即可完成此需求。
# 操作
比如要将 A 账号的 test.com 共享给 B 账号的 VPC 使用:
首先在
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。
然后在
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
命令行完成,控制台没有操作的入口,注意先配置好两个账号的秘钥认证工作。
# 其他辅助命令
查看账号下所有私有域列表
有了如上两条命令之后,你可能会需要批量处理粗需求,那么可以先通过命令拿到私有域列表。然后遍历 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
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
上次更新: 2024/11/19, 23:11:42