」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 使用 Terraform 建立 AWS MySQL RDS 實例

使用 Terraform 建立 AWS MySQL RDS 實例

發佈於2024-09-02
瀏覽:613

Creating an AWS MySQL RDS Instance with Terraform

使用 Terraform 建立 AWS MySQL RDS 實例

Amazon RDS(關聯式資料庫服務)簡化了雲端中關聯式資料庫的設定、操作和擴充。透過使用 Terraform,您可以將 MySQL RDS 執行個體作為程式碼進行管理,從而確保一致性和易於部署。在本文中,我們將逐步介紹使用 Terraform 在 AWS 上建立 MySQL RDS 實例的過程。

先決條件

開始前,請確保您具備以下條件:

  • AWS 帳戶: 具有建立 RDS 執行個體所需權限的活躍 AWS 帳戶。
  • Terraform 已安裝: Terraform 應安裝在您的本機電腦上。
  • AWS 存取金鑰和金鑰: 您需要這些憑證來透過 AWS 驗證 Terraform。

建立MySQL RDS實例的步驟

1. 定義AWS提供商

首先在 Terraform 設定檔中定義 AWS 提供者。這將指示 Terraform 使用您的憑證與指定區域中的 AWS 服務進行互動。

provider "aws" {
  region     = "ap-southeast-2"
  access_key = "your-access-key"  # Replace with your AWS access key
  secret_key = "your-secret-key"  # Replace with your AWS secret key
}

2. 建立安全群組

接下來,定義一個安全群組來控制對 MySQL RDS 實例的存取。此安全性群組將允許連接埠 3306 上的入站流量,這是 MySQL 的預設連接埠。

resource "aws_security_group" "mysql_rds_sg" {
  name        = "rds-sg"
  description = "Security group for MySQL RDS instance"

  ingress {
    from_port   = 3306
    to_port     = 3306
    protocol    = "tcp"
    cidr_blocks = ["0.0.0.0/0"]  # Open to all; consider restricting this to specific IPs for better security
  }
}

3.創建MySQL RDS實例

現在,定義 MySQL RDS 實例本身。此配置指定實例類型、儲存、引擎版本和其他詳細資訊。

resource "aws_db_instance" "awsdevrds" {
   allocated_storage      = 20
   max_allocated_storage  = 150
   storage_type           = "gp2"  # General Purpose SSD storage
   identifier             = "myrdsdev"
   engine                 = "mysql"
   engine_version         = "8.0.33"
   instance_class         = "db.t2.micro"  # Choose an instance class based on your workload
   username               = "admin"  # Replace with your desired username
   password               = "Passw!123"  # Replace with a strong password
   db_name                = "test_mysql_db"  # Name of the database
   backup_retention_period = 7  # Number of days to retain backups
   publicly_accessible    = true  # Make the instance publicly accessible (consider the security implications)
   skip_final_snapshot    = true  # Skip final snapshot when destroying the instance
   vpc_security_group_ids = [aws_security_group.mysql_rds_sg.id]  # Associate with the security group

   tags = {
     Name = "devrds"  # Tag your instance for easy identification
   }
}

4. 初始化並套用 Terraform 配置

Terraform 設定準備就緒後,請依照下列步驟部署 MySQL RDS 實例:

  • 初始化 Terraform:
  terraform init
  • 創建執行計劃:
  terraform plan 
  • 應用計畫:
  terraform apply

此程序將依照您的配置中的定義在 AWS 上建立 MySQL RDS 實例。此執行個體將使用自訂安全群組進行保護,該群組控制對資料庫的存取。

5. 存取MySQL RDS實例

執行個體啟動並執行後,您可以透過 AWS 管理主控台中提供的端點或透過 Terraform 輸出(如果已設定)存取它。確保您的安全性群組已正確配置為僅允許來自受信任來源的存取。

6. 清理資源

如果您不再需要MySQL RDS實例,您可以銷毀Terraform所建立的資源以避免產生費用:

terraform destroy

