

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# Amazon RDS 入門
<a name="CHAP_GettingStarted"></a>

在下列範例中，您可以了解如何使用 Amazon Relational Database Service (Amazon RDS) 建立並連線至資料庫執行個體。您可以建立使用 Db2、MariaDB、MySQL、Microsoft SQL Server、Oracle 或 PostgreSQL 的資料庫執行個體。

**重要**  
您必須完成[設定您的 Amazon RDS 環境](CHAP_SettingUp.md) 中的任務，才能建立或連線至資料庫執行個體。

在建立資料庫執行個體和連線至資料庫執行個體上的資料庫時，每個資料庫引擎的作法稍有不同。在下面選擇其中一個資料庫引擎，以取得如何建立和連線至資料庫執行個體的詳細資訊。建立並連線至資料庫執行個體之後，也會有指示協助您刪除資料庫執行個體。

**Topics**
+ [

# 建立並連線至 MariaDB 資料庫執行個體
](CHAP_GettingStarted.CreatingConnecting.MariaDB.md)
+ [

# 建立並連線至 Microsoft SQL Server 資料庫執行個體
](CHAP_GettingStarted.CreatingConnecting.SQLServer.md)
+ [

# 建立並連線至 MySQL 資料庫執行個體
](CHAP_GettingStarted.CreatingConnecting.MySQL.md)
+ [

# 建立並連線至 Oracle 資料庫執行個體
](CHAP_GettingStarted.CreatingConnecting.Oracle.md)
+ [

# 建立並連線至 PostgreSQL 資料庫執行個體
](CHAP_GettingStarted.CreatingConnecting.PostgreSQL.md)
+ [

# 教學：建立 Web 伺服器和 Amazon RDS 資料庫執行個體
](TUT_WebAppWithRDS.md)
+ [

# 教學課程：使用 Lambda 函數來存取 Amazon RDS 資料庫
](rds-lambda-tutorial.md)

# 建立並連線至 MariaDB 資料庫執行個體
<a name="CHAP_GettingStarted.CreatingConnecting.MariaDB"></a>

本教學課程會建立 EC2 執行個體和 RDS for MariaDB 資料庫執行個體。本教學課程說明如何使用標準 MySQL 用戶端，從 EC2 執行個體存取資料庫執行個體。本教學課程為最佳實務，會在虛擬私有雲端 (VPC) 中建立私有資料庫執行個體。在多數情況下，相同 VPC 中的其他資源 (例如 EC2 執行個體) 可以存取該資料庫執行個體，但 VPC 以外的資源便無法存取該執行個體。

完成教學課程後，在您的 VPC 中，每個可用區域都有一個公有子網路和私有子網路。在可用區域中，EC2 執行個體位於公有子網路中，而資料庫執行個體則可於私有子網路中。

**重要**  
建立 無需付費 AWS 帳戶。不過，若要完成本教學課程，您可能需要支付所使用的 資源的費用。如果不再需要這些資源，您可以在完成教學課程後刪除這些資源。

下圖顯示此教學課程完成時的組態。

