本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
将 DNS 记录批量迁移至 Amazon Route 53 私有托管区
创建者:Ram Kandaswamy (AWS)
环境:生产 | 技术:网络;; CloudNative DevOps;基础架构 | Amazon Web Services:AWS Cloud9;Amazon Route 53;Amazon S3 |
Summary
网络工程师和云管理员需要一种高效且简单的方法将域名系统(DNS)记录添加到 Amazon Route 53 中的私有托管区。使用手动方法将 Microsoft Excel 工作表中的条目复制到 Route 53 控制台中的适当位置非常繁琐且容易出错。此模式描述了一种自动化方法,可减少添加多个记录所需时间和精力。它还提供了一组可重复的步骤来创建多个托管区域。
这种模式使用 AWS Cloud9 集成式开发环境(IDE)进行开发和测试,使用 Amazon Simple Storage Service (Amazon S3) 来存储记录。为了有效地处理数据,该模式使用 JSON 格式,因为它简单且能够支持 Python 字典(dict
数据类型)。
注意:如果可以从系统生成区域文件,请考虑改用 Route 53 导入功能。
先决条件和限制
先决条件
包含私有托管区记录的 Excel 工作表
熟悉不同类型的 DNS 记录,例如 A 记录、域名授权指针 (NAPTR) 记录和 SRV 记录(请参阅支持的 DNS 记录类型)
熟悉 Python 语言及其库
限制
该模式并未广泛覆盖所有用例场景。例如,change_resource_record_sets
调用并未使用 API 的所有可用属性。 在 Excel 工作表中,假定每行中的值是唯一的。每个完全限定域名 (FQDN) 的多个值应出现在同一行。如果情况并非如此,您应该修改此模式中提供的代码以执行必要的串联。
该模式使用适用于 Python 的 Amazon SDK (Boto3) 直接调用 Route 53 服务。您可以增强代码以使用
create_stack
和update_stack
命令的 AWS CloudFormation 封装器,并使用 JSON 值填充模板资源。
架构
技术堆栈
Route 53 私有托管区,用于路由流量
AWS Cloud9 IDE,用于开发和测试
Amazon S3,用于存储输出 JSON 文件
![将 DNS 记录批量迁移到 Route 53 私有托管区域的工作流程。](images/pattern-img/a81c29ea-f0c5-4d4a-ba87-93111a0f1ee9/images/2ada844b-4147-4f9f-8883-d22605aa42d8.png)
工作流由以下步骤组成,如上图所示,并在操作说明部分中进行了讨论:
将包含记录集信息的 Excel 工作表上传至 S3 存储桶。
创建并运行 Python 脚本,将 Excel 数据转换为 JSON 格式。
从 S3 存储桶读取记录并清理数据。
在您的私有托管区中创建记录集。
工具
Route 53 — Amazon Route 53 是高度可用且可扩展的 DNS 网络服务,用于处理域注册、DNS 路由和运行状况检查。
AWS Cloud9 – AWS Cloud9 是一个集成式开发环境 (IDE),提供丰富的代码编辑体验,对多种编程语言和运行时系统调试程序的支持以及内置终端。它包含一套工具,可用于对软件进行编码、构建、运行、测试和调试,并帮助您将软件发布到云中。
Amazon S3 – Amazon Simple Storage Service (Amazon S3) 是一项对象存储服务。您可以通过 Amazon S3 随时在 Web 上的任何位置存储和检索的任意大小的数据。
操作说明
任务 | 描述 | 所需技能 | ||||||||
---|---|---|---|---|---|---|---|---|---|---|
创建一个 Excel 文件作为记录。 | 使用从当前系统导出的记录创建一个 Excel 工作表,其中包含记录所需列,例如完全限定域名 (FQDN)、记录类型、生存时间 (TTL) 和值。对于 NAPTR 和 SRV 记录,该值是多个属性的组合,因此请使用 Excel
| 数据工程师、Excel 技能 | ||||||||
验证工作环境。 | 在 AWS Cloud9 IDE 中,创建一个 Python 文件以将 Excel 输入工作表转换为 JSON 格式。(你也可以使用亚马逊 SageMaker 笔记本来处理 Python 代码,而不是 AWS Cloud9。) 确认您使用的 Python 版本是 3.7 或更高版本。
安装 pandas 程序包。
| 常规 AWS | ||||||||
将 Excel 工作表数据转换为 JSON。 | 创建一个包含以下代码的 Python 文件,以将 Excel 转换为 JSON。
其中 | 数据工程师,Python 技能 | ||||||||
将 JSON 文件上传到 S3 存储桶。 | 将 | 应用程序开发人员 |
任务 | 描述 | 所需技能 |
---|---|---|
创建私有托管区 | 使用 create_hosted_zone API
您也可以使用诸如 AWS 之类的基础设施即代码 (IaC) 工具, CloudFormation 将这些步骤替换为使用适当资源和属性的堆栈创建堆栈的模板。 | 云架构师、网络管理员、Python 技能 |
从 Amazon S3 以字典形式检索详细信息。 | 使用以下代码从 S3 存储桶中读取数据并获取 Python 字典形式的 JSON 值。
其中 | 应用程序开发人员,Python 技能 |
清理空格和 Unicode 字符数据值。 | 作为确保数据正确性的安全措施,请使用以下代码对
| 应用程序开发人员,Python 技能 |
插入记录。 | 使用以下代码作为上一个
| 应用程序开发人员,Python 技能 |
相关资源
参考
通过导入区域文件创建记录(Amazon Route 53 文档)
create_hosted_zone 方法
(Boto3 文档) change_resource_record_sets 方法
(Boto3 文档)
教程和视频
Python 教程
(Python 文档) 使用 Amazon Route 53 进行域名系统设计
(YouTube 视频,AWS 在线技术讲座)