此指令將從您的 AWS 帳戶中刪除 RDS 執行個體和關聯的安全性群組。

結論

使用 Terraform 建立 AWS MySQL RDS 執行個體是一個簡化的過程,可讓您以程式碼形式管理資料庫基礎架構。透過在 Terraform 設定檔中定義 RDS 執行個體及其安全性設置,您可以輕鬆、一致、有效率地部署、修改和銷毀資料庫資源。

對於生產環境,請考慮其他配置,例如多可用區部署、加密和增強監控。 Terraform 的靈活性和強大功能使其成為管理雲端基礎架構的理想工具,確保根據最佳實務部署和維護您的資源。

版本聲明 本文轉載於:https://dev.to/giasuddin90/creating-an-aws-mysql-rds-instance-with-terraform-4h8g?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>
  • 箭頭函數與es6中的方法聲明:為什麼``為什麼``'''''''''''''''''''''''''''''為什麼在箭頭函數中不按預期工作?
    箭頭函數與es6中的方法聲明:為什麼``為什麼``'''''''''''''''''''''''''''''為什麼在箭頭函數中不按預期工作?
    arrow functions vs.在es6 的目的是讓函數訪問人物對像中的名稱屬性。但是,控制台僅打印“我的名字”。 說明:的,ES6中的獨特本質產生。與傳統功能聲明不同,箭頭功能不會綁定此關鍵字。相反,他們從周圍的範圍內繼承了這種約束,在這種情況下,它是全局範圍。 解決方案:可以使用ES6...
    程式設計 發佈於2025-03-23
  • 文字到語音(本書給有聲讀物)
    文字到語音(本書給有聲讀物)
    [2 曾經希望您能在不犧牲寶貴閱讀時間的情況下享受自己喜歡的書籍嗎? 我們許多人都面臨著這個困境。我們有要閱讀的書,但生活會阻礙。 這是一些常見的挑戰: 聽聽有聲讀物是繁忙時間表的方便替代方案。 購買文本和音頻版本可能很昂貴,只有音頻版本並不總是理想的。 幸運的是,存在一種簡單的編碼解決方案,可...
    程式設計 發佈於2025-03-23
  • Java是否允許多種返回類型:仔細研究通用方法?
    Java是否允許多種返回類型:仔細研究通用方法?
    在Java中的多個返回類型:一種誤解類型:在Java編程中揭示,在Java編程中,Peculiar方法簽名可能會出現,可能會出現,使開發人員陷入困境,使開發人員陷入困境。 getResult(string s); ,其中foo是自定義類。該方法聲明似乎擁有兩種返回類型:列表和E。但這確實是如此嗎...
    程式設計 發佈於2025-03-23
  • 如何使用FormData()處理多個文件上傳?
    如何使用FormData()處理多個文件上傳?
    )處理多個文件輸入時,通常需要處理多個文件上傳時,通常是必要的。 The fd.append("fileToUpload[]", files[x]); method can be used for this purpose, allowing you to send multi...
    程式設計 發佈於2025-03-23
  • 如何限制動態大小的父元素中元素的滾動範圍?
    如何限制動態大小的父元素中元素的滾動範圍?
    在交互式接口中實現垂直滾動元素的CSS高度限制問題:考慮一個佈局,其中我們具有與用戶垂直滾動一起移動的可滾動地圖div,同時與固定的固定sidebar保持一致。但是,地圖的滾動無限期擴展,超過了視口的高度,阻止用戶訪問頁面頁腳。 $("#map").css({ margin...
    程式設計 發佈於2025-03-23
  • 為什麼不使用CSS`content'屬性顯示圖像?
    為什麼不使用CSS`content'屬性顯示圖像?
    在Firefox extemers屬性為某些圖像很大,&& && && &&華倍華倍[華氏華倍華氏度]很少見,卻是某些瀏覽屬性很少,尤其是特定於Firefox的某些瀏覽器未能在使用內容屬性引用時未能顯示圖像的情況。這可以在提供的CSS類中看到:。 googlepic { 內容:url(&...
    程式設計 發佈於2025-03-23
  • 如何將熊貓數據框中的逗號分隔字符串分為單獨的行?
    如何將熊貓數據框中的逗號分隔字符串分為單獨的行?
    在pandas dataframes中將comma-pandas dataframe strings拆分為單獨的行使用series.explode()或dataframe.explode():將CSV字符串轉換為列表:如果目標完全可以將CSV字符串轉換為列表,則可以通過使用str.split()。...
    程式設計 發佈於2025-03-23
  • PHP陣列鍵值異常:了解07和08的好奇情況
    PHP陣列鍵值異常:了解07和08的好奇情況
    PHP數組鍵值問題,使用07&08 在給定數月的數組中,鍵值07和08呈現令人困惑的行為時,就會出現一個不尋常的問題。運行print_r($月份)返回意外結果:鍵“ 07”丟失,而鍵“ 08”分配給了9月的值。 此問題源於PHP對領先零的解釋。當一個數字帶有0(例如07或08)的前綴時,PHP...
    程式設計 發佈於2025-03-23
  • 為什麼64位窗戶上的“長” 64位?
    為什麼64位窗戶上的“長” 64位?
    在64位Windows 中出現的問題:為什麼'long'不是64位'''long'不是64位計算機上的64位計算機?本文深入研究了整數大小在不同平台上的歷史和含義。 64位)。 ILP64 was abandoned in favor of LP64...
    程式設計 發佈於2025-03-23
  • 準備施加方法如何防止SQL注射?
    準備施加方法如何防止SQL注射?
    [2 準備的語句:針對SQL注入的強大防禦 準備的語句使用參數化查詢。 而不是將用戶輸入直接嵌入SQL字符串中,而是使用佔位符(例如“?”)創建模板查詢。 然後,使用這與直接串聯的用戶輸入到SQL字符串(例如';刪除表用戶; - '導致表的刪除。 準備了通過嚴格將SQL查詢與用戶...
    程式設計 發佈於2025-03-23
  • 如何使用不同數量列的聯合數據庫表?
    如何使用不同數量列的聯合數據庫表?
    合併列數不同的表 當嘗試合併列數不同的數據庫表時,可能會遇到挑戰。一種直接的方法是在列數較少的表中,為缺失的列追加空值。 例如,考慮兩個表,表 A 和表 B,其中表 A 的列數多於表 B。為了合併這些表,同時處理表 B 中缺失的列,請按照以下步驟操作: 確定表 B 中缺失的列,並將它們添加到表的...
    程式設計 發佈於2025-03-23
  • 為什麼使用Firefox後退按鈕時JavaScript執行停止?
    為什麼使用Firefox後退按鈕時JavaScript執行停止?
    導航歷史記錄問題:JavaScript使用Firefox Back Back 此行為是由瀏覽器緩存JavaScript資源引起的。要解決此問題並確保在後續頁面訪問中執行腳本,Firefox用戶應設置一個空功能。 警報'); }; alert('inline Alert')...
    程式設計 發佈於2025-03-23
  • 版本5.6.5之前,使用current_timestamp與時間戳列的current_timestamp與時間戳列有什麼限制?
    版本5.6.5之前,使用current_timestamp與時間戳列的current_timestamp與時間戳列有什麼限制?
    在時間戳列上使用current_timestamp或MySQL版本中的current_timestamp或在5.6.5 此限制源於遺留實現的關注,這些限制需要對當前的_timestamp功能進行特定的實現。 創建表`foo`( `Productid` int(10)unsigned not ...
    程式設計 發佈於2025-03-23
  • 如何修復\“常規錯誤:2006 MySQL Server在插入數據時已經消失\”?
    如何修復\“常規錯誤:2006 MySQL Server在插入數據時已經消失\”?
    How to Resolve "General error: 2006 MySQL server has gone away" While Inserting RecordsIntroduction:Inserting data into a MySQL database can...
    程式設計 發佈於2025-03-23

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3