使用 Terratest 自動化 AWS 基礎設施測試

組織在AWS上採用基礎架構即代碼(IaC)時,往往會遇到確保其基礎架構不僅正確配置,而且在部署後也按照預期運作的困難。即使是輕微的配置錯誤也可能導致昂貴的停機時間、安全漏洞或性能問題。傳統的測試方法 — 例如手動檢查資源或僅依賴靜態代碼分析 — 並不能為生產環境提供足夠的信心。有一個迫切的需要,即在它們上線之前自動且可靠地驗證AWS基礎架構更改。

解決方案

解決方案

Terratest提供了一個使用Go編寫的自動化測試框架,專門設計用於在AWS等現實世界的雲環境中測試基礎架構代碼。通過以程序方式部署、驗證和銷毀資源,Terratest填補了編寫IaC(例如Terraform)和自信地發佈更改之間的差距。以下是它的工作原理:以下是如何使用Terraform和Terratest實現AWS基礎架構測試的詳細指南,以及Go語言中的示例代碼片段。這個工作流程將幫助您配置AWS資源,對其運行測試以確保它們按照預期工作,然後自動拆除一切。

先決條件

安裝 Terraform

官方網站下載並安裝 Terraform。

安裝 Go

Terratest 是用 Go 編寫的,因此您需要安裝 Go。從官方網站下載 Go。

設置 AWS 憑證

確保您的 AWS 憑證已配置(例如通過 ~/.aws/credentials 或環境變量,如 AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY)。

初始化 Go 模組

在您的專案目錄中運行:

Shell

 

將 Terratest 添加到您的go.mod

在您的專案/倉庫目錄中運行:

Shell

 

範例 Terraform 配置

創建一個簡單的 Terraform 配置,以啟動 AWS EC2 實例。將以下檔案放入名為aws_ec2_example(或您喜歡的任何名稱)的目錄中。

將其保存為main.tf以供參考。

Shell

 

接下來,variables.tf:

Shell

 

Terratest 代碼片段

在名為 test 的目錄中創建 Go 測試檔案(或者您可以將其命名為任何名稱,但 test 是慣例)。例如,aws_ec2_test.go:

Shell

 

這個測試的作用是

  • 初始化並應用 Terraform 配置於 ../aws_ec2_example
  • 部署 一個具有指定 AMI 的 EC2 實例於 us-east-1。
  • 捕獲 instance_id 的 Terraform 輸出。
  • 驗證 實例 ID 不是空值,使用 Testify 的斷言庫。
  • 銷毀 測試結束時的資源,以避免產生持續的費用。

執行測試

  • 導航 至包含您的 Go 測試文件的目錄(例如,測試目錄)。
  • 運行 以下命令:
Shell

 

  • 觀察輸出
    • 您會看到 Terraform 正在初始化並應用您的 AWS 基礎設施。
    • 在測試斷言通過後,Terraform 將銷毀資源。

結論

通過遵循這些步驟,您可以將 Terratest 整合到您的 AWS IaC 工作流程中,以:

  • 配置 AWS 資源,使用 Terraform。
  • 以 Go 為基礎的測試 程式化測試它們。
  • 驗證 您的基礎設施已正確配置並按預期運行。
  • 自動拆除,確保您不會產生不必要的 AWS 成本,並保持乾淨的環境以便重複測試運行。

Source:
https://dzone.com/articles/terratest-for-aws