![\[EC2 執行個體和 MariaDB 資料庫執行個體。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/getting-started-mariadb.png)


本教學課程可讓您使用下列其中一種方法來建立資源：

1. 使用 AWS 管理主控台 ‐ [建立 EC2 執行個體](#CHAP_GettingStarted.Creating.MariaDB.EC2)和 [建立 MariaDB 資料庫執行個體](#CHAP_GettingStarted.Creating.MariaDB) 

1. 使用 CloudFormation 建立資料庫執行個體和 EC2 執行個體 ‐ [（選用） 使用 建立 VPC、EC2 執行個體和 MariaDB 執行個體 CloudFormation](#CHAP_GettingStarted.CFN.MariaDB) 

第一個方法使用**輕鬆建立**，來建立具有 AWS 管理主控台的私有 MariaDB 資料庫執行個體。您在這裡僅能指定資料庫引擎類型、資料庫執行個體大小與資料庫執行個體識別符。**輕鬆建立**會使用其他組態選項的預設設定。

改用**標準建立**時，您可以在建立資料庫執行個體時指定更多組態選項。這些選項包括可用性、安全性、備份和維護的設定。若要建立公有資料庫執行個體，您必須使用**標準建立**。如需相關資訊，請參閱[建立 Amazon RDS 資料庫執行個體](USER_CreateDBInstance.md)。

**Topics**
+ [

## 先決條件
](#CHAP_GettingStarted.Prerequisites.MariaDB)
+ [

## 建立 EC2 執行個體
](#CHAP_GettingStarted.Creating.MariaDB.EC2)
+ [

## 建立 MariaDB 資料庫執行個體
](#CHAP_GettingStarted.Creating.MariaDB)
+ [

## （選用） 使用 建立 VPC、EC2 執行個體和 MariaDB 執行個體 CloudFormation
](#CHAP_GettingStarted.CFN.MariaDB)
+ [

## 連接至 MariaDB 資料庫執行個體
](#CHAP_GettingStarted.Connecting.MariaDB)
+ [

## 刪除 EC2 執行個體和資料庫執行個體
](#CHAP_GettingStarted.Deleting.MariaDB)
+ [

## (選用) 刪除使用 CloudFormation 建立的 EC2 執行個體和資料庫執行個體
](#CHAP_GettingStarted.DeletingCFN.MariaDB)
+ [

## (選用) 將資料庫執行個體連線至 Lambda 函數
](#CHAP_GettingStarted.ComputeConnect.MariaDB)

## 先決條件
<a name="CHAP_GettingStarted.Prerequisites.MariaDB"></a>

在開始之前，請先完成下節所含步驟：
+ [註冊 AWS 帳戶](CHAP_SettingUp.md#sign-up-for-aws)
+ [建立具有管理存取權的使用者](CHAP_SettingUp.md#create-an-admin)

## 建立 EC2 執行個體
<a name="CHAP_GettingStarted.Creating.MariaDB.EC2"></a>

建立您會用來連線至資料庫的 Amazon EC2 執行個體。

**建立 EC2 執行個體**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)：// 開啟 Amazon EC2 主控台。

1. 在 的右上角 AWS 管理主控台，選擇您要在 AWS 區域 其中建立 EC2 執行個體的 。

1. 選擇 **EC2 儀表板**，然後選擇**啟動執行個體**，如下圖所示。  
![\[EC2 儀表板。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_11.png)

   **啟動執行個體**頁面即開啟。

1. 在**啟動執行個體**頁面中選擇下列設定。

   1. 在 **Name and tags** (名稱與標籤) 下，對於 **Name** (名稱)，輸入 **ec2-database-connect**。

   1. 在**應用程式和作業系統映像 (Amazon Machine Image)** 中，選擇 **Amazon Linux**，然後選擇 **Amazon Linux 2023 AMI**。保留其他選項的預設選擇。  
![\[選擇 Amazon Machine Image。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_12.png)

   1. 在**Instance type** (執行個體類型) 下，選擇 **t2.micro**。

   1. 在 **Key pair (login)** (金鑰對 (登入)) 下，選擇 **Key pair name** (金鑰對名稱)，以使用現有金鑰對。若要為 Amazon EC2 執行個體建立新的金鑰對，請選擇 **Create new key pair** (建立新的金鑰對)，然後使用 **Create key pair** (建立金鑰對) 視窗來建立金鑰對。

      如需有關建立新的金鑰對的詳細資訊，請參閱《Amazon EC2 使用者指南》**中的[建立金鑰對](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/get-set-up-for-amazon-ec2.html#create-a-key-pair)。

   1. 對於**網路設定**中的**允許 SSH 流量**，選擇 EC2 執行個體的 SSH 連線來源。

      如果顯示的 IP 地址對 SSH 連線而言是正確的，您可以選擇 **My IP** (我的 IP)。否則，您可以決定用於使用 Secure Shell (SSH) 連線至 VPC 中 EC2 執行個體的 IP 地址。若要判斷公有 IP 地址，您可以在不同的瀏覽器視窗或索引標籤中使用 [https://checkip.amazonaws.com](https://checkip.amazonaws.com/) 中的服務。IP 地址的範例為 192.0.2.1/32。

       在許多情況下，您可能透過網際網路服務供應商 (ISP) 或是從沒有靜態 IP 地址的防火牆進行連線。若是如此，請務必確定用戶端電腦所使用的 IP 地址範圍。
**警告**  
如果您使用 `0.0.0.0/0` 進行 SSH 存取，則可讓所有 IP 地址使用 SSH 存取您的公有 EC2 執行個體。通常在測試環境中短暫使用此方法是沒有問題的，但在生產環境則不安全。在生產環境中，您應只授權特定 IP 地址或特定範圍的地址可使用 SSH 存取您的 EC2 執行個體。

      下圖顯示**網路設定**區段的範例。  
![\[EC2 執行個體的網路設定。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/EC2_RDS_Connect_NtwkSettings.png)

   1. 讓剩餘區段保留預設值。

   1. 檢閱**摘要**面板中 EC2 執行個體組態的摘要，並在準備就緒時選擇**啟動執行個體**。

1. 在**啟動狀態**頁面上，記下新的 EC2 執行個體的識別碼，例如：`i-1234567890abcdef0`。  
![\[啟動狀態頁面上的 EC2 執行個體識別符。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/getting-started-ec2-id.png)

1. 選擇 EC2 執行個體識別符，以開啟 EC2 執行個體清單，然後選取您的 EC2 執行個體。

1. 在**詳細資訊**索引標籤中，請記下以下值，當您使用 SSH 進行連線時需要這些值：

   1. 在**執行個體摘要**中，記下**公用 IPv4 DNS** 的值。  
![\[執行個體頁面的詳細資訊索引標籤上的 EC2 公用 DNS 名稱。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/easy-create-ec2-public-dns.png)

   1. 在**執行個體詳細資訊**中，記下**金鑰對名稱**的值。  
![\[執行個體頁面的詳細資訊索引標籤上的 EC2 金鑰對名稱。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/easy-create-ec2-key-pair.png)

1. 請等待 EC2 執行個體的**執行個體狀態**為**執行中**，然後再繼續動作。

## 建立 MariaDB 資料庫執行個體
<a name="CHAP_GettingStarted.Creating.MariaDB"></a>

Amazon RDS 的基本建置組塊為資料庫執行個體。這是您執行 MariaDB 資料庫的環境。

於此範例中，您使用**輕鬆建立**來建立執行 MariaDB 資料庫引擎、資料庫執行個體類別為 db.t4g.micro 的資料庫執行個體。

**如要以 Easy create (輕鬆建立) 來建立 MariaDB 資料庫執行個體**

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/) 的 Amazon RDS 主控台。

1. 在 Amazon RDS 主控台的右上角，選擇要在 AWS 區域 其中建立資料庫執行個體的 。

1. 在導覽窗格中，選擇 **Databases** (資料庫)。

1. 選擇**建立資料庫**，然後選取**輕鬆建立**。  
![\[輕鬆建立選項。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/easy-create-option.png)

1. 在 **Configuration (組態)**，選擇 **MariaDB (MariaDB)**。

1. 對於**資料庫執行個體大小**，選擇**免費方案**或**沙盒**。免費方案帳戶的**免費方案**隨即顯示。付費方案帳戶的**沙盒**隨即顯示。

1. 對於 **DB instance identifier** (資料庫執行個體識別碼)，請輸入 **database-test1**。

1. 在**主要使用者名稱**，輸入主要使用者的名稱，或保留預設名稱。

   **Create database** (建立資料庫) 頁面看起來應該會如下圖所示。若為免費方案帳戶，**免費方案**隨即顯示。若為付費方案帳戶，**沙盒**隨即顯示。  
![\[建立資料庫頁面。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/easy-create-mariadb.png)

1. 如要將自動產生的主要密碼用在資料庫執行個體，請選取**自動產生密碼**。

   若要輸入您的主要密碼，請清除**自動產生密碼**，然後在**主要密碼**和**確認主要密碼**中輸入相同的密碼。

1. 若要設定與先前建立之 EC2 執行個體的連線，請展開**設定 EC2 連線 – *選用***。

   選取**連線至 EC2 運算資源**。選擇先前建立的 EC2 執行個體。  
![\[設定 EC2 連線選項。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/EC2_RDS_Setup_Conn-EasyCreate.png)

1. 展開**檢視輕鬆建立的預設設定**。  
![\[輕鬆建立預設設定。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/easy-create-view-default-maria.png)

   您可以檢查與 **Easy Create** (輕鬆建立) 一起使用的預設設定。**資料庫建立後可編輯**欄顯示您可以在資料庫建立後變更的選項。
   + 若該欄的設定為**否**，而您想要其他設定，可以使用**標準建立**來建立資料庫執行個體。
   + 若該欄的設定為**是**，而您想要其他設定，可以使用**標準建立**來建立資料庫執行個體，或在建立後修改該資料庫執行個體的設定。

1. 選擇**建立資料庫**。

   若要檢視資料庫執行個體的主要使用者名稱和密碼，請選擇 **View credential details (檢視登入資料詳細資訊)**。

   您可以使用出現的使用者名稱和密碼，來以主要使用者的身分連線至資料庫執行個體。
**重要**  
您無法再次檢視主要使用者密碼。如果您沒有記錄下來，您可能需要進行變更。  
如果您需要在資料庫執行個體可供使用後變更主要使用者密碼，您可以將資料庫執行個體修改為這麼做。如需修改 資料庫執行個體的詳細資訊，請參閱[修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

1. 在**資料庫**清單中，選擇新 MariaDB 資料庫執行個體的名稱，以顯示其詳細資訊。

   在其可供使用之前，資料庫執行個體會處於**建立中**狀態。  
![\[資料庫執行個體詳細資訊。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/MariaDB-Launch06.png)

   狀態變更為 **Available** (可用) 時，您便能連線至資料庫執行個體。視資料庫執行個體類別和儲存體數量而定，可能需要最多 20 分鐘的時間，新執行個體才會可用。

## （選用） 使用 建立 VPC、EC2 執行個體和 MariaDB 執行個體 CloudFormation
<a name="CHAP_GettingStarted.CFN.MariaDB"></a>

您可以使用 CloudFormation 將基礎設施視為程式碼來佈建 AWS 資源，而不是使用 主控台來建立 VPC、EC2 執行個體和 MariaDB 執行個體。為了協助您將 AWS 資源組織成較小且更易於管理的單位，您可以使用 CloudFormation 巢狀堆疊功能。如需詳細資訊，請參閱[在 CloudFormation 主控台上建立堆疊](https://docs.aws.amazon.com//AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html)和[使用巢狀堆疊](https://docs.aws.amazon.com//AWSCloudFormation/latest/UserGuide/using-cfn-nested-stacks.html)。

**重要**  
CloudFormation 是免費的，但 CloudFormation 建立的資源是即時的。您需要支付這些資源的標準使用費，直到將其終止為止。如需詳細資訊，請參閱 [RDS for MariaDB 定價](https://aws.amazon.com//rds/mariadb/pricing)。
+ 下載 CloudFormation 範本
+ 使用 CloudFormation 設定資源

### 下載 CloudFormation 範本
<a name="CHAP_GettingStarted.CFN.MariaDB.Step1"></a>

CloudFormation 範本是 JSON 或 YAML 文字檔案，其中包含您要在堆疊中建立之資源的相關組態資訊。此範本也會為您以及 RDS 執行個體建立 VPC 和堡壘主機。

若要下載範本檔案，請開啟以下連結 [MariaDB CloudFormation 範本](https://github.com/aws-ia/cfn-ps-amazon-rds/blob/main/templates/rds-mariadb-main.template.yaml)。

在 Github 頁面中，按一下*下載原始檔案*按鈕，即可儲存範本 YAML 檔案。

### 使用 CloudFormation 設定資源
<a name="CHAP_GettingStarted.CFN.MariabDB.Step2"></a>

**注意**  
開始此程序之前，請確定 AWS 帳戶中有 EC2 執行個體的金鑰對。如需詳細資訊，請參閱 [Amazon EC2 金鑰對與 Linux 執行個體](https://docs.aws.amazon.com//AWSEC2/latest/UserGuide/ec2-key-pairs.html)。

使用 CloudFormation 範本時，您必須選取正確的參數，以確保您的資源已正確建立。請遵循下列步驟：

1. 登入 AWS 管理主控台 並在 https：//[https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/) 開啟 CloudFormation 主控台。

1. 選擇 **Create Stack** (建立堆疊)。

1. 在 [指定範本] 區段中，選取**從電腦上傳範本檔案**，然後選擇**下一步**。

1. 在**指定堆疊詳細資訊**頁面，設定下列參數：

   1. 將**堆疊名稱**設定為 **MariaDBTestStack**。

   1. 在**參數**下，選取三個可用區域來設定**可用區域**。

   1. 在 **Linux 堡壘主機組態**下，針對**金鑰名稱**，選取金鑰對以登入 EC2 執行個體。

   1. 在 **Linux 堡壘主機組態**設定中，將**允許的 IP 範圍**設定為 IP 位址。若要使用 Secure Shell (SSH) 連線到 VPC 中的 EC2 執行個體，請使用位於 [https://checkip.amazonaws.com](https://checkip.amazonaws.com) 的服務來判斷公有 IP 位址。IP 地址的範例為 192.0.2.1/32。
**警告**  
如果您使用 `0.0.0.0/0` 進行 SSH 存取，則可讓所有 IP 地址使用 SSH 存取您的公有 EC2 執行個體。通常在測試環境中短暫使用此方法是沒有問題的，但在生產環境則不安全。在生產環境中，您應只授權特定 IP 地址或特定範圍的地址可使用 SSH 存取您的 EC2 執行個體。

   1. 在**資料庫一般組態**下，將**資料庫執行個體類別**設為 **db.t3.micro**。

   1. 將**資料庫名稱**設為 **database-test1**。

   1. 對於**資料庫主要使用者名稱**，輸入主要使用者的名稱。

   1. 在本教學課程中，將**使用 Secrets Manager 管理資料庫主要使用者密碼**設為 `false`。

   1. 針對**資料庫密碼**，設定您選擇的密碼。請記住此密碼，以供教學課程中的後續步驟使用。

   1. 在**資料庫儲存組態**下，將**資料庫儲存類型**設定為 **gp2**。

   1. 在**資料庫監控組態**下，將**啟用 RDS Performance Insights** 設為 false。

   1. 保留所有其他設定作為預設值。按一下**下一步**以繼續。

1. 在**檢閱堆疊**頁面中，在檢查資料庫和 Linux 堡壘主機選項後選取**提交**。

堆疊建立程序完成後，請檢視名稱為 *BastionStack* 和 *RDSNS* 的堆疊，以記下連線至資料庫所需的資訊。如需詳細資訊，請參閱[在 上檢視 CloudFormation 堆疊資料和資源 AWS 管理主控台](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-view-stack-data-resources.html)。

## 連接至 MariaDB 資料庫執行個體
<a name="CHAP_GettingStarted.Connecting.MariaDB"></a>

您可以使用任何標準 SQL 用戶端應用程式來連線至資料庫執行個體。在此範例中，您會使用 mysql 命令列用戶端來連線至 MariaDB 資料庫執行個體。

**若要連線至 MariaDB 資料庫執行個體**

1. 尋找資料庫執行個體的端點 (DNS 名稱) 和連接埠號碼。

   1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/) 的 Amazon RDS 主控台。

   1. 在 Amazon RDS 主控台的右上角，選擇資料庫執行個體 AWS 區域 的 。

   1. 在導覽窗格中，選擇 **Databases** (資料庫)。

   1. 選擇 MariaDB 資料庫執行個體名稱以顯示其詳細資訊。

   1. 在 **Connectivity & security (連線能力和安全性)** 索引標籤上，複製該端點。另外，請記下連接埠號碼。您需要同時有端點和連接埠號碼，才能連線至資料庫執行個體。  
![\[連線至 MariaDB 資料庫執行個體。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/MariaDBConnect1.png)

1. 請遵循《Amazon EC2 使用者指南》**中的[連線至 Linux 執行個體](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstances.html)步驟，以連線您先前所建的 EC2 執行個體。

   建議您使用 SSH 連線至 EC2 執行個體。如果 SSH 用戶端公用程式已安裝在 Windows、Linux 或 Mac 上，您可以使用下列命令格式連線至執行個體：

   ```
   ssh -i location_of_pem_file ec2-user@ec2-instance-public-dns-name
   ```

   例如，假設 `ec2-database-connect-key-pair.pem` 存放在 Linux 上 的 `/dir1` 中，而 EC2 執行個體的公用 IPv4 DNS 為 `ec2-12-345-678-90.compute-1.amazonaws.com`。您的 SSH 命令看起來如下所示：

   ```
   ssh -i /dir1/ec2-database-connect-key-pair.pem ec2-user@ec2-12-345-678-90.compute-1.amazonaws.com
   ```

1. 更新 EC2 執行個體上的軟體，以取得最新的錯誤修正和安全性更新。若要執行此操作，請使用以下命令。
**注意**  
`-y` 選項不要求確認就會安裝更新。若要先檢查更新再安裝，請省略此選項。

   ```
   sudo dnf update -y
   ```

1. 從 MariaDB 安裝 mysql 命令列用戶端。

   若要在 Amazon Linux 2023 上安裝 MariaDB 命令列用戶端，請執行下列命令：

   ```
   sudo dnf install mariadb105
   ```

1. 連線到 MariaDB 資料庫執行個體。例如，輸入下列命令。此動作可讓您使用 MySQL 用戶端，連線至 MariaDB 資料庫執行個體。

   取代您用於 `endpoint` 的資料庫執行個體端點 (DNS 名稱)，以及取代您用於 `admin` 的主要使用者名稱。提示您輸入密碼時，請提供您使用的主要密碼。

   ```
   mysql -h endpoint -P 3306 -u admin -p
   ```

   輸入使用者的密碼之後，您應該會看到類似如下的輸出。

   ```
   Welcome to the MariaDB monitor.  Commands end with ; or \g.
   Your MariaDB connection id is 156
   Server version: 10.6.10-MariaDB-log managed by https://aws.amazon.com/rds/
    
   Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
     
   Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
     
   MariaDB [(none)]>
   ```

   如需連線至 MariaDB 資料庫執行個體的詳細資訊，請參閱[連線至您的 MariaDB 資料庫執行個體](USER_ConnectToMariaDBInstance.md)。如果您無法連線至資料庫執行個體，請參閱[無法連線至 Amazon RDS 資料庫執行個體](CHAP_Troubleshooting.md#CHAP_Troubleshooting.Connecting)。

   基於安全考量，最佳做法是使用加密連線。僅當用戶端和伺服器位於同一 VPC 且網路受信任時，才使用未加密的 MariaDB 連線。如需使用加密連線的詳細資訊，請參閱 [使用 SSL/TLS 從 MySQL 命令列用戶端連線至 Amazon RDS 上的 MariaDB 資料庫執行個體 (加密)](USER_ConnectToMariaDBInstanceSSL.CLI.md)。

1. 執行 SQL 命令。

   例如，下列 SQL 命令會顯示目前的日期和時間：

   ```
   SELECT CURRENT_TIMESTAMP;
   ```

## 刪除 EC2 執行個體和資料庫執行個體
<a name="CHAP_GettingStarted.Deleting.MariaDB"></a>

在連線至您已建立的範例 EC2 執行個體與資料庫執行個體，並探索這些執行個體之後，請將其刪除，才不會再對您收費。

如果您使用 CloudFormation 建立資源，請略過此步驟並前往下一個步驟。

**刪除 EC2 執行個體**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)：// 開啟 Amazon EC2 主控台。

1. 在導覽窗格中，選擇**執行個體**。

1. 選取 EC2 執行個體，並選取**執行個體狀態、終止執行個體**。

1. 出現確認提示時，請選擇 **Terminate (終止)**。

如需刪除 EC2 執行個體的詳細資訊，請參閱《Amazon EC2 使用者指南》**中的[終止執行個體](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/terminating-instances.html)。

**刪除不含最終資料庫快照的資料庫執行個體**

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/) 的 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Databases** (資料庫)。

1. 選擇您要刪除的資料庫執行個體。

1. 對於 **Actions** (動作)，請選擇 **Delete** (刪除)。

1. 清除**是否建立最後的快照？**和**保留自動備份**。

1. 完成確認，然後選擇**刪除**。

## (選用) 刪除使用 CloudFormation 建立的 EC2 執行個體和資料庫執行個體
<a name="CHAP_GettingStarted.DeletingCFN.MariaDB"></a>

如果您使用 CloudFormation 來建立資源，請在連線至 後刪除 CloudFormation 堆疊，並探索範例 EC2 執行個體和資料庫執行個體，因此您不再需要支付這些堆疊的費用。

**刪除 CloudFormation 資源**

1. 開啟 CloudFormation 主控台。

1. 在 CloudFormation 主控台的**堆疊**頁面，選取根堆疊 (不含名稱 VPCStack、BastionStack 或 RDSNS 的堆疊)。

1. 選擇 **刪除**。

1. 出現確認提示時，請選取**刪除堆疊**。

如需在 CloudFormation 中刪除堆疊的詳細資訊，請參閱*AWS CloudFormation 《 使用者指南*》中的[刪除 CloudFormation 主控台上的堆疊](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-delete-stack.html)。

## (選用) 將資料庫執行個體連線至 Lambda 函數
<a name="CHAP_GettingStarted.ComputeConnect.MariaDB"></a>

您也可以將 RDS for MariaDB 資料庫執行個體連線至 Lambda 無伺服器運算資源。Lambda 函數允許您在沒有佈建或管理基礎設施的情況下執行程式碼。Lambda 函數還允許您自動回應任何規模的程式碼執行請求，從每天十幾個事件到每秒數百個事件。如需更多詳細資訊，請參閱 [自動連線 Lambda 函數和資料庫執行個體 ](lambda-rds-connect.md)。

# 建立並連線至 Microsoft SQL Server 資料庫執行個體
<a name="CHAP_GettingStarted.CreatingConnecting.SQLServer"></a>

本教學課程會建立 EC2 執行個體和 RDS for Microsoft SQL Server 資料庫執行個體。本教學課程說明如何使用 Microsoft SQL Server Management Studio 用戶端，從 EC2 執行個體存取資料庫執行個體。本教學課程為最佳實務，會在虛擬私有雲端 (VPC) 中建立私有資料庫執行個體。在多數情況下，相同 VPC 中的其他資源 (例如 EC2 執行個體) 可以存取該資料庫執行個體，但 VPC 以外的資源便無法存取該執行個體。

完成教學課程後，在您的 VPC 中，每個可用區域都有一個公有子網路和私有子網路。在可用區域中，EC2 執行個體位於公有子網路中，而資料庫執行個體則可於私有子網路中。

**重要**  
建立 AWS 帳戶無需付費。不過，透過完成本教學課程，您可能會因為使用 AWS 的資源而產生費用。如果不再需要這些資源，您可以在完成教學課程後刪除這些資源。

下圖顯示此教學課程完成時的組態。

![\[EC2 執行個體和 Microsoft SQL Server 資料庫執行個體。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/getting-started-sqlserver.png)


本教學課程可讓您使用下列其中一種方法來建立資源：

1. 使用 AWS 管理主控台 ‐ [建立 SQL Server 資料庫執行個體](#CHAP_GettingStarted.Creating.SQLServer)和 [建立 EC2 執行個體](#CHAP_GettingStarted.Creating.SQLServer.EC2)

1. 使用 CloudFormation 建立資料庫執行個體和 EC2 執行個體 ‐ [（選用） 使用 建立 VPC、EC2 執行個體和 SQL Server 執行個體 CloudFormation](#CHAP_GettingStarted.CFN.SQLServer) 

第一個方法使用**輕鬆建立**，來建立具有 AWS 管理主控台的私有 SQL Server 資料庫執行個體。您在這裡僅能指定資料庫引擎類型、資料庫執行個體大小與資料庫執行個體識別符。**輕鬆建立**會使用其他組態選項的預設設定。

改用**標準建立**時，您可以在建立資料庫執行個體時指定更多組態選項。這些選項包括可用性、安全性、備份和維護的設定。若要建立公有資料庫執行個體，您必須使用**標準建立**。如需相關資訊，請參閱[建立 Amazon RDS 資料庫執行個體](USER_CreateDBInstance.md)。

**Topics**
+ [

## 先決條件
](#CHAP_GettingStarted.Prerequisites.SQLServer)
+ [

## 建立 EC2 執行個體
](#CHAP_GettingStarted.Creating.SQLServer.EC2)
+ [

## 建立 SQL Server 資料庫執行個體
](#CHAP_GettingStarted.Creating.SQLServer)
+ [

## （選用） 使用 建立 VPC、EC2 執行個體和 SQL Server 執行個體 CloudFormation
](#CHAP_GettingStarted.CFN.SQLServer)
+ [

## 連線至 SQL Server 資料庫執行個體
](#CHAP_GettingStarted.Connecting.SQLServer)
+ [

## 探索範例 SQL Server 資料庫執行個體
](#CHAP_GettingStarted.SQLServer.Exploring)
+ [

## 刪除 EC2 執行個體和資料庫執行個體
](#CHAP_GettingStarted.Deleting.SQLServer)
+ [

## (選用) 刪除使用 CloudFormation 建立的 EC2 執行個體和資料庫執行個體
](#CHAP_GettingStarted.DeletingCFN.SQLServer)
+ [

## (選用) 將資料庫執行個體連線至 Lambda 函數
](#CHAP_GettingStarted.ComputeConnect.SQLServer)

## 先決條件
<a name="CHAP_GettingStarted.Prerequisites.SQLServer"></a>

在開始之前，請先完成下節所含步驟：
+ [註冊 AWS 帳戶](CHAP_SettingUp.md#sign-up-for-aws)
+ [建立具有管理存取權的使用者](CHAP_SettingUp.md#create-an-admin)

## 建立 EC2 執行個體
<a name="CHAP_GettingStarted.Creating.SQLServer.EC2"></a>

建立您會用來連線至資料庫的 Amazon EC2 執行個體。

**建立 EC2 執行個體**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)：// 開啟 Amazon EC2 主控台。

1. 在 的右上角 AWS 管理主控台，選擇 AWS 區域 您先前用於資料庫的 。

1. 選擇 **EC2 儀表板**，然後選擇**啟動執行個體**，如下圖所示。  
![\[EC2 儀表板。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_11.png)

   **啟動執行個體**頁面即開啟。

1. 在**啟動執行個體**頁面中選擇下列設定。

   1. 在 **Name and tags** (名稱與標籤) 下，對於 **Name** (名稱)，輸入 **ec2-database-connect**。

   1. 在**應用程式和作業系統映像 (Amazon Machine Image)** 下，選擇 **Windows**，然後選擇 **Microsoft Windows Server 2022 Base**。保留其他選項的預設選擇。  
![\[選擇 Amazon Machine Image。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/tutorial_ec2_sqlserver_create1.png)

   1. 在**Instance type** (執行個體類型) 下，選擇 **t2.micro**。

   1. 在 **Key pair (login)** (金鑰對 (登入)) 下，選擇 **Key pair name** (金鑰對名稱)，以使用現有金鑰對。若要為 Amazon EC2 執行個體建立新的金鑰對，請選擇 **Create new key pair** (建立新的金鑰對)，然後使用 **Create key pair** (建立金鑰對) 視窗來建立金鑰對。

      如需有關建立新的金鑰對的詳細資訊，請參閱《Windows 執行個體的 Amazon EC2 使用者指南》**中的[建立金鑰對](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2-key-pairs.html)。

   1. 對於**網路設定**中的**防火牆 (安全群組**)，選擇**允許 RDP 流量來自**以連線至 EC2 執行個體。

      如果顯示的 IP 地址對 RDP 連線而言是正確的，您可以選擇**我的 IP**。否則，您可以決定用來使用 RDP 連線至 VPC 中 EC2 執行個體的 IP 地址。若要判斷公有 IP 地址，您可以在不同的瀏覽器視窗或索引標籤中使用 [https://checkip.amazonaws.com](https://checkip.amazonaws.com/) 中的服務。IP 地址的範例為 192.0.2.1/32。

       在許多情況下，您可能透過網際網路服務供應商 (ISP) 或是從沒有靜態 IP 地址的防火牆進行連線。若是如此，請務必確定用戶端電腦所使用的 IP 地址範圍。
**警告**  
如果您使用 `0.0.0.0/0` 進行 RDP 存取，則可讓所有 IP 地址使用 SSH 存取您的公有 EC2 執行個體。通常在測試環境中短暫使用此方法是沒有問題的，但在生產環境則不安全。在生產環境中，您應只授權特定 IP 地址或特定範圍的地址可使用 RDP 存取您的 EC2 執行個體。

      下圖顯示**網路設定**區段的範例。  
![\[EC2 執行個體的網路設定。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/EC2_RDS_Connect_NtwkSettingsRDSMS.png)

   1. 讓剩餘區段保留預設值。

   1. 檢閱**摘要**面板中 EC2 執行個體組態的摘要，並在準備就緒時選擇**啟動執行個體**。

1. 在**啟動狀態**頁面上，記下新的 EC2 執行個體的識別碼，例如：`i-1234567890abcdef0`。  
![\[啟動狀態頁面上的 EC2 執行個體識別符。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/getting-started-ec2-id.png)

1. 選擇 EC2 執行個體識別碼，以開啟 EC2 執行個體清單。

1. 請等待 EC2 執行個體的**執行個體狀態**為**執行中**，然後再繼續動作。

## 建立 SQL Server 資料庫執行個體
<a name="CHAP_GettingStarted.Creating.SQLServer"></a>

Amazon RDS 的基本建置組塊為資料庫執行個體。這是您執行 SQL Server 資料庫的環境。

在此範例中，您使用**輕鬆建立**來建立執行 SQL Server 資料庫引擎、資料庫執行個體類別為 db.t2.micro 的資料庫執行個體。

**用 Easy Create (輕鬆建立) 建立 Microsoft SQL Server 資料庫執行個體**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)：// 開啟 Amazon RDS 主控台。

1. 在 Amazon RDS 主控台的右上角，選擇要在 AWS 區域 其中建立資料庫執行個體的 。

1. 在導覽窗格中，選擇 **Databases (資料庫)**。

1. 選擇 **Create database (建立資料庫)**，並確定選擇 **Easy Create (輕鬆建立)**。  
![\[輕鬆建立選項。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/easy-create-option.png)

1. 在 **Configuration (組態)** 中，選擇 **Microsoft SQL Server (Microsoft SQL Server)**。

1. 針對**版本**，選擇 **SQL Server Express 版本**。

1. 在 **DB instance size** (資料庫執行個體大小) 中，選擇 **Free tier** (免費方案)。免費方案帳戶的**免費方案**隨即顯示。付費方案帳戶的**沙盒**隨即顯示。

1. 對於 **DB instance identifier** (資料庫執行個體識別碼)，請輸入 **database-test1**。

   **Create database** (建立資料庫) 頁面看起來應該會如下圖所示。若為免費方案帳戶，**免費方案**隨即顯示。若為付費方案帳戶，**沙盒**隨即顯示。  
![\[引擎選項\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/easy-create-sqlserver.png)

1. 在**主要使用者名稱**，輸入主要使用者的名稱，或保留預設名稱。

1. 若要設定與先前建立之 EC2 執行個體的連線，請開啟**設定 EC2 連線 – *選用***。

   選取**連線至 EC2 運算資源**。選擇先前建立的 EC2 執行個體。  
![\[設定 EC2 連線選項。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/EC2_RDS_Setup_Conn-EasyCreate.png)

1. 如要將自動產生的主要密碼用在資料庫執行個體，請選取 **Auto generate a password** (自動產生密碼) 方塊。

   如要輸入您的主要密碼，請清除 **Auto generate a password** (自動產生密碼) 方塊，然後在 **Master password** (主要密碼) 和 **Confirm password** (確認密碼) 中輸入相同的密碼。

1. 開啟**檢視輕鬆建立的預設設定**。  
![\[輕鬆建立預設設定。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/easy-create-sqlserver-confirm.png)

   您可以檢查與 **Easy Create** (輕鬆建立) 一起使用的預設設定。**資料庫建立後可編輯**欄顯示您可以在資料庫建立後變更的選項。
   + 若該欄的設定為**否**，而您想要其他設定，可以使用**標準建立**來建立資料庫執行個體。
   + 若該欄的設定為**是**，而您想要其他設定，可以使用**標準建立**來建立資料庫執行個體，或在建立後修改該資料庫執行個體的設定。

1. 選擇**建立資料庫**。

   若要檢視資料庫執行個體的主要使用者名稱和密碼，請選擇 **View credential details (檢視登入資料詳細資訊)**。

   您可以使用出現的使用者名稱和密碼，來以主要使用者的身分連線至資料庫執行個體。
**重要**  
您無法再次檢視主要使用者密碼。如果您沒有記錄下來，您可能需要進行變更。  
如果您需要在資料庫執行個體可供使用後變更主要使用者密碼，您可以將資料庫執行個體修改為這麼做。如需修改 資料庫執行個體的詳細資訊，請參閱[修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

1. 在**資料庫**清單中，選擇新 SQL Server 資料庫執行個體的名稱，以顯示其詳細資訊。

   在其可供使用之前，資料庫執行個體會處於**建立中**狀態。  
![\[資料庫執行個體詳細資訊的螢幕擷取\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/easy-create-sqlserver-launch.png)

   狀態變更為 **Available** (可用) 時，您便能連線至資料庫執行個體。視資料庫執行個體類別和儲存體數量而定，可能需要最多 20 分鐘的時間，新執行個體才會可用。

## （選用） 使用 建立 VPC、EC2 執行個體和 SQL Server 執行個體 CloudFormation
<a name="CHAP_GettingStarted.CFN.SQLServer"></a>

您可以使用 CloudFormation 將基礎設施視為程式碼來佈建 AWS 資源，而不是使用 主控台來建立 VPC、EC2 執行個體和 SQL Server 執行個體。為了協助您將 AWS 資源組織成較小且更易於管理的單位，您可以使用 CloudFormation 巢狀堆疊功能。如需詳細資訊，請參閱[在 CloudFormation 主控台上建立堆疊](https://docs.aws.amazon.com//AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html)和[使用巢狀堆疊](https://docs.aws.amazon.com//AWSCloudFormation/latest/UserGuide/using-cfn-nested-stacks.html)。

**重要**  
CloudFormation 是免費的，但 CloudFormation 建立的資源是即時的。您需要支付這些資源的標準使用費，直到將其終止為止。如需詳細資訊，請參閱 [RDS for SQL Server 定價](https://aws.amazon.com//rds/sqlserver/pricing)。

若要使用 CloudFormation 主控台建立資源，請完成下列步驟：
+ 下載 CloudFormation 範本
+ 使用 CloudFormation 設定資源

### 下載 CloudFormation 範本
<a name="CHAP_GettingStarted.CFN.SQLServer.Step1"></a>

CloudFormation 範本是 JSON 或 YAML 文字檔案，其中包含您要在堆疊中建立之資源的相關組態資訊。此範本也會為您以及 RDS 執行個體建立 VPC 和堡壘主機。

若要下載範本檔案，請開啟以下連結 [SQL Server CloudFormation 範本](https://github.com/aws-ia/cfn-ps-amazon-rds/blob/main/templates/rds-sqlserver-main.template.yaml)。

在 Github 頁面中，按一下*下載原始檔案*按鈕，即可儲存範本 YAML 檔案。

### 使用 CloudFormation 設定資源
<a name="CHAP_GettingStarted.CFN.SQLServer.Step2"></a>

**注意**  
開始此程序之前，請確定 AWS 帳戶中有 EC2 執行個體的金鑰對。如需詳細資訊，請參閱 [Amazon EC2 金鑰對與 Linux 執行個體](https://docs.aws.amazon.com//AWSEC2/latest/UserGuide/ec2-key-pairs.html)。

使用 CloudFormation 範本時，您必須選取正確的參數，以確保您的資源已正確建立。請遵循下列步驟：

1. 登入 AWS 管理主控台 並在 https：//[https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/) 開啟 CloudFormation 主控台。

1. 選擇 **Create Stack** (建立堆疊)。

1. 在 [指定範本] 區段中，選取**從電腦上傳範本檔案**，然後選擇**下一步**。

1. 在**指定堆疊詳細資訊**頁面，設定下列參數：

   1. 將**堆疊名稱**設定為 **SQLServerTestStack**。

   1. 在**參數**下，選取三個可用區域來設定**可用區域**。

   1. 在 **Linux 堡壘主機組態**下，針對**金鑰名稱**，選取金鑰對以登入 EC2 執行個體。

   1. 在 **Linux 堡壘主機組態**設定中，將**允許的 IP 範圍**設定為 IP 位址。若要使用 Secure Shell (SSH) 連線到 VPC 中的 EC2 執行個體，請使用位於 [https://checkip.amazonaws.com](https://checkip.amazonaws.com) 的服務來判斷公有 IP 位址。IP 地址的範例為 192.0.2.1/32。
**警告**  
如果您使用 `0.0.0.0/0` 進行 SSH 存取，則可讓所有 IP 地址使用 SSH 存取您的公有 EC2 執行個體。通常在測試環境中短暫使用此方法是沒有問題的，但在生產環境則不安全。在生產環境中，您應只授權特定 IP 地址或特定範圍的地址可使用 SSH 存取您的 EC2 執行個體。

   1. 在**資料庫一般組態**下，將**資料庫執行個體類別**設為 **db.t3.micro**。

   1. 將**資料庫名稱**設為 **database-test1**。

   1. 對於**資料庫主要使用者名稱**，輸入主要使用者的名稱。

   1. 在本教學課程中，將**使用 Secrets Manager 管理資料庫主要使用者密碼**設為 `false`。

   1. 針對**資料庫密碼**，設定您選擇的密碼。請記住此密碼，以供教學課程中的後續步驟使用。

   1. 在**資料庫儲存組態**下，將**資料庫儲存類型**設定為 **gp2**。

   1. 在**資料庫監控組態**下，將**啟用 RDS Performance Insights** 設為 false。

   1. 保留所有其他設定作為預設值。按一下**下一步**以繼續。

1. 在**設定堆疊選項**頁面中，保留所有預設選項。按一下**下一步**以繼續。

1. 在**檢閱堆疊**頁面中，在檢查資料庫和 Linux 堡壘主機選項後選取**提交**。

堆疊建立程序完成後，請檢視名稱為 *BastionStack* 和 *RDSNS* 的堆疊，以記下連線至資料庫所需的資訊。如需詳細資訊，請參閱[在 上檢視 CloudFormation 堆疊資料和資源 AWS 管理主控台](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-view-stack-data-resources.html)。

## 連線至 SQL Server 資料庫執行個體
<a name="CHAP_GettingStarted.Connecting.SQLServer"></a>

在下列程序中，您會使用 Microsoft SQL Server Management Studio (SSMS) 連線至您的資料庫執行個體。

**使用 SSMS 連線至 RDS for SQL Server 資料庫執行個體**

1. 尋找資料庫執行個體的端點 (DNS 名稱) 和連接埠號碼。

   1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)：// 開啟 Amazon RDS 主控台。

   1. 在 Amazon RDS 主控台的右上角，選擇資料庫執行個體 AWS 區域 的 。

   1. 在導覽窗格中，選擇 **Databases** (資料庫)。

   1. 選擇 SQL Server 資料庫執行個體名稱以顯示其詳細資訊。

   1. 在 **Connectivity (連線)** 標籤上，複製端點。另外，請記下連接埠號碼。您需要同時有端點和連接埠號碼，才能連線至資料庫執行個體。  
![\[連線至 Microsoft SQL Server 資料庫執行個體。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/SQLServerConnect2.png)

1. 請遵循《Amazon EC2 Windows 執行個體使用者指南》**中的[連線至您的 Microsoft Windows 執行個體](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/EC2_GetStarted.html#ec2-connect-to-instance-windows)，以連線至您先前建立的 EC2 執行個體。

1. 安裝來自 Microsoft 的 SQL Server Management Studio (SSMS) 用戶端。

   若要將 SSMS 的獨立版本下載至您的 EC2 執行個體，請參閱 Microsoft 文件中的[下載 SQL Server Management Studio (SSMS)](https://docs.microsoft.com/en-us/sql/ssms/download-sql-server-management-studio-ssms)。

   1. 使用「開始」功能表開啟 Internet Explorer。

   1. 使用 Internet Explorer 下載並安裝 SSMS 的獨立版本。如果系統提示您網站不受信任，請將該網站新增至信任的網站清單。

1. 啟動 SQL Server Management Studio (SSMS)。

   **Connect to Server (連線至伺服器)** 對話方塊隨即出現。

1. 為範例資料庫執行個體提供下列資訊：

   1. 針對 **Server type (伺服器類型)**，選擇 **Database Engine (資料庫引擎)**。

   1. 針對 **Server name (伺服器名稱)**，輸入 DNS 名稱，後接逗號和連接埠號碼 (預設連接埠為 1433)。例如，您的伺服器名稱應看起來如下所示。

      ```
      database-test1.0123456789012.us-west-2.rds.amazonaws.com,1433
      ```

   1. 針對 **Authentication (身分驗證)**，選擇 **SQL Server Authentication (SQL Server 身分驗證)**。

   1. 針對**登入**，輸入您選擇用於範例資料庫執行個體的使用者名稱。這也稱之為主要使用者名稱。

   1. 在 **Password (密碼)** 中，輸入您稍早為範例資料庫執行個體選擇的密碼。這也稱之為主要使用者密碼。

1. 選擇 **Connect (連線)**。

   幾分鐘後，SSMS 會連線至資料庫執行個體。基於安全考量，最佳做法是使用加密連線。僅當用戶端和伺服器位於同一 VPC 且網路受信任時，才使用未加密的 SQL Server 連線。如需使用加密連線的詳細資訊，請參閱 [對 Microsoft SQL Server 資料庫執行個體使用 SSL](SQLServer.Concepts.General.SSL.Using.md)

如需有關連線至 Microsoft SQL Server 資料庫執行個體的詳細資訊，請參閱 [連線至 Microsoft SQL Server 資料庫執行個體](USER_ConnectToMicrosoftSQLServerInstance.md)。

如需連線問題的詳細資訊，請參閱 [無法連線至 Amazon RDS 資料庫執行個體](CHAP_Troubleshooting.md#CHAP_Troubleshooting.Connecting)。

## 探索範例 SQL Server 資料庫執行個體
<a name="CHAP_GettingStarted.SQLServer.Exploring"></a>

您可以使用 Microsoft SQL Server Management Studio (SSMS) 來探索範例資料庫執行個體。

**使用 SSMS 來探索資料庫執行個體**

1. 您的 SQL Server 資料庫執行個體隨附 SQL Server 的標準內建系統資料庫 (master、model、msdb 和 tempdb)。若要瀏覽系統資料庫，請執行下列動作：

   1. 在 SSMS 的 **View (檢視)** 功能表中，選擇 **Object Explorer (物件總管)**。

   1. 展開您的資料庫執行個體、展開 **Databases** (資料庫)，再展開 **System Databases** (系統資料庫)，如下所示。  
![\[顯示系統資料庫的物件總管。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/SQL-SSMS-SystemDBs.png)

   您的 SQL Server 資料庫執行個體也隨附一個名為 `rdsadmin` 的資料庫。Amazon RDS 將使用此資料庫，以便存放用於管理資料庫的物件。`rdsadmin` 資料庫也包含可供您執行的預存程序，可讓您執行進階任務。

1. 開始建立您自己的資料庫，並照常對您的資料庫執行個體和資料庫執行查詢。若要在範例資料庫執行個體上執行測試查詢，請執行下列動作：

   1. 在 SSMS 中，於**檔案**功能表上，指向**新增**，然後選擇**使用目前的連線查詢**。

   1. 輸入下列 SQL 查詢：

      ```
      select @@VERSION
      ```

   1. 執行查詢。SSMS 會傳回 Amazon RDS 資料庫執行個體的 SQL Server 版本。  
![\[SQL 查詢視窗。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/SQL-Connect-Query.png)

## 刪除 EC2 執行個體和資料庫執行個體
<a name="CHAP_GettingStarted.Deleting.SQLServer"></a>

在連線至您已建立的範例 EC2 執行個體與資料庫執行個體，並探索這些執行個體之後，請將其刪除，才不會再對您收費。

如果您使用 CloudFormation 建立資源，請略過此步驟並前往下一個步驟。

**刪除 EC2 執行個體**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)：// 開啟 Amazon EC2 主控台。

1. 在導覽窗格中，選擇**執行個體**。

1. 選取 EC2 執行個體，並選取**執行個體狀態、終止執行個體**。

1. 出現確認提示時，請選擇 **Terminate (終止)**。

如需刪除 EC2 執行個體的詳細資訊，請參閱《Windows 執行個體使用者指南》**中的[終止執行個體](https://docs.aws.amazon.com//AWSEC2/latest/WindowsGuide/terminating-instances.html)。

**刪除不含最終資料庫快照的資料庫執行個體**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)：// 開啟 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Databases** (資料庫)。

1. 選擇想要刪除的資料庫執行個體。

1. 對於 **Actions** (動作)，請選擇 **Delete** (刪除)。

1. 清除**是否建立最後的快照？**和**保留自動備份**。

1. 完成確認，然後選擇**刪除**。

## (選用) 刪除使用 CloudFormation 建立的 EC2 執行個體和資料庫執行個體
<a name="CHAP_GettingStarted.DeletingCFN.SQLServer"></a>

如果您使用 CloudFormation 來建立資源，請在連線至 後刪除 CloudFormation 堆疊，並探索範例 EC2 執行個體和資料庫執行個體，因此您不再需要支付這些堆疊的費用。

**刪除 CloudFormation 資源**

1. 開啟 CloudFormation 主控台。

1. 在 CloudFormation 主控台的**堆疊**頁面，選取根堆疊 (不含名稱 VPCStack、BastionStack 或 RDSNS 的堆疊)。

1. 選擇 **刪除**。

1. 出現確認提示時，請選取**刪除堆疊**。

如需在 CloudFormation 中刪除堆疊的詳細資訊，請參閱*AWS CloudFormation 《 使用者指南*》中的[刪除 CloudFormation 主控台上的堆疊](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-delete-stack.html)。

## (選用) 將資料庫執行個體連線至 Lambda 函數
<a name="CHAP_GettingStarted.ComputeConnect.SQLServer"></a>

您也可以將適用於 RDS for SQL Server 資料庫執行個體連線至 Lambda 無伺服器運算資源。Lambda 函數允許您在沒有佈建或管理基礎設施的情況下執行程式碼。Lambda 函數還允許您自動回應任何規模的程式碼執行請求，從每天十幾個事件到每秒數百個事件。如需更多詳細資訊，請參閱 [自動連線 Lambda 函數和資料庫執行個體 ](lambda-rds-connect.md)。

# 建立並連線至 MySQL 資料庫執行個體
<a name="CHAP_GettingStarted.CreatingConnecting.MySQL"></a>

本教學課程會建立 EC2 執行個體和 RDS for MySQL 資料庫執行個體。本教學課程說明如何使用標準 MySQL 用戶端，從 EC2 執行個體存取資料庫執行個體。本教學課程為最佳實務，會在虛擬私有雲端 (VPC) 中建立私有資料庫執行個體。在多數情況下，相同 VPC 中的其他資源 (例如 EC2 執行個體) 可以存取該資料庫執行個體，但 VPC 以外的資源便無法存取該執行個體。

完成教學課程後，在您的 VPC 中，每個可用區域都有一個公有子網路和私有子網路。在可用區域中，EC2 執行個體位於公有子網路中，而資料庫執行個體則可於私有子網路中。

**重要**  
建立 AWS 帳戶無需付費。不過，透過完成本教學課程，您可能會因為使用 AWS 的資源而產生費用。如果不再需要這些資源，您可以在完成教學課程後刪除這些資源。

下圖顯示此教學課程完成時的組態。

![\[EC2 執行個體和 MySQL 資料庫執行個體。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/getting-started-mysql.png)


本教學課程可讓您使用下列其中一種方法來建立資源：

1. 使用 AWS 管理主控台 ‐ [建立 MySQL 資料庫執行個體](#CHAP_GettingStarted.Creating.MySQL)和 [建立 EC2 執行個體](#CHAP_GettingStarted.Creating.MySQL.EC2) 

1. 使用 CloudFormation 建立資料庫執行個體和 EC2 執行個體 ‐ [（選用） 使用 建立 VPC、EC2 執行個體和 MySQL 執行個體 CloudFormation](#CHAP_GettingStarted.CFN.MySQL) 

第一個方法使用**輕鬆建立**，來建立具有 AWS 管理主控台的私有 MySQL 資料庫執行個體。您在這裡僅能指定資料庫引擎類型、資料庫執行個體大小與資料庫執行個體識別符。**輕鬆建立**會使用其他組態選項的預設設定。

改用**標準建立**時，您可以在建立資料庫執行個體時指定更多組態選項。這些選項包括可用性、安全性、備份和維護的設定。若要建立公有資料庫執行個體，您必須使用**標準建立**。如需相關資訊，請參閱[建立 Amazon RDS 資料庫執行個體](USER_CreateDBInstance.md)。

**Topics**
+ [

## 先決條件
](#CHAP_GettingStarted.Prerequisites.MySQL)
+ [

## 建立 EC2 執行個體
](#CHAP_GettingStarted.Creating.MySQL.EC2)
+ [

## 建立 MySQL 資料庫執行個體
](#CHAP_GettingStarted.Creating.MySQL)
+ [

## （選用） 使用 建立 VPC、EC2 執行個體和 MySQL 執行個體 CloudFormation
](#CHAP_GettingStarted.CFN.MySQL)
+ [

## 連接至 MySQL 資料庫執行個體
](#CHAP_GettingStarted.Connecting.MySQL)
+ [

## 刪除 EC2 執行個體和資料庫執行個體
](#CHAP_GettingStarted.Deleting.MySQL)
+ [

## (選用) 刪除使用 CloudFormation 建立的 EC2 執行個體和資料庫執行個體
](#CHAP_GettingStarted.DeletingCFN.MySQL)
+ [

## (選用) 將資料庫執行個體連線至 Lambda 函數
](#CHAP_GettingStarted.ComputeConnect.MySQL)

## 先決條件
<a name="CHAP_GettingStarted.Prerequisites.MySQL"></a>

在開始之前，請先完成下節所含步驟：
+ [註冊 AWS 帳戶](CHAP_SettingUp.md#sign-up-for-aws)
+ [建立具有管理存取權的使用者](CHAP_SettingUp.md#create-an-admin)

## 建立 EC2 執行個體
<a name="CHAP_GettingStarted.Creating.MySQL.EC2"></a>

建立您會用來連線至資料庫的 Amazon EC2 執行個體。

**建立 EC2 執行個體**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)：// 開啟 Amazon EC2 主控台。

1. 在 的右上角 AWS 管理主控台，選擇您要在 AWS 區域 其中建立 EC2 執行個體的 。

1. 選擇 **EC2 儀表板**，然後選擇**啟動執行個體**，如下圖所示。  
![\[EC2 儀表板。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_11.png)

   **啟動執行個體**頁面即開啟。

1. 在**啟動執行個體**頁面中選擇下列設定。

   1. 在 **Name and tags** (名稱與標籤) 下，對於 **Name** (名稱)，輸入 **ec2-database-connect**。

   1. 在**應用程式和作業系統映像 (Amazon Machine Image)** 中，選擇 **Amazon Linux**，然後選擇 **Amazon Linux 2023 AMI**。保留其他選項的預設選擇。  
![\[選擇 Amazon Machine Image。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_12.png)

   1. 在**Instance type** (執行個體類型) 下，選擇 **t2.micro**。

   1. 在 **Key pair (login)** (金鑰對 (登入)) 下，選擇 **Key pair name** (金鑰對名稱)，以使用現有金鑰對。若要為 Amazon EC2 執行個體建立新的金鑰對，請選擇 **Create new key pair** (建立新的金鑰對)，然後使用 **Create key pair** (建立金鑰對) 視窗來建立金鑰對。

      如需有關建立新的金鑰對的詳細資訊，請參閱《Amazon EC2 使用者指南》**中的[建立金鑰對](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/get-set-up-for-amazon-ec2.html#create-a-key-pair)。

   1. 對於**網路設定**中的**允許 SSH 流量**，選擇 EC2 執行個體的 SSH 連線來源。

      如果顯示的 IP 地址對 SSH 連線而言是正確的，您可以選擇 **My IP** (我的 IP)。否則，您可以決定用於使用 Secure Shell (SSH) 連線至 VPC 中 EC2 執行個體的 IP 地址。若要判斷公有 IP 地址，您可以在不同的瀏覽器視窗或索引標籤中使用 [https://checkip.amazonaws.com](https://checkip.amazonaws.com/) 中的服務。IP 地址的範例為 192.0.2.1/32。

       在許多情況下，您可能透過網際網路服務供應商 (ISP) 或是從沒有靜態 IP 地址的防火牆進行連線。若是如此，請務必確定用戶端電腦所使用的 IP 地址範圍。
**警告**  
如果您使用 `0.0.0.0/0` 進行 SSH 存取，則可讓所有 IP 地址使用 SSH 存取您的公有 EC2 執行個體。通常在測試環境中短暫使用此方法是沒有問題的，但在生產環境則不安全。在生產環境中，您應只授權特定 IP 地址或特定範圍的地址可使用 SSH 存取您的 EC2 執行個體。

      下圖顯示**網路設定**區段的範例。  
![\[EC2 執行個體的網路設定。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/EC2_RDS_Connect_NtwkSettings.png)

   1. 讓剩餘區段保留預設值。

   1. 檢閱**摘要**面板中 EC2 執行個體組態的摘要，並在準備就緒時選擇**啟動執行個體**。

1. 在**啟動狀態**頁面上，記下新的 EC2 執行個體的識別碼，例如：`i-1234567890abcdef0`。  
![\[啟動狀態頁面上的 EC2 執行個體識別符。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/getting-started-ec2-id.png)

1. 選擇 EC2 執行個體識別符，以開啟 EC2 執行個體清單，然後選取您的 EC2 執行個體。

1. 在**詳細資訊**索引標籤中，請記下以下值，當您使用 SSH 進行連線時需要這些值：

   1. 在**執行個體摘要**中，記下**公用 IPv4 DNS** 的值。  
![\[執行個體頁面的詳細資訊索引標籤上的 EC2 公用 DNS 名稱。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/easy-create-ec2-public-dns.png)

   1. 在**執行個體詳細資訊**中，記下**金鑰對名稱**的值。  
![\[執行個體頁面的詳細資訊索引標籤上的 EC2 金鑰對名稱。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/easy-create-ec2-key-pair.png)

1. 請等待 EC2 執行個體的**執行個體狀態**為**執行中**，然後再繼續動作。

## 建立 MySQL 資料庫執行個體
<a name="CHAP_GettingStarted.Creating.MySQL"></a>

Amazon RDS 的基本建置組塊為資料庫執行個體。這是您執行 MySQL 資料庫的環境。

於此範例中，您使用**輕鬆建立**來建立執行 MySQL 資料庫引擎、資料庫執行個體類別為 db.t3.micro 的資料庫執行個體。

**如要以 Easy create (輕鬆建立) 來建立 MySQL 資料庫執行個體**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)：// 開啟 Amazon RDS 主控台。

1. 在 Amazon RDS 主控台的右上角，選擇 AWS 區域 您先前用於 EC2 執行個體的 。

1. 在導覽窗格中，選擇 **Databases (資料庫)**。

1. 選擇 **Create database (建立資料庫)**，並確定選擇 **Easy Create (輕鬆建立)**。  
![\[輕鬆建立選項。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/easy-create-option.png)

1. 在 **Configuration (組態)**，選擇 **MySQL (MySQL)**。

1. 在 **DB instance size** (資料庫執行個體大小) 中，選擇 **Free tier** (免費方案)。免費方案帳戶的**免費方案**隨即顯示。付費方案帳戶的**沙盒**隨即顯示。

1. 對於 **DB instance identifier** (資料庫執行個體識別碼)，請輸入 **database-test1**。

1. 在**主要使用者名稱**，輸入主要使用者的名稱，或保留預設名稱。

   **Create database** (建立資料庫) 頁面看起來應該會如下圖所示。若為免費方案帳戶，**免費方案**隨即顯示。若為付費方案帳戶，**沙盒**隨即顯示。  
![\[建立資料庫頁面。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/easy-create-mysql.png)

1. 如要將自動產生的主要密碼用在資料庫執行個體，請選取**自動產生密碼**。

   如要輸入您的主要密碼，請確認清除**自動產生密碼**方塊，然後在**主要密碼**和**確認密碼**中輸入相同的密碼。

1. 若要設定與先前建立之 EC2 執行個體的連線，請開啟**設定 EC2 連線 - *選用***。

   選取**連線至 EC2 運算資源**。選擇先前建立的 EC2 執行個體。  
![\[設定 EC2 連線選項。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/EC2_RDS_Setup_Conn-EasyCreate.png)

1. (選用) 開啟 **View default settings for Easy create** (檢視輕鬆建立的預設設定)。  
![\[輕鬆建立預設設定。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/easy-create-view-default-mysql.png)

   您可以檢查與 **Easy Create** (輕鬆建立) 一起使用的預設設定。**資料庫建立後可編輯**欄顯示您可以在資料庫建立後變更的選項。
   + 若該欄的設定為**否**，而您想要其他設定，可以使用**標準建立**來建立資料庫執行個體。
   + 若該欄的設定為**是**，而您想要其他設定，可以使用**標準建立**來建立資料庫執行個體，或在建立後修改該資料庫執行個體的設定。

1. 選擇**建立資料庫**。

   若要檢視資料庫執行個體的主要使用者名稱和密碼，請選擇 **View credential details (檢視登入資料詳細資訊)**。

   您可以使用出現的使用者名稱和密碼，來以主要使用者的身分連線至資料庫執行個體。
**重要**  
您無法再次檢視主要使用者密碼。如果您沒有記錄下來，您可能需要進行變更。  
如果您需要在資料庫執行個體可供使用後變更主要使用者密碼，您可以將資料庫執行個體修改為這麼做。如需修改 資料庫執行個體的詳細資訊，請參閱[修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

1. **資料庫**清單中，選擇新 MySQL 資料庫執行個體的名稱，以顯示其詳細資訊。

   在其可供使用之前，資料庫執行個體會處於**建立中**狀態。  
![\[資料庫執行個體詳細資訊。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/MySQL-Launch06.png)

   狀態變更為 **Available** (可用) 時，您便能連線至資料庫執行個體。視資料庫執行個體類別和儲存體數量而定，可能需要最多 20 分鐘的時間，新執行個體才會可用。

## （選用） 使用 建立 VPC、EC2 執行個體和 MySQL 執行個體 CloudFormation
<a name="CHAP_GettingStarted.CFN.MySQL"></a>

您可以使用 CloudFormation 將基礎設施視為程式碼來佈建 AWS 資源，而不是使用 主控台來建立 VPC、EC2 執行個體和 MySQL 執行個體。為了協助您將 AWS 資源組織成較小且更易於管理的單位，您可以使用 CloudFormation 巢狀堆疊功能。如需詳細資訊，請參閱[在 CloudFormation 主控台上建立堆疊](https://docs.aws.amazon.com//AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html)和[使用巢狀堆疊](https://docs.aws.amazon.com//AWSCloudFormation/latest/UserGuide/using-cfn-nested-stacks.html)。

**重要**  
CloudFormation 是免費的，但 CloudFormation 建立的資源是即時的。您需要支付這些資源的標準使用費，直到將其終止為止。如需詳細資訊，請參閱 [RDS for MySQL 定價](https://aws.amazon.com//rds/mysql/pricing)。

若要使用 CloudFormation 主控台建立資源，請完成下列步驟：
+ 下載 CloudFormation 範本
+ 使用 CloudFormation 設定資源

### 下載 CloudFormation 範本
<a name="CHAP_GettingStarted.CFN.MySQL.Step1"></a>

CloudFormation 範本是 JSON 或 YAML 文字檔案，其中包含您要在堆疊中建立之資源的相關組態資訊。此範本也會為您以及 RDS 執行個體建立 VPC 和堡壘主機。

若要下載範本檔案，請開啟以下連結 [MySQL CloudFormation 範本](https://github.com/aws-ia/cfn-ps-amazon-rds/blob/main/templates/rds-mysql-main.template.yaml)。

在 Github 頁面中，按一下*下載原始檔案*按鈕，即可儲存範本 YAML 檔案。

### 使用 CloudFormation 設定資源
<a name="CHAP_GettingStarted.CFN.MySQL.Step2"></a>

**注意**  
開始此程序之前，請確定 AWS 帳戶中有 EC2 執行個體的金鑰對。如需詳細資訊，請參閱 [Amazon EC2 金鑰對與 Linux 執行個體](https://docs.aws.amazon.com//AWSEC2/latest/UserGuide/ec2-key-pairs.html)。

使用 CloudFormation 範本時，您必須選取正確的參數，以確保您的資源已正確建立。請遵循下列步驟：

1. 登入 AWS 管理主控台 並在 https：//[https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/) 開啟 CloudFormation 主控台。

1. 選擇 **Create Stack** (建立堆疊)。

1. 在 [指定範本] 區段中，選取**從電腦上傳範本檔案**，然後選擇**下一步**。

1. 在**指定堆疊詳細資訊**頁面，設定下列參數：

   1. 將**堆疊名稱**設定為 **MySQLTestStack**。

   1. 在**參數**下，選取三個可用區域來設定**可用區域**。

   1. 在 **Linux 堡壘主機組態**下，針對**金鑰名稱**，選取金鑰對以登入 EC2 執行個體。

   1. 在 **Linux 堡壘主機組態**設定中，將**允許的 IP 範圍**設定為 IP 位址。若要使用 Secure Shell (SSH) 連線到 VPC 中的 EC2 執行個體，請使用位於 [https://checkip.amazonaws.com](https://checkip.amazonaws.com) 的服務來判斷公有 IP 位址。IP 地址的範例為 192.0.2.1/32。
**警告**  
如果您使用 `0.0.0.0/0` 進行 SSH 存取，則可讓所有 IP 地址使用 SSH 存取您的公有 EC2 執行個體。通常在測試環境中短暫使用此方法是沒有問題的，但在生產環境則不安全。在生產環境中，您應只授權特定 IP 地址或特定範圍的地址可使用 SSH 存取您的 EC2 執行個體。

   1. 在**資料庫一般組態**下，將**資料庫執行個體類別**設為 **db.t3.micro**。

   1. 將**資料庫名稱**設為 **database-test1**。

   1. 對於**資料庫主要使用者名稱**，輸入主要使用者的名稱。

   1. 在本教學課程中，將**使用 Secrets Manager 管理資料庫主要使用者密碼**設為 `false`。

   1. 針對**資料庫密碼**，設定您選擇的密碼。請記住此密碼，以供教學課程中的後續步驟使用。

   1. 在**資料庫儲存組態**下，將**資料庫儲存類型**設定為 **gp2**。

   1. 在**資料庫監控組態**下，將**啟用 RDS Performance Insights** 設為 false。

   1. 保留所有其他設定作為預設值。按一下**下一步**以繼續。

1. 在**設定堆疊選項**頁面中，保留所有預設選項。按一下**下一步**以繼續。

1. 在**檢閱堆疊**頁面中，在檢查資料庫和 Linux 堡壘主機選項後選取**提交**。

堆疊建立程序完成後，請檢視名稱為 *BastionStack* 和 *RDSNS* 的堆疊，以記下連線至資料庫所需的資訊。如需詳細資訊，請參閱[在 上檢視 CloudFormation 堆疊資料和資源 AWS 管理主控台](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-view-stack-data-resources.html)。

## 連接至 MySQL 資料庫執行個體
<a name="CHAP_GettingStarted.Connecting.MySQL"></a>

您可以使用任何標準 SQL 用戶端應用程式來連線至資料庫執行個體。在此範例中，您會使用 mysql 命令列用戶端來連線至 MySQL 資料庫執行個體。

**連線至 MySQL 資料庫執行個體**

1. 尋找資料庫執行個體的端點 (DNS 名稱) 和連接埠號碼。

   1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)：// 開啟 Amazon RDS 主控台。

   1. 在 Amazon RDS 主控台的右上角，選擇資料庫執行個體 AWS 區域 的 。

   1. 在導覽窗格中，選擇 **Databases** (資料庫)。

   1. 選擇 MySQL 資料庫執行個體名稱以顯示其詳細資訊。

   1. 在 **Connectivity & security (連線能力和安全性)** 索引標籤上，複製該端點。另外，請記下連接埠號碼。您需要同時有端點和連接埠號碼，才能連線至資料庫執行個體。  
![\[連線至 MySQL 資料庫執行個體。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/MySQLConnect1.png)

1. 請遵循《Amazon EC2 使用者指南》**中的[連線至 Linux 執行個體](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstances.html)步驟，以連線您先前所建的 EC2 執行個體。

   建議您使用 SSH 連線至 EC2 執行個體。如果 SSH 用戶端公用程式已安裝在 Windows、Linux 或 Mac 上，您可以使用下列命令格式連線至執行個體：

   ```
   ssh -i location_of_pem_file ec2-user@ec2-instance-public-dns-name
   ```

   例如，假設 `ec2-database-connect-key-pair.pem` 存放在 Linux 上 的 `/dir1` 中，而 EC2 執行個體的公用 IPv4 DNS 為 `ec2-12-345-678-90.compute-1.amazonaws.com`。您的 SSH 命令看起來如下所示：

   ```
   ssh -i /dir1/ec2-database-connect-key-pair.pem ec2-user@ec2-12-345-678-90.compute-1.amazonaws.com
   ```

1. 更新 EC2 執行個體上的軟體，以取得最新的錯誤修正和安全性更新。若要執行此操作，請使用以下命令。
**注意**  
`-y` 選項不要求確認就會安裝更新。若要先檢查更新再安裝，請省略此選項。

   ```
   sudo dnf update -y
   ```

1.  若要在 Amazon Linux 2023 上安裝 MariaDB 的 mysql 命令列用戶端，請執行下列命令：

   ```
   sudo dnf install mariadb105
   ```

1. 連線到 MySQL 資料庫執行個體。例如，輸入下列命令。此動作可讓您使用 MySQL 用戶端，連線至 MySQL 資料庫執行個體。

   取代您用於 `endpoint` 的資料庫執行個體端點 (DNS 名稱)，以及取代您用於 `admin` 的主要使用者名稱。提示您輸入密碼時，請提供您使用的主要密碼。

   ```
   mysql -h endpoint -P 3306 -u admin -p
   ```

   輸入使用者的密碼之後，您應該會看到類似如下的輸出。

   ```
   Welcome to the MariaDB monitor.  Commands end with ; or \g.
   Your MySQL connection id is 3082
   Server version: 8.0.28 Source distribution
   
   Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
   
   Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
   
   MySQL [(none)]>
   ```

   如需連線至 MySQL 資料庫執行個體的詳細資訊，請參閱[連線至您的 MySQL 資料庫執行個體](USER_ConnectToInstance.md)。如果您無法連線至資料庫執行個體，請參閱[無法連線至 Amazon RDS 資料庫執行個體](CHAP_Troubleshooting.md#CHAP_Troubleshooting.Connecting)。

   基於安全考量，最佳做法是使用加密連線。僅當用戶端和伺服器位於同一 VPC 且網路受信任時，才使用未加密的 MySQL 連線。如需使用加密連線的詳細資訊，請參閱 [使用 SSL/TLS 從 MySQL 命令列用戶端連線至 Amazon RDS 上的 MySQL 資料庫執行個體 (加密)](USER_ConnectToInstanceSSL.CLI.md)。

1. 執行 SQL 命令。

   例如，下列 SQL 命令會顯示目前的日期和時間：

   ```
   SELECT CURRENT_TIMESTAMP;
   ```

## 刪除 EC2 執行個體和資料庫執行個體
<a name="CHAP_GettingStarted.Deleting.MySQL"></a>

在連線至您已建立的範例 EC2 執行個體與資料庫執行個體，並探索這些執行個體之後，請將其刪除，才不會再對您收費。

如果您使用 CloudFormation 建立資源，請略過此步驟並前往下一個步驟。

**刪除 EC2 執行個體**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)：// 開啟 Amazon EC2 主控台。

1. 在導覽窗格中，選擇**執行個體**。

1. 選取 EC2 執行個體，並選取**執行個體狀態、終止執行個體**。

1. 出現確認提示時，請選擇 **Terminate (終止)**。

如需刪除 EC2 執行個體的詳細資訊，請參閱《Amazon EC2 使用者指南》**中的[終止執行個體](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/terminating-instances.html)。

**刪除不含最終資料庫快照的資料庫執行個體**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)：// 開啟 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Databases** (資料庫)。

1. 選擇想要刪除的資料庫執行個體。

1. 對於 **Actions** (動作)，請選擇 **Delete** (刪除)。

1. 清除**是否建立最後的快照？**和**保留自動備份**。

1. 完成確認，然後選擇**刪除**。

## (選用) 刪除使用 CloudFormation 建立的 EC2 執行個體和資料庫執行個體
<a name="CHAP_GettingStarted.DeletingCFN.MySQL"></a>

如果您使用 CloudFormation 來建立資源，請在連線至 後刪除 CloudFormation 堆疊，並探索範例 EC2 執行個體和資料庫執行個體，因此您不再需要支付這些堆疊的費用。

**刪除 CloudFormation 資源**

1. 開啟 CloudFormation 主控台。

1. 在 CloudFormation 主控台的**堆疊**頁面，選取根堆疊 (不含名稱 VPCStack、BastionStack 或 RDSNS 的堆疊)。

1. 選擇 **刪除**。

1. 出現確認提示時，請選取**刪除堆疊**。

如需在 CloudFormation 中刪除堆疊的詳細資訊，請參閱*AWS CloudFormation 《 使用者指南*》中的[刪除 CloudFormation 主控台上的堆疊](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-delete-stack.html)。

## (選用) 將資料庫執行個體連線至 Lambda 函數
<a name="CHAP_GettingStarted.ComputeConnect.MySQL"></a>

您也可以將 RDS for MySQL 資料庫執行個體連線至 Lambda 無伺服器運算資源。Lambda 函數允許您在沒有佈建或管理基礎設施的情況下執行程式碼。Lambda 函數還允許您自動回應任何規模的程式碼執行請求，從每天十幾個事件到每秒數百個事件。如需更多詳細資訊，請參閱 [自動連線 Lambda 函數和資料庫執行個體 ](lambda-rds-connect.md)。

# 建立並連線至 Oracle 資料庫執行個體
<a name="CHAP_GettingStarted.CreatingConnecting.Oracle"></a>

本教學課程會建立 EC2 執行個體和 RDS for Oracle 資料庫執行個體。本教學課程說明如何使用標準 Oracle 用戶端，從 EC2 執行個體存取資料庫執行個體。本教學課程為最佳實務，會在虛擬私有雲端 (VPC) 中建立私有資料庫執行個體。在多數情況下，相同 VPC 中的其他資源 (例如 EC2 執行個體) 可以存取該資料庫執行個體，但 VPC 以外的資源便無法存取該執行個體。

完成教學課程後，在您的 VPC 中，每個可用區域都有一個公有子網路和私有子網路。在可用區域中，EC2 執行個體位於公有子網路中，而資料庫執行個體則可於私有子網路中。

**重要**  
建立 AWS 帳戶無需付費。不過，透過完成本教學課程，您可能會因為使用 AWS 的資源而產生費用。如果不再需要這些資源，您可以在完成教學課程後刪除這些資源。

下圖顯示此教學課程完成時的組態。

![\[EC2 執行個體和 Oracle 資料庫執行個體。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/getting-started-oracle.png)


本教學課程可讓您使用下列其中一種方法來建立資源：

1. 使用 AWS 管理主控台 ‐ [步驟 2：建立 Oracle 資料庫執行個體](#CHAP_GettingStarted.Creating.Oracle)和 [步驟 1：建立 EC2 執行個體](#CHAP_GettingStarted.Creating.Oracle.EC2) 

1. 使用 CloudFormation 建立資料庫執行個體和 EC2 執行個體 ‐ [（選用） 使用 建立 VPC、EC2 執行個體和 Oracle 資料庫執行個體 CloudFormation](#CHAP_GettingStarted.CFN.Oracle) 

第一個方法使用**輕鬆建立**，來建立具有 AWS 管理主控台的私有 Oracle 資料庫執行個體。您在這裡僅能指定資料庫引擎類型、資料庫執行個體大小與資料庫執行個體識別符。**輕鬆建立**會使用其他組態選項的預設設定。

改用**標準建立**時，您可以在建立資料庫執行個體時指定更多組態選項。這些選項包括可用性、安全性、備份和維護的設定。若要建立公有資料庫執行個體，您必須使用**標準建立**。如需相關資訊，請參閱[建立 Amazon RDS 資料庫執行個體](USER_CreateDBInstance.md)。

**Topics**
+ [

## 先決條件
](#CHAP_GettingStarted.Prerequisites.Oracle)
+ [

## 步驟 1：建立 EC2 執行個體
](#CHAP_GettingStarted.Creating.Oracle.EC2)
+ [

## 步驟 2：建立 Oracle 資料庫執行個體
](#CHAP_GettingStarted.Creating.Oracle)
+ [

## （選用） 使用 建立 VPC、EC2 執行個體和 Oracle 資料庫執行個體 CloudFormation
](#CHAP_GettingStarted.CFN.Oracle)
+ [

## 步驟 3：將您的 SQL 連線至 Oracle 資料庫執行個體
](#CHAP_GettingStarted.Connecting.Oracle)
+ [

## 步驟 4：刪除 EC2 執行個體和資料庫執行個體
](#CHAP_GettingStarted.Deleting.Oracle)
+ [

## (選用) 刪除使用 CloudFormation 建立的 EC2 執行個體和資料庫執行個體
](#CHAP_GettingStarted.DeletingCFN.Oracle)
+ [

## (選用) 將資料庫執行個體連線至 Lambda 函數
](#CHAP_GettingStarted.ComputeConnect.Oracle)

## 先決條件
<a name="CHAP_GettingStarted.Prerequisites.Oracle"></a>

在開始之前，請先完成下節所含步驟：
+ [註冊 AWS 帳戶](CHAP_SettingUp.md#sign-up-for-aws)
+ [建立具有管理存取權的使用者](CHAP_SettingUp.md#create-an-admin)

## 步驟 1：建立 EC2 執行個體
<a name="CHAP_GettingStarted.Creating.Oracle.EC2"></a>

建立您會用來連線至資料庫的 Amazon EC2 執行個體。

**建立 EC2 執行個體**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)：// 開啟 Amazon EC2 主控台。

1. 在 的右上角 AWS 管理主控台，選擇您要在 AWS 區域 其中建立 EC2 執行個體的 。

1. 選擇 **EC2 儀表板**，然後選擇**啟動執行個體**，如下圖所示。  
![\[EC2 儀表板。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_11.png)

   **啟動執行個體**頁面即開啟。

1. 在**啟動執行個體**頁面中選擇下列設定。

   1. 在 **Name and tags** (名稱與標籤) 下，對於 **Name** (名稱)，輸入 **ec2-database-connect**。

   1. 在**應用程式和作業系統映像 (Amazon Machine Image)** 中，選擇 **Amazon Linux**，然後選擇 **Amazon Linux 2023 AMI**。保留其他選項的預設選擇。  
![\[選擇 Amazon Machine Image。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_12.png)

   1. 在**Instance type** (執行個體類型) 下，選擇 **t2.micro**。

   1. 在 **Key pair (login)** (金鑰對 (登入)) 下，選擇 **Key pair name** (金鑰對名稱)，以使用現有金鑰對。若要為 Amazon EC2 執行個體建立新的金鑰對，請選擇 **Create new key pair** (建立新的金鑰對)，然後使用 **Create key pair** (建立金鑰對) 視窗來建立金鑰對。

      如需有關建立新的金鑰對的詳細資訊，請參閱《Amazon EC2 使用者指南》**中的[建立金鑰對](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/get-set-up-for-amazon-ec2.html#create-a-key-pair)。

   1. 對於**網路設定**中的**允許 SSH 流量**，選擇 EC2 執行個體的 SSH 連線來源。

      如果顯示的 IP 地址對 SSH 連線而言是正確的，您可以選擇 **My IP** (我的 IP)。否則，您可以決定用於使用 Secure Shell (SSH) 連線至 VPC 中 EC2 執行個體的 IP 地址。若要判斷公有 IP 地址，您可以在不同的瀏覽器視窗或索引標籤中使用 [https://checkip.amazonaws.com](https://checkip.amazonaws.com/) 中的服務。IP 地址的範例為 192.0.2.1/32。

       在許多情況下，您可能透過網際網路服務供應商 (ISP) 或是從沒有靜態 IP 地址的防火牆進行連線。若是如此，請務必確定用戶端電腦所使用的 IP 地址範圍。
**警告**  
如果您使用 `0.0.0.0/0` 進行 SSH 存取，則可讓所有 IP 地址使用 SSH 存取您的公有 EC2 執行個體。通常在測試環境中短暫使用此方法是沒有問題的，但在生產環境則不安全。在生產環境中，您應只授權特定 IP 地址或特定範圍的地址可使用 SSH 存取您的 EC2 執行個體。

      下圖顯示**網路設定**區段的範例。  
![\[EC2 執行個體的網路設定。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/EC2_RDS_Connect_NtwkSettings.png)

   1. 讓剩餘區段保留預設值。

   1. 檢閱**摘要**面板中 EC2 執行個體組態的摘要，並在準備就緒時選擇**啟動執行個體**。

1. 在**啟動狀態**頁面上，記下新的 EC2 執行個體的識別碼，例如：`i-1234567890abcdef0`。  
![\[啟動狀態頁面上的 EC2 執行個體識別符。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/getting-started-ec2-id.png)

1. 選擇 EC2 執行個體識別符，以開啟 EC2 執行個體清單，然後選取您的 EC2 執行個體。

1. 在**詳細資訊**索引標籤中，請記下以下值，當您使用 SSH 進行連線時需要這些值：

   1. 在**執行個體摘要**中，記下**公用 IPv4 DNS** 的值。  
![\[執行個體頁面的詳細資訊索引標籤上的 EC2 公用 DNS 名稱。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/easy-create-ec2-public-dns.png)

   1. 在**執行個體詳細資訊**中，記下**金鑰對名稱**的值。  
![\[執行個體頁面的詳細資訊索引標籤上的 EC2 金鑰對名稱。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/easy-create-ec2-key-pair.png)

1. 請等待 EC2 執行個體的**執行個體狀態**為**執行中**，然後再繼續動作。

## 步驟 2：建立 Oracle 資料庫執行個體
<a name="CHAP_GettingStarted.Creating.Oracle"></a>

Amazon RDS 的基本建置組塊為資料庫執行個體。這是您執行 Oracle 資料庫的環境。

在此範例中，您使用**輕鬆建立**來建立執行 Oracle 資料庫引擎、資料庫執行個體類別為 db.m5.large 的資料庫執行個體。

**使用「輕鬆建立」來建立 Oracle 資料庫執行個體**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)：// 開啟 Amazon RDS 主控台。

1. 在 Amazon RDS 主控台的右上角，選擇要在 AWS 區域 其中建立資料庫執行個體的 。

1. 在導覽窗格中，選擇 **Databases (資料庫)**。

1. 選擇 **Create database (建立資料庫)**，並確定選擇 **Easy Create (輕鬆建立)**。  
![\[輕鬆建立選項。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/easy-create-option.png)

1. 在 **Configuration (組態)**，選擇 **Oracle (Oracle)**。

1. 在 **DB instance size** (資料庫執行個體大小) 中，選擇 **Dev/Test** (開發/測試)。

1. 對於 **DB instance identifier** (資料庫執行個體識別碼)，請輸入 **database-test1**。

1. 在**主要使用者名稱**，輸入主要使用者的名稱，或保留預設名稱。

   **Create database** (建立資料庫) 頁面看起來應該會如下圖所示。  
![\[建立資料庫頁面。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/easy-create-oracle2.png)

1. 如要將自動產生的主要密碼用在資料庫執行個體，請選取**自動產生密碼**。

   如要輸入您的主要密碼，請確認清除**自動產生密碼**方塊，然後在**主要密碼**和**確認密碼**中輸入相同的密碼。

1. 若要設定與先前建立之 EC2 執行個體的連線，請開啟**設定 EC2 連線 - *選用***。

   選取**連線至 EC2 運算資源**。選擇先前建立的 EC2 執行個體。  
![\[設定 EC2 連線選項。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/EC2_RDS_Setup_Conn-EasyCreate.png)

1. 開啟**檢視輕鬆建立的預設設定**。  
![\[輕鬆建立預設設定。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/easy-create-view-default-Oracle.png)

   您可以檢查與 **Easy Create** (輕鬆建立) 一起使用的預設設定。**資料庫建立後可編輯**欄顯示您可以在資料庫建立後變更的選項。
   + 若該欄的設定為**否**，而您想要其他設定，可以使用**標準建立**來建立資料庫執行個體。
   + 若該欄的設定為**是**，而您想要其他設定，可以使用**標準建立**來建立資料庫執行個體，或在建立後修改該資料庫執行個體的設定。

1. 選擇**建立資料庫**。

   若要檢視資料庫執行個體的主要使用者名稱和密碼，請選擇 **View credential details (檢視登入資料詳細資訊)**。

   您可以使用出現的使用者名稱和密碼，來以主要使用者的身分連線至資料庫執行個體。
**重要**  
您無法再次檢視主要使用者密碼。如果您沒有記錄下來，您可能需要進行變更。  
如果您需要在資料庫執行個體可供使用後變更主要使用者密碼，您可以將資料庫執行個體修改為這麼做。如需修改 資料庫執行個體的詳細資訊，請參閱[修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

1. 在**資料庫**清單中，選擇新 Oracle 資料庫執行個體的名稱，以顯示其詳細資訊。

   在其可供使用之前，資料庫執行個體會處於**建立中**狀態。  
![\[資料庫執行個體詳細資訊。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/Oracle-Launch05.png)

   狀態變更為 **Available** (可用) 時，您便能連線至資料庫執行個體。視資料庫執行個體類別和儲存體數量而定，可能需要最多 20 分鐘的時間，新執行個體才會可用。建立資料庫執行個體時，您可以繼續下一步並建立 EC2 執行個體。

## （選用） 使用 建立 VPC、EC2 執行個體和 Oracle 資料庫執行個體 CloudFormation
<a name="CHAP_GettingStarted.CFN.Oracle"></a>

您可以使用 CloudFormation 將基礎設施視為程式碼來佈建 AWS 資源，而不是使用 主控台來建立 VPC、EC2 執行個體和 Oracle 資料庫執行個體。為了協助您將 AWS 資源組織成較小且更易於管理的單位，您可以使用 CloudFormation 巢狀堆疊功能。如需詳細資訊，請參閱[在 CloudFormation 主控台上建立堆疊](https://docs.aws.amazon.com//AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html)和[使用巢狀堆疊](https://docs.aws.amazon.com//AWSCloudFormation/latest/UserGuide/using-cfn-nested-stacks.html)。

**重要**  
CloudFormation 是免費的，但 CloudFormation 建立的資源是即時的。您需要支付這些資源的標準使用費，直到將其終止為止。如需詳細資訊，請參閱 [RDS for Oracle 定價](https://aws.amazon.com//rds/oracle/pricing)。

若要使用 CloudFormation 主控台建立資源，請完成下列步驟：
+ 步驟 1：下載 CloudFormation 範本
+ 步驟 2：使用 CloudFormation 設定資源

### 下載 CloudFormation 範本
<a name="CHAP_GettingStarted.CFN.Oracle.Step1"></a>

CloudFormation 範本是 JSON 或 YAML 文字檔案，其中包含您要在堆疊中建立之資源的相關組態資訊。此範本也會為您以及 RDS 執行個體建立 VPC 和堡壘主機。

若要下載範本檔案，請開啟以下連結 [Oracle CloudFormation 範本](https://github.com/aws-ia/cfn-ps-amazon-rds/blob/main/templates/rds-oracle-main.template.yaml)。

在 Github 頁面中，按一下*下載原始檔案*按鈕，即可儲存範本 YAML 檔案。

### 使用 CloudFormation 設定資源
<a name="CHAP_GettingStarted.CFN.Oracle.Step2"></a>

**注意**  
開始此程序之前，請確定 AWS 帳戶中有 EC2 執行個體的金鑰對。如需詳細資訊，請參閱 [Amazon EC2 金鑰對與 Linux 執行個體](https://docs.aws.amazon.com//AWSEC2/latest/UserGuide/ec2-key-pairs.html)。

使用 CloudFormation 範本時，您必須選取正確的參數，以確保您的資源已正確建立。請遵循下列步驟：

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/) 的 CloudFormation 主控台。

1. 選擇 **Create Stack** (建立堆疊)。

1. 在 [指定範本] 區段中，選取**從電腦上傳範本檔案**，然後選擇**下一步**。

1. 在**指定堆疊詳細資訊**頁面，設定下列參數：

   1. 將**堆疊名稱**設定為 **OracleTestStack**。

   1. 在**參數**下，選取三個可用區域來設定**可用區域**。

   1. 在 **Linux 堡壘主機組態**下，針對**金鑰名稱**，選取金鑰對以登入 EC2 執行個體。

   1. 在 **Linux 堡壘主機組態**設定中，將**允許的 IP 範圍**設定為 IP 位址。若要使用 Secure Shell (SSH) 連線到 VPC 中的 EC2 執行個體，請使用位於 [https://checkip.amazonaws.com](https://checkip.amazonaws.com) 的服務來判斷公有 IP 位址。IP 地址的範例為 192.0.2.1/32。
**警告**  
如果您使用 `0.0.0.0/0` 進行 SSH 存取，則可讓所有 IP 地址使用 SSH 存取您的公有 EC2 執行個體。通常在測試環境中短暫使用此方法是沒有問題的，但在生產環境則不安全。在生產環境中，您應只授權特定 IP 地址或特定範圍的地址可使用 SSH 存取您的 EC2 執行個體。

   1. 在**資料庫一般組態**下，將**資料庫執行個體類別**設為 **db.t3.micro**。

   1. 將**資料庫名稱**設為 **database-test1**。

   1. 對於**資料庫主要使用者名稱**，輸入主要使用者的名稱。

   1. 在本教學課程中，將**使用 Secrets Manager 管理資料庫主要使用者密碼**設為 `false`。

   1. 針對**資料庫密碼**，設定您選擇的密碼。請記住此密碼，以供教學課程中的後續步驟使用。

   1. 在**資料庫儲存組態**下，將**資料庫儲存類型**設定為 **gp2**。

   1. 在**資料庫監控組態**下，將**啟用 RDS Performance Insights** 設為 false。

   1. 保留所有其他設定作為預設值。按一下**下一步**以繼續。

1. 在**設定堆疊選項**頁面中，保留所有預設選項。按一下**下一步**以繼續。

1. 在**檢閱堆疊**頁面中，在檢查資料庫和 Linux 堡壘主機選項後選取**提交**。

堆疊建立程序完成後，請檢視名稱為 *BastionStack* 和 *RDSNS* 的堆疊，以記下連線至資料庫所需的資訊。如需詳細資訊，請參閱[在 上檢視 CloudFormation 堆疊資料和資源 AWS 管理主控台](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-view-stack-data-resources.html)。

## 步驟 3：將您的 SQL 連線至 Oracle 資料庫執行個體
<a name="CHAP_GettingStarted.Connecting.Oracle"></a>

您可以使用任何標準 SQL 用戶端應用程式來連線至您的資料庫執行個體。在此範例中，您會使用 Oracle 命令列用戶端來連線至 Oracle 資料庫執行個體。

**連線至 Oracle 資料庫執行個體**

1. 尋找資料庫執行個體的端點 (DNS 名稱) 和連接埠號碼。

   1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)：// 開啟 Amazon RDS 主控台。

   1. 在 Amazon RDS 主控台的右上角，選擇資料庫執行個體的 AWS 區域 。

   1. 在導覽窗格中，選擇 **Databases** (資料庫)。

   1. 選擇 Oracle 資料庫執行個體名稱以顯示其詳細資訊。

   1. 在 **Connectivity & security (連線能力和安全性)** 索引標籤上，複製該端點。另外，請記下連接埠號碼。您需要同時有端點和連接埠號碼，才能連線至資料庫執行個體。  
![\[連線至 Oracle 資料庫執行個體。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/OracleConnect1.png)

1. 請遵循《Amazon EC2 使用者指南》**中的[連線至 Linux 執行個體](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstances.html)步驟，以連線您先前所建的 EC2 執行個體。

   建議您使用 SSH 連線至 EC2 執行個體。如果 SSH 用戶端公用程式已安裝在 Windows、Linux 或 Mac 上，您可以使用下列命令格式連線至執行個體：

   ```
   ssh -i location_of_pem_file ec2-user@ec2-instance-public-dns-name
   ```

   例如，假設 `ec2-database-connect-key-pair.pem` 存放在 Linux 上 的 `/dir1` 中，而 EC2 執行個體的公用 IPv4 DNS 為 `ec2-12-345-678-90.compute-1.amazonaws.com`。您的 SSH 命令看起來如下所示：

   ```
   ssh -i /dir1/ec2-database-connect-key-pair.pem ec2-user@ec2-12-345-678-90.compute-1.amazonaws.com
   ```

1. 更新 EC2 執行個體上的軟體，以取得最新的錯誤修正和安全性更新。為此，請使用下列命令。
**注意**  
`-y` 選項不要求確認就會安裝更新。若要先檢查更新再安裝，請省略此選項。

   ```
   sudo dnf update -y
   ```

1. 在 Web 瀏覽器中，前往 [https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html](https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html)。

1. 如需出現在網頁上的最新資料庫版本，請複製即時用戶端基本套件和 SQL\$1Plus 套件的 .rpm 連結 (不是 .zip 連結)。例如，下列是針對 Oracle Database 21.9 版的連結：
   + https://download.oracle.com/otn\$1software/linux/instantclient/219000/oracle-instantclient-basic-21.9.0.0.0-1.el8.x86\$164.rpm
   + https://download.oracle.com/otn\$1software/linux/instantclient/219000/oracle-instantclient-sqlplus-21.9.0.0.0-1.el8.x86\$164.rpm

1. 在您的 SSH 工作階段中，執行 `wget` 命令，從您在上一個步驟中取得的連結下載 .rpm 檔案。下列範例會下載 Oracle Database 21.9 版的 .rpm 檔案：

   ```
   wget https://download.oracle.com/otn_software/linux/instantclient/219000/oracle-instantclient-basic-21.9.0.0.0-1.el8.x86_64.rpm
   wget https://download.oracle.com/otn_software/linux/instantclient/219000/oracle-instantclient-sqlplus-21.9.0.0.0-1.el8.x86_64.rpm
   ```

1. 執行 `dnf` 命令安裝套件，如下所示：

   ```
   sudo dnf install oracle-instantclient-*.rpm
   ```

1. 啟動 SQL\$1Plus，然後連線至 Oracle 資料庫執行個體。例如，輸入下列命令。

   以資料庫執行個體端點 (DNS 名稱)取代 `oracle-db-instance-endpoint`，以主要使用者名稱取代 `admin`。當您針對 Oracle 使用**輕鬆建立**時，資料庫名稱為 `DATABASE`。提示您輸入密碼時，請提供您使用的主要密碼。

   ```
   sqlplus admin@oracle-db-instance-endpoint:1521/DATABASE
   ```

   輸入使用者的密碼之後，您應該會看到類似如下的輸出。

   ```
   SQL*Plus: Release 21.0.0.0.0 - Production on Wed Mar 1 16:41:28 2023
   Version 21.9.0.0.0
   
   Copyright (c) 1982, 2022, Oracle.  All rights reserved.
   
   Enter password: 
   Last Successful login time: Wed Mar 01 2023 16:30:52 +00:00
   
   Connected to:
   Oracle Database 19c Standard Edition 2 Release 19.0.0.0.0 - Production
   Version 19.18.0.0.0
   
   SQL>
   ```

   如需連線至 RDS for Oracle 資料庫執行個體的詳細資訊，請參閱 [連線至 Oracle 資料庫執行個體](USER_ConnectToOracleInstance.md)。如果您無法連線至資料庫執行個體，請參閱[無法連線至 Amazon RDS 資料庫執行個體](CHAP_Troubleshooting.md#CHAP_Troubleshooting.Connecting)。

   基於安全考量，最佳做法是使用加密連線。僅當用戶端和伺服器位於同一 VPC 且網路受信任時，才使用未加密的 Oracle 連線。如需使用加密連線的詳細資訊，請參閱 [保護 Oracle 資料庫執行個體連線的安全](Oracle.Concepts.RestrictedDBAPrivileges.md)。

1. 執行 SQL 命令。

   例如，下列 SQL 命令會顯示目前的日期：

   ```
   SELECT SYSDATE FROM DUAL;
   ```

## 步驟 4：刪除 EC2 執行個體和資料庫執行個體
<a name="CHAP_GettingStarted.Deleting.Oracle"></a>

在連線至您已建立的範例 EC2 執行個體與資料庫執行個體，並探索這些執行個體之後，請將其刪除，才不會再對您收費。

如果您使用 CloudFormation 建立資源，請略過此步驟並前往下一個步驟。

**刪除 EC2 執行個體**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)：// 開啟 Amazon EC2 主控台。

1. 在導覽窗格中，選擇**執行個體**。

1. 選取 EC2 執行個體，並選取**執行個體狀態、終止執行個體**。

1. 出現確認提示時，請選擇 **Terminate (終止)**。

如需刪除 EC2 執行個體的詳細資訊，請參閱《Amazon EC2 使用者指南》**中的[終止執行個體](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/terminating-instances.html)。

**刪除不含最終資料庫快照的資料庫執行個體**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)：// 開啟 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Databases** (資料庫)。

1. 選擇想要刪除的資料庫執行個體。

1. 對於 **Actions** (動作)，請選擇 **Delete** (刪除)。

1. 清除**是否建立最後的快照？**和**保留自動備份**。

1. 完成確認，然後選擇**刪除**。

## (選用) 刪除使用 CloudFormation 建立的 EC2 執行個體和資料庫執行個體
<a name="CHAP_GettingStarted.DeletingCFN.Oracle"></a>

如果您使用 CloudFormation 來建立資源，請在連線至 後刪除 CloudFormation 堆疊，並探索範例 EC2 執行個體和資料庫執行個體，因此您不再需要支付這些堆疊的費用。

**刪除 CloudFormation 資源**

1. 開啟 CloudFormation 主控台。

1. 在 CloudFormation 主控台的**堆疊**頁面，選取根堆疊 (不含名稱 VPCStack、BastionStack 或 RDSNS 的堆疊)。

1. 選擇 **刪除**。

1. 出現確認提示時，請選取**刪除堆疊**。

如需在 CloudFormation 中刪除堆疊的詳細資訊，請參閱*AWS CloudFormation 《 使用者指南*》中的[刪除 CloudFormation 主控台上的堆疊](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-delete-stack.html)。

## (選用) 將資料庫執行個體連線至 Lambda 函數
<a name="CHAP_GettingStarted.ComputeConnect.Oracle"></a>

您也可以將 RDS for Oracle 資料庫執行個體連線至 Lambda 無伺服器運算資源。Lambda 函數允許您在沒有佈建或管理基礎設施的情況下執行程式碼。Lambda 函數還允許您自動回應任何規模的程式碼執行請求，從每天十幾個事件到每秒數百個事件。如需更多詳細資訊，請參閱 [自動連線 Lambda 函數和資料庫執行個體 ](lambda-rds-connect.md)。

# 建立並連線至 PostgreSQL 資料庫執行個體
<a name="CHAP_GettingStarted.CreatingConnecting.PostgreSQL"></a>

本教學課程會建立 EC2 執行個體和 RDS for PostgreSQL 資料庫執行個體。本教學課程說明如何使用標準 PostgreSQL 用戶端，從 EC2 執行個體存取資料庫執行個體。本教學課程為最佳實務，會在虛擬私有雲端 (VPC) 中建立私有資料庫執行個體。在多數情況下，相同 VPC 中的其他資源 (例如 EC2 執行個體) 可以存取該資料庫執行個體，但 VPC 以外的資源便無法存取該執行個體。

完成教學課程後，在您的 VPC 中，每個可用區域都有一個公有子網路和私有子網路。在可用區域中，EC2 執行個體位於公有子網路中，而資料庫執行個體則可於私有子網路中。

**重要**  
建立 AWS 帳戶無需付費。不過，透過完成本教學課程，您可能會因為使用 AWS 的資源而產生費用。如果不再需要這些資源，您可以在完成教學課程後刪除這些資源。

下圖顯示此教學課程完成時的組態。

![\[EC2 執行個體和 PostgreSQL 資料庫執行個體。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/getting-started-postgresql.png)


本教學課程可讓您使用下列其中一種方法來建立資源：

1. 使用 AWS 管理主控台 ‐ [建立 EC2 執行個體](#CHAP_GettingStarted.Creating.RDSPostgreSQL.EC2)和 [建立 PostgreSQL 資料庫執行個體](#CHAP_GettingStarted.Creating.PostgreSQL) 

1. 使用 CloudFormation 建立資料庫執行個體和 EC2 執行個體 ‐ [（選用） 使用 建立 VPC、EC2 執行個體和 PostgreSQL 執行個體 CloudFormation](#CHAP_GettingStarted.CFN.PostgreSQL) 

第一個方法使用**輕鬆建立**，來建立具有 AWS 管理主控台的私有 PostgreSQL 資料庫執行個體。您在這裡僅能指定資料庫引擎類型、資料庫執行個體大小與資料庫執行個體識別符。**輕鬆建立**會使用其他組態選項的預設設定。

改用**標準建立**時，您可以在建立資料庫執行個體時指定更多組態選項。這些選項包括可用性、安全性、備份和維護的設定。若要建立公有資料庫執行個體，您必須使用**標準建立**。如需相關資訊，請參閱[建立 Amazon RDS 資料庫執行個體](USER_CreateDBInstance.md)。

**Topics**
+ [

## 先決條件
](#CHAP_GettingStarted.Prerequisites.RDSPostgreSQL)
+ [

## 建立 EC2 執行個體
](#CHAP_GettingStarted.Creating.RDSPostgreSQL.EC2)
+ [

## 建立 PostgreSQL 資料庫執行個體
](#CHAP_GettingStarted.Creating.PostgreSQL)
+ [

## （選用） 使用 建立 VPC、EC2 執行個體和 PostgreSQL 執行個體 CloudFormation
](#CHAP_GettingStarted.CFN.PostgreSQL)
+ [

## 連接至 PostgreSQL 資料庫執行個體
](#CHAP_GettingStarted.Connecting.PostgreSQL)
+ [

## 刪除 EC2 執行個體和資料庫執行個體
](#CHAP_GettingStarted.Deleting.PostgreSQL)
+ [

## (選用) 刪除使用 CloudFormation 建立的 EC2 執行個體和資料庫執行個體
](#CHAP_GettingStarted.DeletingCFN.PostgreSQL)
+ [

## (選用) 將資料庫執行個體連線至 Lambda 函數
](#CHAP_GettingStarted.ComputeConnect.PostreSQL)

## 先決條件
<a name="CHAP_GettingStarted.Prerequisites.RDSPostgreSQL"></a>

在開始之前，請先完成下節所含步驟：
+ [註冊 AWS 帳戶](CHAP_SettingUp.md#sign-up-for-aws)
+ [建立具有管理存取權的使用者](CHAP_SettingUp.md#create-an-admin)

## 建立 EC2 執行個體
<a name="CHAP_GettingStarted.Creating.RDSPostgreSQL.EC2"></a>

建立您會用來連線至資料庫的 Amazon EC2 執行個體。

**建立 EC2 執行個體**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)：// 開啟 Amazon EC2 主控台。

1. 在 的右上角 AWS 管理主控台，選擇您要在 AWS 區域 其中建立 EC2 執行個體的 。

1. 選擇 **EC2 儀表板**，然後選擇**啟動執行個體**，如下圖所示。  
![\[EC2 儀表板。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_11.png)

   **啟動執行個體**頁面即開啟。

1. 在**啟動執行個體**頁面中選擇下列設定。

   1. 在 **Name and tags** (名稱與標籤) 下，對於 **Name** (名稱)，輸入 **ec2-database-connect**。

   1. 在**應用程式和作業系統映像 (Amazon Machine Image)** 中，選擇 **Amazon Linux**，然後選擇 **Amazon Linux 2023 AMI**。保留其他選項的預設選擇。  
![\[選擇 Amazon Machine Image。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_12.png)

   1. 在**Instance type** (執行個體類型) 下，選擇 **t2.micro**。

   1. 在 **Key pair (login)** (金鑰對 (登入)) 下，選擇 **Key pair name** (金鑰對名稱)，以使用現有金鑰對。若要為 Amazon EC2 執行個體建立新的金鑰對，請選擇 **Create new key pair** (建立新的金鑰對)，然後使用 **Create key pair** (建立金鑰對) 視窗來建立金鑰對。

      如需有關建立新的金鑰對的詳細資訊，請參閱《Amazon EC2 使用者指南》**中的[建立金鑰對](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/get-set-up-for-amazon-ec2.html#create-a-key-pair)。

   1. 對於**網路設定**中的**允許 SSH 流量**，選擇 EC2 執行個體的 SSH 連線來源。

      如果顯示的 IP 地址對 SSH 連線而言是正確的，您可以選擇 **My IP** (我的 IP)。否則，您可以決定用於使用 Secure Shell (SSH) 連線至 VPC 中 EC2 執行個體的 IP 地址。若要判斷公有 IP 地址，您可以在不同的瀏覽器視窗或索引標籤中使用 [https://checkip.amazonaws.com](https://checkip.amazonaws.com/) 中的服務。IP 地址的範例為 192.0.2.1/32。

       在許多情況下，您可能透過網際網路服務供應商 (ISP) 或是從沒有靜態 IP 地址的防火牆進行連線。若是如此，請務必確定用戶端電腦所使用的 IP 地址範圍。
**警告**  
如果您使用 `0.0.0.0/0` 進行 SSH 存取，則可讓所有 IP 地址使用 SSH 存取您的公有 EC2 執行個體。通常在測試環境中短暫使用此方法是沒有問題的，但在生產環境則不安全。在生產環境中，您應只授權特定 IP 地址或特定範圍的地址可使用 SSH 存取您的 EC2 執行個體。

      下圖顯示**網路設定**區段的範例。  
![\[EC2 執行個體的網路設定。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/EC2_RDS_Connect_NtwkSettings.png)

   1. 讓剩餘區段保留預設值。

   1. 檢閱**摘要**面板中 EC2 執行個體組態的摘要，並在準備就緒時選擇**啟動執行個體**。

1. 在**啟動狀態**頁面上，記下新的 EC2 執行個體的識別碼，例如：`i-1234567890abcdef0`。  
![\[啟動狀態頁面上的 EC2 執行個體識別符。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/getting-started-ec2-id.png)

1. 選擇 EC2 執行個體識別符，以開啟 EC2 執行個體清單，然後選取您的 EC2 執行個體。

1. 在**詳細資訊**索引標籤中，請記下以下值，當您使用 SSH 進行連線時需要這些值：

   1. 在**執行個體摘要**中，記下**公用 IPv4 DNS** 的值。  
![\[執行個體頁面的詳細資訊索引標籤上的 EC2 公用 DNS 名稱。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/easy-create-ec2-public-dns.png)

   1. 在**執行個體詳細資訊**中，記下**金鑰對名稱**的值。  
![\[執行個體頁面的詳細資訊索引標籤上的 EC2 金鑰對名稱。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/easy-create-ec2-key-pair.png)

1. 請等待 EC2 執行個體的**執行個體狀態**為**執行中**，然後再繼續動作。

## 建立 PostgreSQL 資料庫執行個體
<a name="CHAP_GettingStarted.Creating.PostgreSQL"></a>

Amazon RDS 的基本建置組塊為資料庫執行個體。這是您執行 PostgreSQL 資料庫的環境。

在此範例中，您使用**輕鬆建立**來建立執行 PostgreSQL 資料庫引擎、資料庫執行個體類別為 db.t3.micro 的資料庫執行個體。

**如要以 Easy create (輕鬆建立) 來建立 PostgreSQL 資料庫執行個體**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)：// 開啟 Amazon RDS 主控台。

1. 在 Amazon RDS 主控台的右上角，選擇要建立資料庫執行個體 AWS 的區域。

1. 在導覽窗格中，選擇 **Databases (資料庫)**。

1. 選擇 **Create database (建立資料庫)**，並確定選擇 **Easy Create (輕鬆建立)**。  
![\[輕鬆建立選項。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/easy-create-option.png)

1. 在 **Configuration (組態)**，選擇 **PostgreSQL (PostgreSQL)**。

1. 在 **DB instance size (資料庫執行個體大小)** 中，選擇 **Free tier (免費方案)**。免費方案帳戶的**免費方案**隨即顯示。付費方案帳戶的**沙盒**隨即顯示。

1. 對於 **DB instance identifier** (資料庫執行個體識別碼)，請輸入 **database-test1**。

1. 針對**主要使用者名稱**，輸入主要使用者的名稱，或保留預設名稱 (**postgres**)。

   **Create database** (建立資料庫) 頁面看起來應該會如下圖所示。若為免費方案帳戶，**免費方案**隨即顯示。若為付費方案帳戶，**沙盒**隨即顯示。  
![\[建立資料庫頁面。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/easy-create-postgresql.png)

1. 如要將自動產生的主要密碼用在資料庫執行個體，請選取**自動產生密碼**。

   如要輸入您的主要密碼，請確認清除**自動產生密碼**方塊，然後在**主要密碼**和**確認密碼**中輸入相同的密碼。

1. 若要設定與先前建立之 EC2 執行個體的連線，請開啟**設定 EC2 連線 - *選用***。

   選取**連線至 EC2 運算資源**。選擇先前建立的 EC2 執行個體。  
![\[設定 EC2 連線選項。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/EC2_RDS_Setup_Conn-EasyCreate.png)

1. 開啟**檢視輕鬆建立的預設設定**。  
![\[RDS for PostgreSQL 的「輕鬆建立」預設設定。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/easy-create-view-default-postgres.png)

   您可以檢查與 **Easy Create** (輕鬆建立) 一起使用的預設設定。**資料庫建立後可編輯**欄顯示您可以在資料庫建立後變更的選項。
   + 若該欄的設定為**否**，而您想要其他設定，可以使用**標準建立**來建立資料庫執行個體。
   + 若該欄的設定為**是**，而您想要其他設定，可以使用**標準建立**來建立資料庫執行個體，或在建立後修改該資料庫執行個體的設定。

1. 選擇**建立資料庫**。

   若要檢視資料庫執行個體的主要使用者名稱和密碼，請選擇 **View credential details (檢視登入資料詳細資訊)**。

   您可以使用出現的使用者名稱和密碼，來以主要使用者的身分連線至資料庫執行個體。
**重要**  
您無法再次檢視主要使用者密碼。如果您沒有記錄下來，您可能需要進行變更。  
如果您需要在資料庫執行個體可供使用後變更主要使用者密碼，您可以將資料庫執行個體修改為這麼做。如需修改 資料庫執行個體的詳細資訊，請參閱[修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

1. 在**資料庫**清單中，選擇新 PostgreSQL 資料庫執行個體的名稱，以顯示其詳細資訊。

   在其可供使用之前，資料庫執行個體會處於**建立中**狀態。  
![\[資料庫執行個體詳細資訊。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/Postgres-Launch06.png)

   狀態變更為 **Available** (可用) 時，您便能連線至資料庫執行個體。視資料庫執行個體類別和儲存體數量而定，可能需要最多 20 分鐘的時間，新執行個體才會可用。

## （選用） 使用 建立 VPC、EC2 執行個體和 PostgreSQL 執行個體 CloudFormation
<a name="CHAP_GettingStarted.CFN.PostgreSQL"></a>

您可以使用 CloudFormation 將基礎設施視為程式碼來佈建 AWS 資源，而不是使用 主控台來建立 VPC、EC2 執行個體和 PostgreSQL 執行個體。為了協助您將 AWS 資源組織成較小且更易於管理的單位，您可以使用 CloudFormation 巢狀堆疊功能。如需詳細資訊，請參閱[在 CloudFormation 主控台上建立堆疊](https://docs.aws.amazon.com//AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html)和[使用巢狀堆疊](https://docs.aws.amazon.com//AWSCloudFormation/latest/UserGuide/using-cfn-nested-stacks.html)。

**重要**  
CloudFormation 是免費的，但 CloudFormation 建立的資源是即時的。您需要支付這些資源的標準使用費，直到將其終止為止。如需詳細資訊，請參閱 [RDS for PostgreSQL 定價](https://aws.amazon.com//rds/postgresql/pricing)。

若要使用 CloudFormation 主控台建立資源，請完成下列步驟：
+ 下載 CloudFormation 範本
+ 使用 CloudFormation 設定資源

### 下載 CloudFormation 範本
<a name="CHAP_GettingStarted.CFN.PostgreSQL.Step1"></a>

CloudFormation 範本是 JSON 或 YAML 文字檔案，其中包含您要在堆疊中建立之資源的相關組態資訊。此範本也會為您以及 RDS 執行個體建立 VPC 和堡壘主機。

若要下載範本檔案，請開啟以下連結 [PostgreSQL CloudFormation 範本](https://github.com/aws-ia/cfn-ps-amazon-rds/blob/main/templates/rds-postgres-main.template.yaml)。

在 Github 頁面中，按一下*下載原始檔案*按鈕，即可儲存範本 YAML 檔案。

### 使用 CloudFormation 設定資源
<a name="CHAP_GettingStarted.CFN.PostgreSQL.Step2"></a>

**注意**  
開始此程序之前，請確定 AWS 帳戶中有 EC2 執行個體的金鑰對。如需詳細資訊，請參閱 [Amazon EC2 金鑰對與 Linux 執行個體](https://docs.aws.amazon.com//AWSEC2/latest/UserGuide/ec2-key-pairs.html)。

使用 CloudFormation 範本時，您必須選取正確的參數，以確保您的資源已正確建立。請遵循下列步驟：

1. 登入 AWS 管理主控台 並在 https：//[https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/) 開啟 CloudFormation 主控台。

1. 選擇 **Create Stack** (建立堆疊)。

1. 在 [指定範本] 區段中，選取**從電腦上傳範本檔案**，然後選擇**下一步**。

1. 在**指定堆疊詳細資訊**頁面，設定下列參數：

   1. 將**堆疊名稱**設定為 **PostgreSQLTestStack**。

   1. 在**參數**下，選取三個可用區域來設定**可用區域**。

   1. 在 **Linux 堡壘主機組態**下，針對**金鑰名稱**，選取金鑰對以登入 EC2 執行個體。

   1. 在 **Linux 堡壘主機組態**設定中，將**允許的 IP 範圍**設定為 IP 位址。若要使用 Secure Shell (SSH) 連線到 VPC 中的 EC2 執行個體，請使用位於 [https://checkip.amazonaws.com](https://checkip.amazonaws.com) 的服務來判斷公有 IP 位址。IP 地址的範例為 192.0.2.1/32。
**警告**  
如果您使用 `0.0.0.0/0` 進行 SSH 存取，則可讓所有 IP 地址使用 SSH 存取您的公有 EC2 執行個體。通常在測試環境中短暫使用此方法是沒有問題的，但在生產環境則不安全。在生產環境中，您應只授權特定 IP 地址或特定範圍的地址可使用 SSH 存取您的 EC2 執行個體。

   1. 在**資料庫一般組態**下，將**資料庫執行個體類別**設為 **db.t3.micro**。

   1. 將**資料庫名稱**設為 **database-test1**。

   1. 對於**資料庫主要使用者名稱**，輸入主要使用者的名稱。

   1. 在本教學課程中，將**使用 Secrets Manager 管理資料庫主要使用者密碼**設為 `false`。

   1. 針對**資料庫密碼**，設定您選擇的密碼。請記住此密碼，以供教學課程中的後續步驟使用。

   1. 在**資料庫儲存組態**下，將**資料庫儲存類型**設定為 **gp2**。

   1. 在**資料庫監控組態**下，將**啟用 RDS Performance Insights** 設為 false。

   1. 保留所有其他設定作為預設值。按一下**下一步**以繼續。

1. 在**設定堆疊選項**頁面中，保留所有預設選項。按一下**下一步**以繼續。

1. 在**檢閱堆疊**頁面中，在檢查資料庫和 Linux 堡壘主機選項後選取**提交**。

堆疊建立程序完成後，請檢視名稱為 *BastionStack* 和 *RDSNS* 的堆疊，以記下連線至資料庫所需的資訊。如需詳細資訊，請參閱[在 AWS 管理主控台檢視 CloudFormation 堆疊資料及資源](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-view-stack-data-resources.html)。

## 連接至 PostgreSQL 資料庫執行個體
<a name="CHAP_GettingStarted.Connecting.PostgreSQL"></a>

您可以使用 pgadmin 或 psql 連線至資料庫執行個體。此範例說明如何使用 psql 命令列用戶端來連線至 PostgreSQL 資料庫執行個體。

**使用 psql 連線至 PostgreSQL 資料庫執行個體**

1. 尋找資料庫執行個體的端點 (DNS 名稱) 和連接埠號碼。

   1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)：// 開啟 Amazon RDS 主控台。

   1. 在 Amazon RDS 主控台的右上角，選擇資料庫執行個體的 AWS 區域 。

   1. 在導覽窗格中，選擇 **Databases** (資料庫)。

   1. 選擇 PostgreSQL 資料庫執行個體名稱以顯示其詳細資訊。

   1. 在 **Connectivity & security (連線能力和安全性)** 索引標籤上，複製該端點。另外，請記下連接埠號碼。您需要同時有端點和連接埠號碼，才能連線至資料庫執行個體。  
![\[連線至 PostgreSQL 資料庫執行個體\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/PostgreSQL-endpoint.png)

1. 請遵循《Amazon EC2 使用者指南》**中的[連線至 Linux 執行個體](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstances.html)步驟，以連線您先前所建的 EC2 執行個體。

   建議您使用 SSH 連線至 EC2 執行個體。如果 SSH 用戶端公用程式已安裝在 Windows、Linux 或 Mac 上，您可以使用下列命令格式連線至執行個體：

   ```
   ssh -i location_of_pem_file ec2-user@ec2-instance-public-dns-name
   ```

   例如，假設 `ec2-database-connect-key-pair.pem` 存放在 Linux 上 的 `/dir1` 中，而 EC2 執行個體的公用 IPv4 DNS 為 `ec2-12-345-678-90.compute-1.amazonaws.com`。您的 SSH 命令看起來如下所示：

   ```
   ssh -i /dir1/ec2-database-connect-key-pair.pem ec2-user@ec2-12-345-678-90.compute-1.amazonaws.com
   ```

1. 更新 EC2 執行個體上的軟體，以取得最新的錯誤修正和安全性更新。若要執行此操作，請使用以下命令。
**注意**  
`-y` 選項不要求確認就會安裝更新。若要先檢查更新再安裝，請省略此選項。

   ```
   sudo dnf update -y
   ```

1. 若要在 Amazon Linux 2023 上安裝 PostgreSQL 的 mysql 命令列用戶端，請執行下列命令：

   ```
   sudo dnf install postgresql15
   ```

1. 連線至 PostgreSQL 資料庫執行個體。例如，在用戶端電腦上的命令提示字元中輸入下列命令。此動作可讓您使用 psql 用戶端，連線至 PostgreSQL 資料庫執行個體。

   取代 `endpoint` 的資料庫執行個體端點 (DNS 名稱)，取代 `postgres` 要連線的資料庫名稱 `--dbname`，以及取代您用於 `postgres` 的主要使用者名稱。提示您輸入密碼時，請提供您使用的主要密碼。

   ```
   psql --host=endpoint --port=5432 --dbname=postgres --username=postgres
   ```

   輸入使用者的密碼之後，您應該會看到類似如下的輸出：

   ```
   psql (14.3, server 14.6)
   SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)
   Type "help" for help.
   
   postgres=>
   ```

   如需連線至 PostgreSQL 資料庫執行個體的詳細資訊，請參閱 [連線至執行 PostgreSQL 資料庫引擎的資料庫執行個體](USER_ConnectToPostgreSQLInstance.md)。如果您無法連線至資料庫執行個體，請參閱[針對您的 RDS for PostgreSQL 執行個體連線進行疑難排解](USER_ConnectToPostgreSQLInstance.Troubleshooting.md)。

   基於安全考量，最佳做法是使用加密連線。僅當用戶端和伺服器位於同一 VPC 且網路受信任時，才使用未加密的 PostgreSQL 連線。如需使用加密連線的詳細資訊，請參閱 [透過 SSL 連接至 PostgreSQL 資料庫執行個體](PostgreSQL.Concepts.General.SSL.md#PostgreSQL.Concepts.General.SSL.Connecting)。

1. 執行 SQL 命令。

   例如，下列 SQL 命令會顯示目前的日期和時間：

   ```
   SELECT CURRENT_TIMESTAMP;
   ```

## 刪除 EC2 執行個體和資料庫執行個體
<a name="CHAP_GettingStarted.Deleting.PostgreSQL"></a>

在連線至您已建立的範例 EC2 執行個體與資料庫執行個體，並探索這些執行個體之後，請將其刪除，才不會再對您收費。

如果您使用 CloudFormation 建立資源，請略過此步驟並前往下一個步驟。

**刪除 EC2 執行個體**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)：// 開啟 Amazon EC2 主控台。

1. 在導覽窗格中，選擇**執行個體**。

1. 選取 EC2 執行個體，並選取**執行個體狀態、終止執行個體**。

1. 出現確認提示時，請選擇 **Terminate (終止)**。

如需刪除 EC2 執行個體的詳細資訊，請參閱《Amazon EC2 使用者指南》**中的[終止執行個體](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/terminating-instances.html)。

**刪除不含最終資料庫快照的資料庫執行個體**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)：// 開啟 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Databases** (資料庫)。

1. 選擇想要刪除的資料庫執行個體。

1. 對於 **Actions** (動作)，請選擇 **Delete** (刪除)。

1. 清除**是否建立最後的快照？**和**保留自動備份**。

1. 完成確認，然後選擇**刪除**。

## (選用) 刪除使用 CloudFormation 建立的 EC2 執行個體和資料庫執行個體
<a name="CHAP_GettingStarted.DeletingCFN.PostgreSQL"></a>

如果您使用 CloudFormation 來建立資源，請在連線至 後刪除 CloudFormation 堆疊，並探索範例 EC2 執行個體和資料庫執行個體，因此您不再需要支付這些堆疊的費用。

**刪除 CloudFormation 資源**

1. 開啟 CloudFormation 主控台。

1. 在 CloudFormation 主控台的**堆疊**頁面，選取根堆疊 (不含名稱 VPCStack、BastionStack 或 RDSNS 的堆疊)。

1. 選擇 **刪除**。

1. 出現確認提示時，請選取**刪除堆疊**。

如需在 CloudFormation 中刪除堆疊的詳細資訊，請參閱*AWS CloudFormation 《 使用者指南*》中的[刪除 CloudFormation 主控台上的堆疊](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-delete-stack.html)。

## (選用) 將資料庫執行個體連線至 Lambda 函數
<a name="CHAP_GettingStarted.ComputeConnect.PostreSQL"></a>

您也可以將 RDS for PostgreSQL 資料庫執行個體連線至無伺服器運算資源。Lambda 函數允許您在沒有佈建或管理基礎設施的情況下執行程式碼。Lambda 函數還允許您自動回應任何規模的程式碼執行請求，從每天十幾個事件到每秒數百個事件。如需更多詳細資訊，請參閱 [自動連線 Lambda 函數和資料庫執行個體 ](lambda-rds-connect.md)。

# 教學：建立 Web 伺服器和 Amazon RDS 資料庫執行個體
<a name="TUT_WebAppWithRDS"></a>

本教學課程說明如何安裝支援 PHP 的 Apache Web 伺服器，並建立 MariaDB、MySQL 或 PostgreSQL 資料庫。Web 伺服器會在使用 Amazon Linux 2023 的 Amazon EC2 執行個體上執行，而且您可以選擇 MySQL 或 PostgreSQL 資料庫執行個體。Amazon EC2 執行個體和 資料庫執行個體都會在以 Amazon VPC 服務為基礎的 Virtual Private Cloud (VPC) 中執行。

**重要**  
建立 AWS 帳戶無需付費。不過，透過完成本教學課程，您可能會因為使用 AWS 的資源而產生費用。如果不再需要這些資源，您可以在完成教學課程後刪除這些資源。

**注意**  
本教學課程使用 Amazon Linux 2023，可能不適用於其他 Linux 版本。

在後續的教學課程中，您會為 AWS 帳戶建立使用預設 VPC、子網路和安全群組的 EC2 執行個體。本教學課程向您介紹如何建立資料庫執行個體，並自動設定與您建立的 EC2 執行個體的連線。然後，本教學課程將向您展示如何在 EC2 執行個體上安裝 Web 伺服器。您可以使用資料庫執行個體端點，將 Web 伺服器連線到 VPC 中的資料庫執行個體。

1. [啟動 EC2 執行個體以與資料庫執行個體連線](CHAP_Tutorials.WebServerDB.LaunchEC2.md)

1. [建立 Amazon RDS 資料庫執行個體](CHAP_Tutorials.WebServerDB.CreateDBInstance.md)

1. [在您的 EC2 執行個體上安裝 Web 伺服器](CHAP_Tutorials.WebServerDB.CreateWebServer.md)

下圖顯示此教學課程完成時的組態。

![\[單一 VPC 案例\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/con-VPC-sec-grp.png)


**注意**  
完成教學課程後，在您的 VPC 中，每個可用區域都有一個公有子網路和私有子網路。本教學課程使用 的預設 VPC， AWS 帳戶 並自動設定 EC2 執行個體與資料庫執行個體之間的連線。如果您想改為針對此案例設定新的 VPC，請完成 [教學課程：建立要與資料庫執行個體搭配使用的 VPC (僅限 IPv4)](CHAP_Tutorials.WebServerDB.CreateVPC.md) 中的任務。

# 啟動 EC2 執行個體以與資料庫執行個體連線
<a name="CHAP_Tutorials.WebServerDB.LaunchEC2"></a>

在 VPC 的公有子網路中建立 Amazon EC2 執行個體。

**啟動 EC2 執行個體**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)：// 開啟 Amazon EC2 主控台。

1. 在 的右上角 AWS 管理主控台，選擇您要建立 EC2 執行個體的 AWS 區域 。

1. 選擇 **EC2 Dashboard (EC2 儀表板)**，然後選擇 **Launch Instance (啟動執行個體)**，如下所示。  
![\[EC2 儀表板\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_11.png)

1. 在**啟動執行個體**頁面中選擇下列設定。

   1. 在 **Name and tags** (名稱與標籤) 下，對於 **Name** (名稱)，輸入 **tutorial-ec2-instance-web-server**。

   1. 在**應用程式和作業系統映像 (Amazon Machine Image)** 中，選擇 **Amazon Linux**，然後選擇 **Amazon Linux 2023 AMI**。保留其他選項的預設值。  
![\[選擇 Amazon Machine Image\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_12.png)

   1. 在**Instance type** (執行個體類型) 下，選擇 **t2.micro**。

   1. 在 **Key pair (login)** (金鑰對 (登入)) 下，選擇 **Key pair name** (金鑰對名稱)，以使用現有金鑰對。若要為 Amazon EC2 執行個體建立新的金鑰對，請選擇 **Create new key pair** (建立新的金鑰對)，然後使用 **Create key pair** (建立金鑰對) 視窗來建立金鑰對。

      如需有關建立新的金鑰對的詳細資訊，請參閱《Amazon EC2 使用者指南》**中的[建立金鑰對](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/get-set-up-for-amazon-ec2.html#create-a-key-pair)。

   1. 在 **Network settings** (網路設定) 下設定這些值，其他值則維持預設值：
      + 對於 **Allow SSH traffic from** (允許 SSH 流量來自)，選擇 EC2 執行個體做為 SSH 的連線來源。

        如果顯示的 IP 地址對 SSH 連線而言是正確的，您可以選擇 **My IP** (我的 IP)。

        否則，您可以決定用於使用 Secure Shell (SSH) 連線至 VPC 中 EC2 執行個體的 IP 地址。若要判斷公有 IP 地址，您可以在不同的瀏覽器視窗或索引標籤中使用 [https://checkip.amazonaws.com](https://checkip.amazonaws.com) 中的服務。IP 地址的範例為 `203.0.113.25/32`。

        在許多情況下，您可能透過網際網路服務供應商 (ISP) 或是從沒有靜態 IP 地址的防火牆進行連線。若是如此，請務必確定用戶端電腦所使用的 IP 地址範圍。
**警告**  
如果您使用 `0.0.0.0/0` 進行 SSH 存取，則可讓所有 IP 地址使用 SSH 存取您的公有執行個體。通常在測試環境中短暫使用此方法是沒有問題的，但在生產環境則不安全。在生產環境中，您應只授權特定 IP 地址或特定範圍的地址可使用 SSH 存取您的執行個體。
      + 開啟 **Allow HTTPs traffic from the internet** (允許來自網際網路的 HTTPS 流量)。
      + 開啟 **Allow HTTP traffic from the internet** (允許來自網際網路的 HTTP 流量)。  
![\[設定執行個體詳細資訊\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_14.png)

   1. 讓剩餘區段保留預設值。

   1. 檢閱 **Summary** (摘要) 面板中執行個體組態的摘要，並在準備就緒時選擇 **Launch instance** (啟動執行個體)。

1. 在**啟動狀態**頁面上，記下新的 EC2 執行個體的識別碼，例如：`i-1234567890abcdef0`。  
![\[啟動狀態頁面上的 EC2 執行個體識別符。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/getting-started-ec2-id.png)

1. 選擇 EC2 執行個體識別符，以開啟 EC2 執行個體清單，然後選取您的 EC2 執行個體。

1. 在**詳細資訊**索引標籤中，請記下以下值，當您使用 SSH 進行連線時需要這些值：

   1. 在**執行個體摘要**中，記下**公用 IPv4 DNS** 的值。  
![\[執行個體頁面的詳細資訊索引標籤上的 EC2 公用 DNS 名稱。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/easy-create-ec2-public-dns.png)

   1. 在**執行個體詳細資訊**中，記下**金鑰對名稱**的值。  
![\[執行個體頁面的詳細資訊索引標籤上的 EC2 金鑰對名稱。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/easy-create-ec2-key-pair.png)

1. 繼續之前，等待執行個體的 **Instance Status ** (執行個體狀態) 顯示為 **Running** (執行中)。

1. 完成 [建立 Amazon RDS 資料庫執行個體](CHAP_Tutorials.WebServerDB.CreateDBInstance.md)。

# 建立 Amazon RDS 資料庫執行個體
<a name="CHAP_Tutorials.WebServerDB.CreateDBInstance"></a>

建立 RDS for MariaDB、RDS for MySQL 或 RDS for PostgreSQL 資料庫執行個體，以維護 Web 應用程式所使用的資料。

------
#### [ RDS for MariaDB ]

**若要建立 MariaDB 執行個體**

1. 登入 AWS 管理主控台，開啟位於 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/) 的 Amazon RDS 主控台。

1. 在 AWS 管理主控台 右上角中，核取 AWS 區域。它應與您已在其中建立 EC2 執行個體的區域相同。

1. 在導覽窗格中，選擇 **Databases** (資料庫)。

1. 選擇 **Create database** (建立資料庫)。

1. 在**建立資料庫**頁面上，選擇**標準建立**。

1. 在**引擎選項**中，選擇 **MariaDB**。  
![\[選取引擎類型\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/tutorial-create-mariadb.png)

1. 在**範本**中，選擇**免費方案**或**沙盒**。免費方案帳戶的**免費方案**隨即顯示。付費方案帳戶的**沙盒**隨即顯示。  
![\[選取範本\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/tutorial-create-template.png)

1. 在 **Availability and durability** (可用性與耐久性) 區段中，保留預設值。

1. 在 **Settings (設定)** 區段中，設定這些值：
   + **DB instance identifier** (資料庫執行個體識別符) – 輸入 **tutorial-db-instance**。
   + **Master username** (主要使用者名稱) – 輸入 **tutorial\$1user**。
   + **Auto generate a password** (自動產生密碼) – 保持選項關閉。
   + **Master password** (主要密碼) – 輸入密碼。
   + **Confirm password (確認密碼)** – 重新輸入密碼。  
![\[設定區段\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_Settings.png)

1. 在 **Instance configuration** (執行個體組態) 區段中，設定這些值：
   + **Burstable classes (includes t classes)** (高載類別 (包括 t 類別))
   + **db.t3.micro**  
![\[執行個體組態區段\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_DB_instance_micro.png)

1. 在 **Storage** (儲存) 區段中，保留預設值。

1. 在 **Connectivity** (連線能力) 區段中，設定這些值，並且其他值都維持預設值：
   + 對於 **Compute resource** (運算資源)，選擇 **Connect to an EC2 compute resource** (連線至 EC2 運算資源)。
   + 對於 **EC2 instance** (EC2 執行個體)，選擇之前建立的 EC2 執行個體，例如 **tutorial-ec2-instance-web-server**。  
![\[連線能力區段\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_Connectivity.png)

1. 在 **Database authentication** (資料庫身分驗證) 區段中，請確定已選取 **Password authentication** (密碼身分驗證)。

1. 在 **Additional configuration (其他設定)** 區段中，輸入 **sample** 做為 **Initial database name (初始資料庫名稱)**。其他選項都保留預設設定。

1. 若要建立 MariaDB 執行個體，請選擇**建立資料庫**。

   您的新資料庫執行個體會出現在 **Databases** (資料庫) 清單中，狀態為 **Creating** (建立中)。

1. 等待新資料庫執行個體的 **Status (狀態)** 顯示為 **available (可用)**。接著，選擇資料庫執行個體的名稱，以顯示其詳細資訊。

1. 在 **Connectivity & security (連線能力與安全性)** 區段中，檢視資料庫執行個體的 **Endpoint (端點)** 和 **Port (連接埠)**。  
![\[資料庫執行個體詳細資訊\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_Endpoint_Port.png)

   記下資料庫執行個體的端點和連接埠。您會使用此資訊，將 Web 伺服器連接至資料庫執行個體。

1. 完成 [在您的 EC2 執行個體上安裝 Web 伺服器](CHAP_Tutorials.WebServerDB.CreateWebServer.md)。

------
#### [ RDS for MySQL ]

**建立 MySQL 資料庫執行個體**

1. 登入 AWS 管理主控台，開啟位於 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/) 的 Amazon RDS 主控台。

1. 在 AWS 管理主控台 右上角中，核取 AWS 區域。它應與您已在其中建立 EC2 執行個體的區域相同。

1. 在導覽窗格中，選擇 **Databases** (資料庫)。

1. 選擇 **Create database** (建立資料庫)。

1. 在**建立資料庫**頁面上，選擇**標準建立**。

1. 在**引擎選項** 中，選擇 **MySQL**。  
![\[選取引擎類型\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/tutorial-create-mysql.png)

1. 在**範本**中，選擇**免費方案**或**沙盒**。免費方案帳戶的**免費方案**隨即顯示。付費方案帳戶的**沙盒**隨即顯示。  
![\[選取範本\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/tutorial-create-template.png)

1. 在 **Availability and durability** (可用性與耐久性) 區段中，保留預設值。

1. 在 **Settings (設定)** 區段中，設定這些值：
   + **DB instance identifier** (資料庫執行個體識別符) – 輸入 **tutorial-db-instance**。
   + **Master username** (主要使用者名稱) – 輸入 **tutorial\$1user**。
   + **Auto generate a password** (自動產生密碼) – 保持選項關閉。
   + **Master password** (主要密碼) – 輸入密碼。
   + **Confirm password (確認密碼)** – 重新輸入密碼。  
![\[設定區段\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_Settings.png)

1. 在 **Instance configuration** (執行個體組態) 區段中，設定這些值：
   + **Burstable classes (includes t classes)** (高載類別 (包括 t 類別))
   + **db.t3.micro**  
![\[執行個體組態區段\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_DB_instance_micro.png)

1. 在 **Storage** (儲存) 區段中，保留預設值。

1. 在 **Connectivity** (連線能力) 區段中，設定這些值，並且其他值都維持預設值：
   + 對於 **Compute resource** (運算資源)，選擇 **Connect to an EC2 compute resource** (連線至 EC2 運算資源)。
   + 對於 **EC2 instance** (EC2 執行個體)，選擇之前建立的 EC2 執行個體，例如 **tutorial-ec2-instance-web-server**。  
![\[連線能力區段\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_Connectivity.png)

1. 在 **Database authentication** (資料庫身分驗證) 區段中，請確定已選取 **Password authentication** (密碼身分驗證)。

1. 在 **Additional configuration (其他設定)** 區段中，輸入 **sample** 做為 **Initial database name (初始資料庫名稱)**。其他選項都保留預設設定。

1. 若要建立 MySQL 資料庫執行個體，請選擇 **Create database** (建立資料庫)。

   您的新資料庫執行個體會出現在 **Databases** (資料庫) 清單中，狀態為 **Creating** (建立中)。

1. 等待新資料庫執行個體的 **Status (狀態)** 顯示為 **available (可用)**。接著，選擇資料庫執行個體的名稱，以顯示其詳細資訊。

1. 在 **Connectivity & security (連線能力與安全性)** 區段中，檢視資料庫執行個體的 **Endpoint (端點)** 和 **Port (連接埠)**。  
![\[資料庫執行個體詳細資訊\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_Endpoint_Port.png)

   記下資料庫執行個體的端點和連接埠。您會使用此資訊，將 Web 伺服器連接至資料庫執行個體。

1. 完成 [在您的 EC2 執行個體上安裝 Web 伺服器](CHAP_Tutorials.WebServerDB.CreateWebServer.md)。

------
#### [ RDS for PostgreSQL ]

**若要建立 PostgreSQL 資料庫執行個體**

1. 登入 AWS 管理主控台，開啟位於 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/) 的 Amazon RDS 主控台。

1. 在 AWS 管理主控台 右上角中，核取 AWS 區域。它應與您已在其中建立 EC2 執行個體的區域相同。

1. 在導覽窗格中，選擇 **Databases** (資料庫)。

1. 選擇 **Create database** (建立資料庫)。

1. 在**建立資料庫**頁面上，選擇**標準建立**。

1. 針對**引擎選項**，選擇 **PostgreSQL**。  
![\[選取引擎類型\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/tutorial-create-postgres.png)

1. 在**範本**中，選擇**免費方案**或**沙盒**。免費方案帳戶的**免費方案**隨即顯示。付費方案帳戶的**沙盒**隨即顯示。  
![\[選取範本\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/tutorial-create-template.png)

1. 在 **Availability and durability** (可用性與耐久性) 區段中，保留預設值。

1. 在 **Settings (設定)** 區段中，設定這些值：
   + **DB instance identifier** (資料庫執行個體識別符) – 輸入 **tutorial-db-instance**。
   + **Master username** (主要使用者名稱) – 輸入 **tutorial\$1user**。
   + **Auto generate a password** (自動產生密碼) – 保持選項關閉。
   + **Master password** (主要密碼) – 輸入密碼。
   + **Confirm password (確認密碼)** – 重新輸入密碼。  
![\[設定區段\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_Settings.png)

1. 在 **Instance configuration** (執行個體組態) 區段中，設定這些值：
   + **Burstable classes (includes t classes)** (高載類別 (包括 t 類別))
   + **db.t3.micro**  
![\[執行個體組態區段\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_DB_instance_micro.png)

1. 在 **Storage** (儲存) 區段中，保留預設值。

1. 在 **Connectivity** (連線能力) 區段中，設定這些值，並且其他值都維持預設值：
   + 對於 **Compute resource** (運算資源)，選擇 **Connect to an EC2 compute resource** (連線至 EC2 運算資源)。
   + 對於 **EC2 instance** (EC2 執行個體)，選擇之前建立的 EC2 執行個體，例如 **tutorial-ec2-instance-web-server**。  
![\[連線能力區段\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_Connectivity.png)

1. 在 **Database authentication** (資料庫身分驗證) 區段中，請確定已選取 **Password authentication** (密碼身分驗證)。

1. 在 **Additional configuration (其他設定)** 區段中，輸入 **sample** 做為 **Initial database name (初始資料庫名稱)**。其他選項都保留預設設定。

1. 若要建立 PostgreSQL 資料庫執行個體，請選擇**建立資料庫**。

   您的新資料庫執行個體會出現在 **Databases** (資料庫) 清單中，狀態為 **Creating** (建立中)。

1. 等待新資料庫執行個體的 **Status (狀態)** 顯示為 **available (可用)**。接著，選擇資料庫執行個體的名稱，以顯示其詳細資訊。

1. 在 **Connectivity & security (連線能力與安全性)** 區段中，檢視資料庫執行個體的 **Endpoint (端點)** 和 **Port (連接埠)**。  
![\[資料庫執行個體詳細資訊\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_Endpoint_Port_postgres.png)

   記下資料庫執行個體的端點和連接埠。您會使用此資訊，將 Web 伺服器連接至資料庫執行個體。

1. 完成 [在您的 EC2 執行個體上安裝 Web 伺服器](CHAP_Tutorials.WebServerDB.CreateWebServer.md)。

------

# 在您的 EC2 執行個體上安裝 Web 伺服器
<a name="CHAP_Tutorials.WebServerDB.CreateWebServer"></a>

您在 EC2; 中的 Linux 執行個體上安裝 Web 伺服器[啟動 EC2 執行個體以與資料庫執行個體連線](CHAP_Tutorials.WebServerDB.LaunchEC2.md)。Web 伺服器將連接至在中建立的 Amazon RDS 資料庫執行個體 [建立 Amazon RDS 資料庫執行個體](CHAP_Tutorials.WebServerDB.CreateDBInstance.md)。

## 使用 PHP 和 MariaDB 安裝 Apache Web 伺服器
<a name="CHAP_Tutorials.WebServerDB.CreateWebServer.Apache"></a>

連線至 EC2 執行個體並安裝 Web 伺服器。

**連接至 EC2 執行個體並安裝支援 PHP 的 Apache Web 伺服器**

1. 請遵循《Amazon EC2 使用者指南》**中的[連線至 Linux 執行個體](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstances.html)步驟，以連線您先前所建的 EC2 執行個體。

   建議您使用 SSH 連線至 EC2 執行個體。如果 SSH 用戶端公用程式已安裝在 Windows、Linux 或 Mac 上，您可以使用下列命令格式連線至執行個體：

   ```
   ssh -i location_of_pem_file ec2-user@ec2-instance-public-dns-name
   ```

   例如，假設 `ec2-database-connect-key-pair.pem` 存放在 Linux 上 的 `/dir1` 中，而 EC2 執行個體的公用 IPv4 DNS 為 `ec2-12-345-678-90.compute-1.amazonaws.com`。您的 SSH 命令看起來如下所示：

   ```
   ssh -i /dir1/ec2-database-connect-key-pair.pem ec2-user@ec2-12-345-678-90.compute-1.amazonaws.com
   ```

1. 更新 EC2 執行個體上的軟體，以取得最新的錯誤修正和安全性更新。若要執行此操作，請使用以下命令。
**注意**  
`-y` 選項不要求確認就會安裝更新。若要先檢查更新再安裝，請省略此選項。

   ```
   sudo dnf update -y
   ```

1. 更新完成後，使用下列命令安裝 Apache Web 伺服器、PHP、MariaDB 和 PostgreSQL 軟體。此命令會同時安裝多個軟體套件和相關的依存項目。

------
#### [ MariaDB & MySQL ]

   ```
   sudo dnf install -y httpd php php-mysqli mariadb105
   ```

------
#### [ PostgreSQL ]

   ```
   sudo dnf install -y httpd php php-pgsql postgresql15
   ```

------

   如果收到錯誤，您的執行個體可能不是以 Amazon Linux 2023 AMI 啟動。您可能正在改用 Amazon Linux 2 AMI。您可以使用下列命令來檢視您的 Amazon Linux 版本。

   ```
   cat /etc/system-release
   ```

   如需詳細資訊，請參閱[更新執行個體軟體](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/install-updates.html)。

1. 使用如下所示的命令來啟動 Web 伺服器。

   ```
   sudo systemctl start httpd
   ```

   您可以測試 Web 伺服器是否已正確安裝並啟動。若要執行此動作，請在 Web 瀏覽器的網址列中輸入 EC2 執行個體的公有網域名稱系統 (DNS) 名稱，例如：`http://ec2-42-8-168-21.us-west-1.compute.amazonaws.com`。如果 Web 伺服器正在執行，您會看到 Apache 測試頁面。

   如果您沒有看到 Apache 測試頁面，請檢查您在 [教學課程：建立要與資料庫執行個體搭配使用的 VPC (僅限 IPv4)](CHAP_Tutorials.WebServerDB.CreateVPC.md) 中建立的 VPC 安全性群組的輸入規則。請確定輸入規則包含允許 HTTP (連接埠 80) 存取連線至 Web 伺服器的 IP 地址的規則。
**注意**  
只有當文件根目錄 `/var/www/html` 中沒有內容時，Apache 測試頁面才會出現。當您將內容新增至文件根目錄之後，您的內容會出現在 EC2 執行個體的公有 DNS 地址。在此之前，它會出現在 Apache 測試頁面上。

1. 使用 `systemctl` 命令，設定 Web 伺服器在每次系統開機時啟動。

   ```
   sudo systemctl enable httpd
   ```

若要允許 `ec2-user` 管理 Apache Web 伺服器之預設根目錄中的檔案，請修改 `/var/www` 目錄的所有權和許可。有多種方法可以達成這件任務。在本教學中，您會將 `ec2-user` 新增至 `apache` 群組，以向 `apache` 群組授予 `/var/www` 目錄的所有權，並指派寫入許可。

**設定 Apache Web 伺服器的檔案許可**

1. 將 `ec2-user` 使用者新增至 `apache` 群組。

   ```
   sudo usermod -a -G apache ec2-user
   ```

1. 登出以重新整理許可並包含新的 `apache` 群組。

   ```
   exit
   ```

1. 重新登入並使用 `apache` 命令來確認 `groups` 群組存在。

   ```
   groups
   ```

   您的輸出結果類似如下：

   ```
   ec2-user adm wheel apache systemd-journal
   ```

1. 將 `/var/www` 目錄及其內容的群組所有權變更至 `apache` 群組。

   ```
   sudo chown -R ec2-user:apache /var/www
   ```

1. 變更 `/var/www` 及其子目錄的目錄許可，以新增群組寫入許可，並設定未來建立之子目錄的群組 ID。

   ```
   sudo chmod 2775 /var/www
   find /var/www -type d -exec sudo chmod 2775 {} \;
   ```

1. 對 `/var/www` 目錄及其子目錄中的檔案，遞迴地變更許可，以新增群組寫入許可。

   ```
   find /var/www -type f -exec sudo chmod 0664 {} \;
   ```

現在，`ec2-user` (以及 `apache` 群組的任何未來成員) 可以新增、刪除和編輯 Apache 文件根目錄中的檔案。這可讓您新增內容，例如靜態網站或 PHP 應用程式。

**注意**  
執行 HTTP 通訊協定的 Web 伺服器不會為其傳送或接收的資料提供傳輸安全性。當您使用 Web 瀏覽器連線到 HTTP 伺服器時，網路路徑上任何一處的竊聽者都可以看到許多資訊。此資訊包括您造訪的 URL、您收到的網頁內容，以及任何 HTML 表單內容 (包括密碼)。  
保護您的 Web 伺服器的最佳實務是安裝對 HTTPS (HTTP Secure) 的支援。此通訊協定會使用 SSL/TLS 加密保護您的資料。如需詳細資訊，請參閱*《Amazon EC2 使用者指南》*中的[教學課程：使用 Amazon Linux AMI 設定 SSL/TLS](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/SSL-on-amazon-linux-ami.html)。

## 將 Apache Web 伺服器連接至資料庫執行
<a name="CHAP_Tutorials.WebServerDB.CreateWebServer.PHPContent"></a>

接下來，您需要將內容新增至 Apache Web 伺服器 (連接到 Amazon RDS資料庫執行個體)。

**將內容新增至連接到資料庫執行個體的 Apache Web 伺服器**

1. 在仍然連接至 EC2 執行個體的情況下，切換至 `/var/www` 目錄，建立名為 `inc` 的新子目錄。

   ```
   cd /var/www
   mkdir inc
   cd inc
   ```

1. 在 `inc` 目錄中建立名為 `dbinfo.inc` 的新檔案，然後呼叫 nano (或您選擇的編輯器) 來編輯此檔案。

   ```
   >dbinfo.inc
   nano dbinfo.inc
   ```

1. 將下列內容新增至 `dbinfo.inc` 檔案：在此處，*db\$1instance\$1endpoint* 是您的資料庫執行個體端點，沒有連接埠，適用於您的資料庫執行個體。
**注意**  
建議您將使用者名稱和密碼資訊放在不屬於 Web 伺服器文件根目錄的資料夾中。這樣做會降低您暴露安全性資訊的可能性。  
確定在您的應用程式中將 `master password` 變更為合適的密碼。

   ```
   <?php
   
   define('DB_SERVER', 'db_instance_endpoint');
   define('DB_USERNAME', 'tutorial_user');
   define('DB_PASSWORD', 'master password');
   define('DB_DATABASE', 'sample');
   ?>
   ```

1. 儲存並關閉 `dbinfo.inc` 檔案。若您使用 nano，請以 Ctrl\$1S 加 Ctrl\$1X，儲存並關閉檔案。

1. 將目錄切換至 `/var/www/html`。

   ```
   cd /var/www/html
   ```

1. 在 `html` 目錄中建立名為 `SamplePage.php` 的新檔案，然後呼叫 nano (或您選擇的編輯器) 來編輯此檔案。

   ```
   >SamplePage.php
   nano SamplePage.php
   ```

1. 將下列內容新增至 `SamplePage.php` 檔案：

------
#### [ MariaDB & MySQL ]

   ```
   <?php include "../inc/dbinfo.inc"; ?>
   <html>
   <body>
   <h1>Sample page</h1>
   <?php
   
     /* Connect to MySQL and select the database. */
     $connection = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD);
   
     if (mysqli_connect_errno()) echo "Failed to connect to MySQL: " . mysqli_connect_error();
   
     $database = mysqli_select_db($connection, DB_DATABASE);
   
     /* Ensure that the EMPLOYEES table exists. */
     VerifyEmployeesTable($connection, DB_DATABASE);
   
     /* If input fields are populated, add a row to the EMPLOYEES table. */
     $employee_name = htmlentities($_POST['NAME']);
     $employee_address = htmlentities($_POST['ADDRESS']);
   
     if (strlen($employee_name) || strlen($employee_address)) {
       AddEmployee($connection, $employee_name, $employee_address);
     }
   ?>
   
   <!-- Input form -->
   <form action="<?PHP echo $_SERVER['SCRIPT_NAME'] ?>" method="POST">
     <table border="0">
       <tr>
         <td>NAME</td>
         <td>ADDRESS</td>
       </tr>
       <tr>
         <td>
           <input type="text" name="NAME" maxlength="45" size="30" />
         </td>
         <td>
           <input type="text" name="ADDRESS" maxlength="90" size="60" />
         </td>
         <td>
           <input type="submit" value="Add Data" />
         </td>
       </tr>
     </table>
   </form>
   
   <!-- Display table data. -->
   <table border="1" cellpadding="2" cellspacing="2">
     <tr>
       <td>ID</td>
       <td>NAME</td>
       <td>ADDRESS</td>
     </tr>
   
   <?php
   
   $result = mysqli_query($connection, "SELECT * FROM EMPLOYEES");
   
   while($query_data = mysqli_fetch_row($result)) {
     echo "<tr>";
     echo "<td>",$query_data[0], "</td>",
          "<td>",$query_data[1], "</td>",
          "<td>",$query_data[2], "</td>";
     echo "</tr>";
   }
   ?>
   
   </table>
   
   <!-- Clean up. -->
   <?php
   
     mysqli_free_result($result);
     mysqli_close($connection);
   
   ?>
   
   </body>
   </html>
   
   
   <?php
   
   /* Add an employee to the table. */
   function AddEmployee($connection, $name, $address) {
      $n = mysqli_real_escape_string($connection, $name);
      $a = mysqli_real_escape_string($connection, $address);
   
      $query = "INSERT INTO EMPLOYEES (NAME, ADDRESS) VALUES ('$n', '$a');";
   
      if(!mysqli_query($connection, $query)) echo("<p>Error adding employee data.</p>");
   }
   
   /* Check whether the table exists and, if not, create it. */
   function VerifyEmployeesTable($connection, $dbName) {
     if(!TableExists("EMPLOYEES", $connection, $dbName))
     {
        $query = "CREATE TABLE EMPLOYEES (
            ID int(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
            NAME VARCHAR(45),
            ADDRESS VARCHAR(90)
          )";
   
        if(!mysqli_query($connection, $query)) echo("<p>Error creating table.</p>");
     }
   }
   
   /* Check for the existence of a table. */
   function TableExists($tableName, $connection, $dbName) {
     $t = mysqli_real_escape_string($connection, $tableName);
     $d = mysqli_real_escape_string($connection, $dbName);
   
     $checktable = mysqli_query($connection,
         "SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_NAME = '$t' AND TABLE_SCHEMA = '$d'");
   
     if(mysqli_num_rows($checktable) > 0) return true;
   
     return false;
   }
   ?>
   ```

------
#### [ PostgreSQL ]

   ```
   <?php include "../inc/dbinfo.inc"; ?>
   
   <html>
   <body>
   <h1>Sample page</h1>
   <?php
   
   /* Connect to PostgreSQL and select the database. */
   $constring = "host=" . DB_SERVER . " dbname=" . DB_DATABASE . " user=" . DB_USERNAME . " password=" . DB_PASSWORD ;
   $connection = pg_connect($constring);
   
   if (!$connection){
    echo "Failed to connect to PostgreSQL";
    exit;
   }
   
   /* Ensure that the EMPLOYEES table exists. */
   VerifyEmployeesTable($connection, DB_DATABASE);
   
   /* If input fields are populated, add a row to the EMPLOYEES table. */
   $employee_name = htmlentities($_POST['NAME']);
   $employee_address = htmlentities($_POST['ADDRESS']);
   
   if (strlen($employee_name) || strlen($employee_address)) {
     AddEmployee($connection, $employee_name, $employee_address);
   }
   
   ?>
   
   <!-- Input form -->
   <form action="<?PHP echo $_SERVER['SCRIPT_NAME'] ?>" method="POST">
     <table border="0">
       <tr>
         <td>NAME</td>
         <td>ADDRESS</td>
       </tr>
       <tr>
         <td>
       <input type="text" name="NAME" maxlength="45" size="30" />
         </td>
         <td>
       <input type="text" name="ADDRESS" maxlength="90" size="60" />
         </td>
         <td>
       <input type="submit" value="Add Data" />
         </td>
       </tr>
     </table>
   </form>
   <!-- Display table data. -->
   <table border="1" cellpadding="2" cellspacing="2">
     <tr>
       <td>ID</td>
       <td>NAME</td>
       <td>ADDRESS</td>
     </tr>
   
   <?php
   
   $result = pg_query($connection, "SELECT * FROM EMPLOYEES");
   
   while($query_data = pg_fetch_row($result)) {
     echo "<tr>";
     echo "<td>",$query_data[0], "</td>",
          "<td>",$query_data[1], "</td>",
          "<td>",$query_data[2], "</td>";
     echo "</tr>";
   }
   ?>
   </table>
   
   <!-- Clean up. -->
   <?php
   
     pg_free_result($result);
     pg_close($connection);
   ?>
   </body>
   </html>
   
   
   <?php
   
   /* Add an employee to the table. */
   function AddEmployee($connection, $name, $address) {
      $n = pg_escape_string($name);
      $a = pg_escape_string($address);
      echo "Forming Query";
      $query = "INSERT INTO EMPLOYEES (NAME, ADDRESS) VALUES ('$n', '$a');";
   
      if(!pg_query($connection, $query)) echo("<p>Error adding employee data.</p>"); 
   }
   
   /* Check whether the table exists and, if not, create it. */
   function VerifyEmployeesTable($connection, $dbName) {
     if(!TableExists("EMPLOYEES", $connection, $dbName))
     {
        $query = "CREATE TABLE EMPLOYEES (
            ID serial PRIMARY KEY,
            NAME VARCHAR(45),
            ADDRESS VARCHAR(90)
          )";
   
        if(!pg_query($connection, $query)) echo("<p>Error creating table.</p>"); 
     }
   }
   /* Check for the existence of a table. */
   function TableExists($tableName, $connection, $dbName) {
     $t = strtolower(pg_escape_string($tableName)); //table name is case sensitive
     $d = pg_escape_string($dbName); //schema is 'public' instead of 'sample' db name so not using that
   
     $query = "SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_NAME = '$t';";
     $checktable = pg_query($connection, $query);
   
     if (pg_num_rows($checktable) >0) return true;
     return false;
   
   }
   ?>
   ```

------

1. 儲存並關閉 `SamplePage.php` 檔案。

1. 開啟 Web 瀏覽器並瀏覽至 `http://EC2 instance endpoint/SamplePage.php`，以驗證 Web 伺服器是否成功連接至執行個體，例如：`http://ec2-12-345-67-890.us-west-2.compute.amazonaws.com/SamplePage.php`。

您可以使用 `SamplePage.php` 將資料新增至資料庫執行個體。您新增的資料將會顯示在頁面上。若要驗證資料是否已插入資料表中，請在 Amazon EC2 執行個體上安裝 MySQL 用戶端。然後連線至資料庫執行個體，並查詢資料表。

如需安裝 MySQL 用戶端和連接至資料庫執行個體的相關資訊，請參閱[連線至您的 MySQL 資料庫執行個體](USER_ConnectToInstance.md)。

為確保資料庫執行個體盡可能安全，請確認 VPC 以外的來源無法連線到資料庫執行個體。

測試完 Web 伺服器和資料庫之後，您應該刪除資料庫執行個體和 Amazon EC2 執行個體。
+ 若要刪除資料庫執行個體，請遵循 [刪除資料庫執行個體](USER_DeleteInstance.md) 中的指示。您不需要建立最終快照。
+ 若要終止 Amazon EC2 執行個體。請按照*《Amazon EC2 使用指南》*中[終止執行個體](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/terminating-instances.html)的指示進行操作。

# 教學課程：使用 Lambda 函數來存取 Amazon RDS 資料庫
<a name="rds-lambda-tutorial"></a>

在本教學課程中，您會透過 RDS Proxy 使用 Lambda 函數將資料寫入 [Amazon Relational Database Service](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html) (Amazon RDS) 資料庫。每當有訊息新增，您的 Lambda 函數就會從 Amazon Simple Queue Service (Amazon SQS) 佇列中讀取記錄，然後將新項目寫入資料庫中的資料表。在此範例中，您可以使用 AWS 管理主控台 手動將訊息新增至佇列。下圖顯示您用來完成教學課程 AWS 的資源。

![\[\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/TUT_Lambda_1.png)


透過 Amazon RDS，您可以使用常見的資料庫產品 (如 Microsoft SQL Server、MariaDB、MySQL、Oracle 資料庫和 PostgreSQL) 在雲端中執行受管關聯式資料庫。透過使用 Lambda 存取您的資料庫，您可以讀取和寫入資料以回應事件，例如在您網站上註冊的新客戶。您的函數、資料庫執行個體和代理也會自動擴展，以滿足高需求的期間。

請完成下列任務以完成本教學課程：

1. 在 AWS 帳戶預設 VPC 中啟動 RDS for MySQL 資料庫執行個體和代理。

1. 建立並測試 Lambda 函數，用於在資料庫中建立新資料表並將資料寫入。

1. 建立 Amazon SQS 佇列並將其設定為在新增訊息時調用 Lambda 函數。

1. 使用 將訊息新增至佇列 AWS 管理主控台 ，並使用 CloudWatch Logs 監控結果，以測試完整的設定。

完成這些步驟的過程中，您將了解：
+ 如何使用 Amazon RDS 建立資料庫執行個體和代理，以及將 Lambda 函數連線至代理。
+ 如何使用 Lambda 在 Amazon RDS 資料庫上執行建立和讀取操作。
+ 如何使用 Amazon SQS 調用 Lambda 函數。

您可以使用 AWS 管理主控台 或 AWS Command Line Interface () 完成本教學課程AWS CLI。

## 先決條件
<a name="vpc-rds-prereqs"></a>

在開始之前，請先完成下節所含步驟：
+ [註冊 AWS 帳戶](CHAP_SettingUp.md#sign-up-for-aws)
+ [建立具有管理存取權的使用者](CHAP_SettingUp.md#create-an-admin)

## 建立 Amazon RDS 資料庫執行個體
<a name="vpc-rds-create-RDS-instance"></a>

![\[\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/TUT_Lambda_step1.png)


Amazon RDS 資料庫執行個體是在 AWS 雲端中執行的隔離資料庫環境。執行個體可以包含一或多個使用者建立的資料庫。除非您另有指定，否則 Amazon RDS 會在 中包含的預設 VPC 中建立新的資料庫執行個體 AWS 帳戶。如需 Amazon VPC 的詳細資訊，請參閱[《Amazon Virtual Private Cloud 使用者指南》](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html)。

在本教學課程中，您會 AWS 帳戶在預設 VPC 中建立新的執行個體，並在該執行個體`ExampleDB`中建立名為 的資料庫。您可以使用 AWS 管理主控台 或 建立資料庫執行個體和資料庫 AWS CLI。

**建立資料庫執行個體**

1. 開啟 Amazon RDS 主控台並選擇**建立資料庫**。

1. 保持選取**標準建立**選項，然後在**引擎選項**中選擇**MySQL**。

1. 在**範本**中，選擇**免費方案**或**沙盒**。免費方案帳戶會顯示**免費方案**。付費方案帳戶的**沙盒**隨即顯示。

1. 在 **設定** 中，在 **資料庫執行個體識別碼** 輸入 **MySQLForLambda**。

1. 執行以下操作以設定您的使用者名稱和密碼：

   1. 在**憑證設定**中，將**主要使用者名稱**設為 `admin`。

   1. 在**主要密碼**輸入並確認用於存取資料庫的密碼。

1. 執行下列操作以指定資料庫名稱：
   + 保持選取所有剩餘的預設選項，並向下捲動至**其他組態**部分。
   + 展開此區段並在**初始資料庫名稱**輸入 **ExampleDB**。

1. 保持選取所有剩餘的預設選項，然後選擇**建立資料庫**。

## 建立 Lambda 函數和代理
<a name="auto-create-Lambda"></a>

![\[\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/TUT_Lambda_step2.png)


您可以使用 RDS 主控台在與資料庫相同的 VPC 中建立 Lambda 函數和代理。

**注意**  
只有當資料庫已完成建立並處於**可用**狀態時，才能建立這些關聯的資源。

**建立關聯的函數和代理**

1. 從**資料庫**頁面中，檢查您的資料庫是否處於**可用**狀態。若是，則請繼續下一個步驟。否則，請等待您的資料庫直到為可用狀態。

1. 選取您的資料庫並從**動作**選擇**設定 Lambda 連線**。

1. 在**設定 Lambda 連線**頁面上，選擇**建立新函數**。

   將**新的 Lambda 函數名稱**設定為 **LambdaFunctionWithRDS**。

1. 在 **RDS Proxy** 區段中，選取**使用 RDS Proxy 連線**選項。進一步選擇**建立新的代理**。
   + 針對**資料庫憑證**，選擇**資料庫使用者名稱和密碼**。
   + 針對**使用者名稱**，指定 `admin`。
   + 針對**密碼**，輸入資料庫執行個體的密碼。

1. 選取**設定**以完成代理和 Lambda 函數的建立。

精靈會完成設定，並提供 Lambda 主控台的連結，以檢閱您的新功能。切換至 Lambda 主控台之前，請注意代理端點。

## 建立函數執行角色
<a name="vpc-rds-create-execution-role"></a>

![\[\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/TUT_Lambda_step3.png)


建立 Lambda 函數之前須先建立執行角色，為函數提供必要的許可。在本教學課程中，Lambda 需要許可，才能管理與包含資料庫執行個體之 VPC 的網路連線，以及輪詢來自 Amazon SQS 佇列的訊息。

為了提供 Lambda 函數所需的許可，本教學課程使用 IAM 受管政策。這些政策會授予適用於許多常見使用案例的許可，並可在您的 AWS 帳戶中取用。如需使用受管政策的詳細資訊，請參閱：[政策最佳實務](security_iam_id-based-policy-examples.md#security_iam_service-with-iam-policy-best-practices)。

**建立 Lambda 執行角色**

1. 開啟 IAM 主控台的[角色](https://console.aws.amazon.com/iamv2/home#/roles)頁面，然後選擇 **建立角色**。

1. **信任的實體類型**請選擇 **AWS 服務**，而針對**使用案例**，請選擇 **Lambda**。

1. 選擇 **下一步**。

1. 執行下列操作以新增 IAM 受管政策：

   1. 使用政策搜尋方塊，搜尋 **AWSLambdaSQSQueueExecutionRole**。

   1. 在結果清單中，選取角色旁的核取方塊，然後選擇**清除篩選條件**。

   1. 使用政策搜尋方塊，搜尋 **AWSLambdaVPCAccessExecutionRole**。

   1. 在結果清單中，選取角色旁的核取方塊，然後選擇**下一步**。

1. 在 **角色名稱** 輸入 **lambda-vpc-sqs-role**，然後選擇 **建立角色**。

在教學課程的後續階段中，需用到您剛才建立的執行角色之 Amazon Resource Name (ARN)。

**尋找執行角色 ARN 的方式**

1. 開啟 IAM 主控台的[角色](https://console.aws.amazon.com/iamv2/home#/roles)頁面，然後選擇您的角色 (`lambda-vpc-sqs-role`)。

1.  複製 **ARN** 區段中顯示的**摘要**。

## 建立 Lambda 部署套件
<a name="vpc-rds-create-deployment-package"></a>

![\[\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/TUT_Lambda_step4.png)


下面的範例 Python 程式碼使用 [PyMySQL](https://pymysql.readthedocs.io/en/latest/) 套件開啟與資料庫的連線。您第一次調用函數時，它還會建立一個名為 `Customer` 的新資料表。該資料表使用以下結構描述，其中 `CustID` 是主索引鍵：

```
Customer(CustID, Name)
```

函數也會使用 PyMySQL 將記錄新增到此資料表。函數會使用您要新增至 Amazon SQS 佇列的訊息中指定的客戶 ID 和名稱以新增記錄。

程式碼會在處理常式函數之外建立與資料庫的連線。在初始化程式碼中建立連線，允許後續的函數調用重複使用連線並提高效能。在生產應用程式中，您也可以使用[佈建並行](https://docs.aws.amazon.com/lambda/latest/dg/provisioned-concurrency.html)初始化請求的資料庫連線數目。只要函數調用後就可以使用這些連線。

```
import sys
import logging
import pymysql
import json
import os

# rds settings
user_name = os.environ['USER_NAME']
password = os.environ['PASSWORD']
rds_proxy_host = os.environ['RDS_PROXY_HOST']
db_name = os.environ['DB_NAME']

logger = logging.getLogger()
logger.setLevel(logging.INFO)

# create the database connection outside of the handler to allow connections to be
# re-used by subsequent function invocations.
try:
        conn = pymysql.connect(host=rds_proxy_host, user=user_name, passwd=password, db=db_name, connect_timeout=5)
except pymysql.MySQLError as e:
    logger.error("ERROR: Unexpected error: Could not connect to MySQL instance.")
    logger.error(e)
    sys.exit(1)

logger.info("SUCCESS: Connection to RDS for MySQL instance succeeded")

def lambda_handler(event, context):
    """
    This function creates a new RDS database table and writes records to it
    """
    message = event['Records'][0]['body']
    data = json.loads(message)
    CustID = data['CustID']
    Name = data['Name']

    item_count = 0
    sql_string = f"insert into Customer (CustID, Name) values(%s, %s)"

    with conn.cursor() as cur:
        cur.execute("create table if not exists Customer ( CustID  int NOT NULL, Name varchar(255) NOT NULL, PRIMARY KEY (CustID))")
        cur.execute(sql_string, (CustID, Name))
        conn.commit()
        cur.execute("select * from Customer")
        logger.info("The following items have been added to the database:")
        for row in cur:
            item_count += 1
            logger.info(row)
    conn.commit()

    return "Added %d items to RDS for MySQL table" %(item_count)
```

**注意**  
在此範例中，您的資料庫存取憑證會儲存為環境變數。在生產應用程式中，我們建議您將 [AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html) 用作更安全的選項。請注意，如果您的 Lambda 函數在 VPC 中，若要連線到 Secrets Manager，您需要建立 VPC 端點。請參閱 [How to connect to Secrets Manager service within a Virtual Private Cloud](https://aws.amazon.com/blogs/security/how-to-connect-to-aws-secrets-manager-service-within-a-virtual-private-cloud/)，以了解更多內容。

 若要在函數程式碼中包含 PyMySQL 相依性，請建立 .zip 部署套件。下列指令適用於 Linux、macOS 或 Unix：

**建立 .zip 部署套件的方式**

1. 將程式碼範例儲存為名為 `lambda_function.py` 的檔案。

1. 在您建立 `lambda_function.py` 檔案的同一個目錄中，建立名為 `package` 的新目錄並安裝 PyMySQL 程式庫。

   ```
   mkdir package
   pip install --target package pymysql
   ```

1. 建立一個包含應用程式程式碼和 PyMySQL 程式庫的 zip 檔案。在 Linux 或 MacOS 中，執行下列 CLI 命令。在 Windows 中，使用您偏好的 zip 工具建立 `lambda_function.zip` 檔案。您的 `lambda_function.py` 原始程式碼檔案和包含相依項的資料夾必須安裝在 .zip 檔案的根目錄中。

   ```
   cd package
   zip -r ../lambda_function.zip .
   cd ..
   zip lambda_function.zip lambda_function.py
   ```

   您也可以使用 Python 虛擬環境建立部署套件。請參閱[使用 .zip 封存檔部署 Python Lambda 函數](https://docs.aws.amazon.com/lambda/latest/dg/python-package.html#python-package-create-package-with-dependency)

## 更新 Lambda 函數
<a name="vpc-rds-update-function"></a>

現在您可以使用剛才建立的 .zip 套件，使用 Lambda 主控台更新 Lambda 函數。若要讓函數存取資料庫，還需要使用存取憑證來設定環境變數。

**更新 Lambda 函數**

1. 開啟 Lambda 主控台的[函數](https://console.aws.amazon.com/lambda/home#/functions)頁面，然後選擇您的函數 `LambdaFunctionWithRDS`。

1. 在**執行階段設定**索引標籤中選取**編輯**，將函數的**執行階段**變更為 **Python 3.10**。

1. 將**處理器**變更為 `lambda_function.lambda_handler`。

1. 在**程式碼**標籤中，選擇**上傳來源**，然後選擇 **.zip 檔案**。

1. 選取您在上一個階段建立的 `lambda_function.zip` 檔案，然後選擇**儲存**。

現在，請使用您先前建立的執行角色設定函數。這會授予函數存取資料庫執行個體和輪詢 Amazon SQS 佇列所需的許可。

**函數的執行角色。**

1. 在 Lambda 主控台的[函數](https://console.aws.amazon.com/lambda/home#/functions)頁面中，選取**組態**索引標籤，然後選擇**許可**。

1. 在**執行角色**中，選擇**編輯**。

1. 在**現有角色**中，選擇您的執行角色 (`lambda-vpc-sqs-role`)。

1. 選擇**儲存**。

**設定函數的環境變數**

1. 在 Lambda 主控台的[函數](https://console.aws.amazon.com/lambda/home#/functions)頁面中，選取**組態**索引標籤，然後選擇**環境變數**。

1. 選擇**編輯**。

1. 若要新增資料庫存取憑證，請執行下列動作：

   1. 選擇**新增環境變數**，然後針對**索引鍵**輸入 **USER\$1NAME**，針對**值**輸入 **admin**。

   1. 選擇**新增環境變數**，然後針對**索引鍵**輸入 **DB\$1NAME**，針對**值**輸入 **ExampleDB**。

   1. 選擇**新增環境變數**，然後針對**索引鍵**輸入 **PASSWORD**，針對**值**輸入您在建立資料庫時選擇的密碼。

   1. 選擇**新增環境變數**，然後針對**索引鍵**輸入 **RDS\$1PROXY\$1HOST**，針對**值**輸入您先前備註的 RDS Proxy 端點。

   1. 選擇**儲存**。

## 在主控台中測試您的 Lambda 函數
<a name="vpc-rds-test-function"></a>

![\[\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/TUT_Lambda_step5.png)


您現在可使用 Lambda 主控台來測試您的函數。請建立一個測試事件，該事件會模擬您在教學課程的最後階段中，使用 Amazon SQS 調用函數時會接收到的資料。測試事件會包含一個 JSON 物件，指定要新增到函數所建立 `Customer` 資料表中的客戶 ID 和客戶名稱。

**測試 Lambda 函數**

1. 開啟 Lambda 主控台的[函數](https://console.aws.amazon.com/lambda/home#/functions)頁面，然後選擇您的函數。

1. 選擇**測試**區段。

1. 選擇**建立新活動**並輸入 **myTestEvent** 對於事件的名稱。

1. 將下列程式碼複製到**事件 JSON** 中，然後選擇**儲存**。

   ```
   {
     "Records": [
       {
         "messageId": "059f36b4-87a3-44ab-83d2-661975830a7d",
         "receiptHandle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...",
         "body": "{\n     \"CustID\": 1021,\n     \"Name\": \"Martha Rivera\"\n}",
         "attributes": {
           "ApproximateReceiveCount": "1",
           "SentTimestamp": "1545082649183",
           "SenderId": "AIDAIENQZJOLO23YVJ4VO",
           "ApproximateFirstReceiveTimestamp": "1545082649185"
         },
         "messageAttributes": {},
         "md5OfBody": "e4e68fb7bd0e697a0ae8f1bb342846b3",
         "eventSource": "aws:sqs",
         "eventSourceARN": "arn:aws:sqs:us-west-2:123456789012:my-queue",
         "awsRegion": "us-west-2"
       }
     ]
   }
   ```

1. 選擇**測試**。

在**執行結果**索引標籤中，您應該會看到類似**函數日誌**中顯示的結果：

```
[INFO] 2023-02-14T19:31:35.149Z bdd06682-00c7-4d6f-9abb-89f4bbb4a27f The following items have been added to the database:
[INFO] 2023-02-14T19:31:35.149Z bdd06682-00c7-4d6f-9abb-89f4bbb4a27f (1021, 'Martha Rivera')
```

## 建立 Amazon SQS 佇列
<a name="vpc-rds-create-queue"></a>

![\[\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/TUT_Lambda_step6.png)


您已成功測試 Lambda 函數和 Amazon RDS 資料庫執行個體的整合。現在請建立 Amazon SQS 佇列，用於在教學課程的最後階段調用您的 Lambda 函數。

**建立 Amazon SQS 佇列的方式 (主控台)**

1. 開啟 Amazon SQS 主控台的[佇列](https://console.aws.amazon.com/sqs/v2/home#/queues)頁面，然後選取**建立佇列**。

1. 將**類型**保留為**標準**，然後在佇列名稱輸入 **LambdaRDSQueue**。

1. 保持選取所有預設選項，然後選擇**建立佇列**。

## 建立事件來源映射以調用 Lambda 函數
<a name="vpc-rds-create-event-source-mapping"></a>

![\[\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/TUT_Lambda_step7.png)


[事件來源映射](https://docs.aws.amazon.com/lambda/latest/dg/invocation-eventsourcemapping.html)是一種 Lambda 資源，它可從串流或佇列中讀取項目並調用 Lambda 函數。設定事件來源映射時，您可以指定批次大小，以便將串流或佇列中的記錄批次處理成單一承載。在此範例中，您將批次大小設定為 1，以便在每次傳送訊息到佇列時都調用 Lambda 函數。您可以使用 AWS CLI 或 Lambda 主控台來設定事件來源映射。

**建立事件來源映射的方式 (主控台)**

1. 開啟 Lambda 主控台的[函數](https://console.aws.amazon.com/lambda/home#/functions)頁面，然後選擇您的函數 (`LambdaFunctionWithRDS`)。

1. 在**函數概觀**區段中，選擇**新增觸發條件**。

1. 來源請選取 **Amazon SQS**，然後選取佇列的名稱 (`LambdaRDSQueue`)。

1. **批次大小**請輸入 **1**。

1. 將所有其他選項設定保留為預設值，然後選擇**新增**。

您現在可以透過將訊息新增至 Amazon SQS 佇列以測試完整的設定。

## 測試和監控設定
<a name="vpc-rds-test-setup"></a>

![\[\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/TUT_Lambda_step8.png)


若要測試完整的設定，請使用主控台將訊息新增至 Amazon SQS 佇列。然後您可以使用 CloudWatch Logs 確認 Lambda 函數正如預期將記錄寫入資料庫。

**測試和監控設定的方式**

1. 開啟 Amazon SQS 主控台的[佇列](https://console.aws.amazon.com/sqs/v2/home#/queues)頁面，然後選取您的佇列 (`LambdaRDSQueue`)。

1. 選擇**傳送和接收訊息**，然後將以下 JSON 貼到**傳送訊息**區段裡的**訊息內文**中。

   ```
   {
       "CustID": 1054,
       "Name": "Richard Roe"
   }
   ```

1. 選擇 **傳送訊息** 。

   將訊息傳送至佇列會導致 Lambda 透過事件來源映射調用您的函數。若要確認 Lambda 已如預期調用您的函數，請使用 CloudWatch Logs 確認函數是否已將客戶名稱和 ID 寫入您的資料庫資料表中。

1. 開啟 CloudWatch 主控台的[日誌群組](https://console.aws.amazon.com/cloudwatch/home#logsV2:log-groups)頁面，然後為您的函數選取日誌群組 (`/aws/lambda/LambdaFunctionWithRDS`)。

1. 在**日誌串流**區段中，選擇最新的日誌串流。

   您的資料表應該會包含兩個客戶記錄，分別來自您的函數的每次調用。在日誌串流中，您應該會看到類似以下的訊息：

   ```
   [INFO] 2023-02-14T19:06:43.873Z 45368126-3eee-47f7-88ca-3086ae6d3a77 The following items have been added to the database:
   [INFO] 2023-02-14T19:06:43.873Z 45368126-3eee-47f7-88ca-3086ae6d3a77 (1021, 'Martha Rivera')
   [INFO] 2023-02-14T19:06:43.873Z 45368126-3eee-47f7-88ca-3086ae6d3a77 (1054, 'Richard Roe')
   ```

## 清除您的資源
<a name="rds-tutorial-cleanup"></a>

除非您想要保留為此教學課程建立的資源，否則您現在便可刪除。透過刪除您不再使用 AWS 的資源，您可以避免 AWS 帳戶產生不必要的費用。

**若要刪除 Lambda 函數**

1. 開啟 Lambda 主控台中的 [函數頁面](https://console.aws.amazon.com/lambda/home#/functions)。

1. 選擇您建立的函數。

1. 選擇 **Actions** (動作)、**Delete** (刪除)。

1. 選擇 **Delete** (刪除)。

**若要刪除執行角色**

1. 開啟 IAM 主控台中的 [角色頁面](https://console.aws.amazon.com/iam/home#/roles) 。

1. 選取您建立的執行角色。

1. 選擇 **Delete role** (刪除角色)。

1. 選擇 **Yes, delete (是，刪除)**。

**刪除 MySQL 資料庫執行個體**

1. 在 Amazon RDS 主控台開啟 [Databases (資料庫) 頁面](https://console.aws.amazon.com//rds/home#databases:)。

1. 選取您建立的資料庫。

1. 選擇 **動作**、**刪除**。

1. 取消勾選 **建立最終快照** 核取方塊。

1. 在文字方塊中輸入 **delete me**。

1. 選擇 **刪除** 。

**刪除 Amazon SQS 佇列**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/sqs/](https://console.aws.amazon.com/sqs/)：// 開啟 Amazon SQS 主控台。

1. 選取您建立的佇列。

1. 選擇 **刪除** 。

1. 在文字方塊中輸入 **delete**。

1. 選擇**刪除**。