本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
將 DNS 記錄批量遷移到 Amazon Route 53 私有託管區域
由拉姆·康達斯瓦米(AWS)創建
環境:生產 | 技術:網路、雲端原生、基礎架 DevOps構 | AWS 服務:AWS Cloud9;Amazon Route 53;Amazon S3 |
Summary
網路工程師和雲端管理員需要有效且簡單的方法,將網域名稱系統 (DNS) 記錄新增至 Amazon Route 53 中的私有託管區域。使用手動方法將項目從 Microsoft Excel 工作表複製到 Route 53 主控台中的適當位置是乏味且容易出錯的。這種模式描述了一種自動化方法,可以減少添加多個記錄所需的時間和精力。它還為多個託管區域建立提供了一組可重複的步驟。
此模式使用 AWS Cloud9 整合式開發環境 (IDE) 進行開發和測試,並使用亞馬遜簡單儲存服務 (Amazon S3) 存放記錄。為了有效地處理資料,模式會使用 JSON 格式,因為它的簡單性和支援 Python 字典 (dict
資料類型) 的能力。
注意:如果您可以從系統產生區域檔案,請考慮改用 Route 53 匯入功能。
先決條件和限制
先決條件
包含私人託管區域記錄的 Excel 工作表
熟悉不同類型的 DNS 記錄,例如 A 記錄、名稱授權指標 (NAPTR) 記錄和 SRV 記錄 (請參閱支援的 DNS 記錄類型)
熟悉 Python 語言及其庫
限制
該模式不會為所有使用案例案例提供廣泛的涵蓋範圍。例如,調用不會使用 API 的
所有可用屬性。 在 Excel 工作表中,每行中的值被假定為唯一。每個完整網域名稱 (FQDN) 的多個值預期會出現在同一列中。如果不是這樣,您應該修改此模式中提供的代碼以執行必要的串聯。
該模式使用適用於 Python 的 AWS 開發套件 (Boto3) 直接呼叫 Route 53 服務。您可以增強程式碼以針對
create_stack
和update_stack
命令使用 AWS CloudFormation 包裝函式,並使用 JSON 值填入範本資源。
架構
技術堆疊
Route 53 私人託管區域,用於路由流量
適用於開發和測試的 AWS Cloud9 IDE
Amazon S3 用於存儲輸出 JSON 文件
工作流程包含這些步驟,如上圖所示,並在 Epics 一節中討論:
將具有記錄集資訊的 Excel 工作表上傳至 S3 儲存貯體。
建立並執行將 Excel 資料轉換為 JSON 格式的 Python 指令碼。
從 S3 儲存貯體讀取記錄並清除資料。
在您的私人託管區域中建立記錄集。
工具
路線 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 的
| 數據工程師,卓越技能 | ||||||||
確認工作環境。 | 在 AWS Cloud9 IDE 中,建立一個 Python 檔案,將 Excel 輸入工作表轉換為 JSON 格式。您也可以使用 Amazon SageMaker 筆記本來處理 Python 代碼,而不是 AWS Cloud9。) 確認您使用的 Python 版本是 3.7 或更新版本。
安裝熊貓包。
| 一般 AWS | ||||||||
將 Excel 工作表資料轉換為 JSON。 | 創建一個 Python 文件,其中包含以下代碼以從 Excel 轉換為 JSON。
其中 | 資料工程師、Python 技能 | ||||||||
將 JSON 檔案上傳到 S3 儲存貯體。 | 上傳 | 應用程式開發人員 |
任務 | 描述 | 所需技能 |
---|---|---|
建立私有託管區域。 | 使用創建的主機 API 和下面的 Python 示例代碼來創建一個私有託管區域
您也可以使用基礎設施即程式碼 (IaC) 工具 (例如 AWS), CloudFormation 將這些步驟取代為使用適當資源和屬性建立堆疊的範本。 | 雲端架構師、網路管理員、Python 技能 |
從 Amazon S3 擷取作為字典的詳細資訊。 | 使用下列程式碼從 S3 儲存貯體讀取,並以 Python 字典的形式取得 JSON 值。
其中 | 應用程式開發者、Python 技能 |
清理空格和 Unicode 字符的數據值。 | 為確保資料正確性的安全措施,請使用下列程式碼對中的值執行分段作業。
| 應用程式開發者、Python 技能 |
插入記錄。 | 使用下面的代碼作為上一個
這部史詩第一步的託管區域 ID 在 | 應用程式開發者、Python 技能 |
相關資源
參考
透過匯入區域檔案建立記錄 (Amazon Route 53 說明文件)
教學課程和影片
Python 教程
(Python 文件)
使用 Amazon Route 53 進行 DNS 設計
(YouTube 影片、AWS 線上技術會談)