

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

# 使用 JDBC 連線至您的資料庫
<a name="connecting-via-jdbc"></a>

本指南會逐步引導您使用 **Java Database Connectivity** (JDBC) 將資料庫連線至 Amazon Connect Decisions。您將為資料庫登入資料設定安全加密，並建立 Amazon Connect Decisions 可用來存取資料的連線。

## 什麼是 JDBC 連線以及何時應使用它？
<a name="connecting-via-jdbc-what-is-jdbc"></a>

JDBC 連線可讓 Amazon Connect Decisions 連線至現有的資料庫以讀取資料，而不是要求您匯出和上傳 CSV 檔案，或設定自己的擷取、轉換、載入 (ETL) 管道至 S3。此方法的理想時機如下：
+ 您的資料已存放在與 AWS Glue 相容的關聯式資料庫中。如需相容的資料庫和版本，請參閱[本指南](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-connect-jdbc-home.html)。
+ 您想要即時或near-real-time的資料存取，無需手動匯出檔案
+ 您的資料磁碟區很大且經常更新
+ 您偏好將資料保留在目前的位置，而不是將其複製
+ 如果您使用的是較小的資料集，或偏好以檔案為基礎的上傳，標準 CSV 上傳程序可能更符合您的需求。如需此程序的詳細資訊，請參閱資料加入使用者指南。

## 先決條件
<a name="connecting-via-jdbc-prerequisites"></a>

開始前，請確保您具備以下條件：
+ 具有建立 KMS 金鑰和 Secrets Manager 資源許可的 AWS 帳戶
+ 您的 AWS 帳戶 ID 和 Amazon Connect Decisions 將運作的區域
+ 資料庫連線詳細資訊：主機名稱、連接埠、資料庫名稱和登入資料
+ 對資料庫的管理存取權，以驗證連線能力
+ 您的資料庫設定為接受來自 AWS 服務的連線

## 建立客戶受管 KMS 金鑰
<a name="connecting-via-jdbc-create-kms-key"></a>

將資料庫連線至 Amazon Connect Decisions 之前，您需要設定資料庫登入資料的加密。AWS Key Management Service (KMS) 提供此安全層，確保您的連線詳細資訊仍受到保護。

### 建立您的 KMS 金鑰
<a name="connecting-via-jdbc-create-your-kms-key"></a>

1. **導覽至 AWS KMS 主控台**
   + 在瀏覽器中開啟 AWS 管理主控台
   + 在頂端的搜尋列中，輸入 "KMS"，然後從結果中選取 "Key Management Service"
   + 這會開啟 KMS 儀表板，您將在其中管理加密金鑰

1. **啟動金鑰建立**
   + 在 KMS 儀表板上，找到並按一下右上角的**建立金鑰**按鈕
   + 這會啟動金鑰建立精靈，引導您完成設定程序

1. **設定金鑰類型和用量**
   + 在「設定金鑰」頁面上，選取**對稱**做為金鑰類型 （這是預設和建議的選項）
   + 在金鑰用量下保持選取「加密和解密」

1. **設定金鑰識別詳細資訊**
   + 在「Alias」欄位中，輸入金鑰的描述性名稱，例如 `aws-supply-chain-database-key`
   + 在「描述」欄位中，新增內容，例如「Amazon Connect Decisions 資料庫登入資料的加密金鑰」
   + 或者，新增標籤以協助組織和追蹤您的 AWS 資源 （例如，金鑰：「專案」、值：「Amazon Connect 決策」)

1. **定義金鑰管理許可**
   + 選取應該能夠管理此金鑰的 IAM 使用者或角色 （建立、刪除、修改政策）
   + 至少包含您自己的管理員角色，以確保您可以視需要稍後修改金鑰
   + 這些管理員可以管理金鑰，但不會自動擁有將其用於加密/解密的許可
   + 在「金鑰刪除」區段中，允許金鑰管理員刪除此金鑰。（這是預設和建議的選項）

1. **定義金鑰使用許可**
   + 在此頁面上，您將看到選擇可使用金鑰之 IAM 使用者和角色的選項
   + 略過在此處選取特定使用者，您將在下一個步驟中設定服務許可

1. **設定 Amazon Connect Decisions 服務的金鑰政策**
   + 您將看到具有預設 JSON 的政策編輯器
   + 在 KMS 金鑰政策編輯器中，將下列陳述式附加至您現有的「陳述式」陣列
   + 此政策授予您的帳戶完全控制權，並允許 Amazon Connect Decisions 的服務 (Secrets Manager 和 Glue) 解密您的資料庫憑證

   ```
   {
     "Sid": "Allow GDIS service to decrypt",
     "Effect": "Allow",
     "Principal": {
       "Service": "scn.amazonaws.com"
     },
     "Action": [
       "kms:Decrypt",
       "kms:DescribeKey",
       "kms:CreateGrant",
       "kms:GenerateDataKeyWithoutPlaintext"
     ],
     "Resource": "*"
   }
   ```

1. **檢閱並完成**
   + 在摘要頁面上檢閱所有組態設定
   + 確認您的別名、描述和政策正確無誤
   + 按一下**完成**以建立金鑰
   + 建立後，您將返回 KMS 儀表板，您的新金鑰將出現在清單中

### 預期事項
<a name="connecting-via-jdbc-kms-what-to-expect"></a>

金鑰建立是立即的。建立後，您會在 KMS 主控台中看到列出狀態為 "Enabled" 的新金鑰。金鑰現在已準備好在 Secrets Manager 中加密您的資料庫憑證。

## 設定 AWS Secrets Manager
<a name="connecting-via-jdbc-configure-secrets-manager"></a>

現在您已擁有 KMS 金鑰，您將在 AWS Secrets Manager 中建立秘密，以安全地存放資料庫憑證，然後設定允許 Amazon Connect Decisions 存取此秘密的資源政策。

### 建立您的秘密
<a name="connecting-via-jdbc-create-your-secret"></a>

1. **導覽至 AWS Secrets Manager**
   + 在 AWS 管理主控台搜尋列中，輸入「Secrets Manager」
   + 從結果中選取「Secrets Manager」以開啟服務儀表板

1. **開始建立新的秘密**
   + 按一下**儲存新的秘密**按鈕
   + 在「選擇秘密類型」頁面上，選取**其他類型的秘密** （這可讓您靈活地建構登入資料）

1. **輸入您的資料庫登入資料**
   + 在鍵/值對區段中，將資料庫連線詳細資訊新增為**字串**：

   ```
   Key: username, Value: your database username
   Key: password, Value: your database password
   Key: host, Value: your database hostname (e.g., database.example.com)
   Key: port, Value: your database port (e.g., 3306 for MySQL)
   Key: database, Value: your database name
   ```

1. **選取您的加密金鑰**
   + 在「加密金鑰」下，選取**選擇 AWS KMS 金鑰**
   + 從下拉式清單中選取您在步驟 1 中建立的 KMS 金鑰 （例如 `aws-supply-chain-database-key`)
   + 這可確保您的登入資料使用客戶受管金鑰加密

1. **為您的秘密命名**
   + 輸入秘密的描述性名稱，例如 `aws-supply-chain-production-database`
   + 或者，新增描述，例如「Amazon Connect Decisions 生產環境的資料庫登入資料」
   + 視需要為組織新增標籤 （例如金鑰：「環境」、值：「生產」)

1. **新增資源許可**
   + 按一下「編輯許可」。在政策編輯器中，貼上下列政策。此政策允許 Amazon Connect Decisions 的服務讀取您的秘密

   ```
   {
     "Version" : "2012-10-17",
     "Statement" : [ {
       "Effect" : "Allow",
       "Principal" : {
         "Service" : "scn.amazonaws.com"
       },
       "Action" : [ "secretsmanager:GetSecretValue", "secretsmanager:DescribeSecret" ],
       "Resource" : "<COPY-THE-SECRET-ARN-HERE-AFTER-CREATING>"
     } ]
   }
   ```

1. **儲存政策**
   + 按一下**儲存**以套用資源政策
   + 此政策現在處於作用中狀態，並允許 Amazon Connect Decisions 擷取您的資料庫登入資料

1. **設定輪換 （選用）**
   + 針對此設定，您可以選取**停用自動輪換來略過自動輪換**
   + 如果您的安全政策需要輪換，您可以稍後啟用輪換

1. **Review and create (檢閱和建立)**
   + 檢閱您的所有秘密詳細資訊
   + 按一下**儲存**以建立秘密
   + 您將返回 Secrets Manager 儀表板

1. **儲存您的秘密 ARN**
   + 在秘密清單中尋找新建立的秘密
   + 按一下秘密名稱以開啟其詳細資訊頁面
   + 在頂端，您會看到秘密 ARN
   + 複製並儲存此 ARN
   + ARN 格式如下所示： `arn:aws:secretsmanager:us-east-1:123456789012:secret:aws-supply-chain-production-database-AbCdEf`

1. **編輯資源許可**
   + 按一下「編輯許可」
   + 貼上複製的秘密 ARN，並將 取代`<COPY-THE-SECRET-ARN-HERE-AFTER-CREATING>`為您複製的 ARN
   + 按一下**儲存**以連接政策

### 預期事項
<a name="connecting-via-jdbc-secrets-what-to-expect"></a>

您的秘密現在已使用 KMS 金鑰安全地儲存和加密。Amazon Connect Decisions 的服務具有在建立資料庫連線時擷取憑證的許可，但憑證會保持靜態和傳輸中加密。

## 將您的資料庫連線至 Amazon Connect 決策
<a name="connecting-via-jdbc-connect-database"></a>

設定 KMS 金鑰和秘密後，您就可以在 Amazon Connect Decisions 中建立 JDBC 連線。

### 設定您的 JDBC 連線
<a name="connecting-via-jdbc-configure-connection"></a>

1. **導覽至 Amazon Connect 決策 > 資料管理**
   + 登入您的 Amazon Connect Decisions 執行個體
   + 從主要導覽中，選取「資料管理」
   + 在索引標籤導覽中，導覽至「連線」
   + 選取「新連線」以建立新的連線

1. **輸入您的連線詳細資訊**
   + **連線名稱 （必要）：**輸入此連線的唯一識別符 （例如 "production-database")
   + **描述 （選用）：**新增此連線的目的和使用詳細資訊，以協助您的團隊了解其存取的資料
   + **JDBC URL （必要）：**以下列格式輸入您的完整 JDBC 連線字串： `jdbc:<database-type>://<hostname>:<port>/<database>`（例如 `jdbc:postgresql://db.example.com:5432/mydb`)
   + **結構描述名稱 （選用）：**視需要指定資料庫結構描述 （例如 "public"、"dbo"、"myschema")。保留空白以使用資料庫的預設結構描述
   + **秘密 ARN （必要）：**貼上您從步驟 2 儲存的秘密 ARN。這可讓 Amazon Connect Decisions 從 Secrets Manager 安全地擷取您的資料庫登入資料。
   + **強制執行 SSL 連線：**保持選取此核取方塊 （建議），以要求資料庫連線使用 SSL/TLS 加密
   + **VPC 端點服務名稱 （必要）：**透過 AWS PrivateLink 輸入私有連線的 VPC 端點服務名稱 （格式：`com.amazonaws.vpce.<region>.vpce-svc-xxxxxxxxx`)

1. **連線至您的資料庫**
   + 按一下「連線」來測試和建立連線。Amazon Connect Decisions 將驗證是否可以使用提供的登入資料成功連線至您的資料庫。此步驟最多可能需要 2 分鐘，因此請勿在連線期間離開此畫面。
   + 如果連線成功，您會自動導覽至資料表選擇
   + 如果連線失敗：
     + 檢閱您的連線詳細資訊，以確保所有欄位皆正確無誤：
       + 驗證您的秘密 ARN 是否正確
       + 確認您的資料庫登入資料正確無誤
       + 檢查您的 JDBC URL 格式是否正確
       + 確保您的資料庫已設定為接受來自 AWS 服務的連線
       + 確認您的 KMS 金鑰和 Secrets Manager 政策已正確設定
     + 您也可以透過詢問「為什麼我的資料庫連線失敗？」等問題，使用聊天體驗來協助疑難排解連線問題。或「協助我偵錯我的 JDBC 連線」

1. **選取要擷取的資料表**
   + 連線後，您會看到選取資料表畫面，顯示資料庫中所有可用的資料表
   + 選取您要擷取之每個資料表旁的核取方塊

1. **設定資料表重新整理排程**
   + 針對每個選取的資料表，按一下動作欄中的三點功能表，然後選取「排程重新整理」
   + 在設定載入詳細資訊對話方塊中，設定：
     + **Cadence：**重新整理的頻率 （每小時、每日、每週或自訂）
     + **開始時間：**重新整理開始的時間 （以 UTC 顯示，並顯示時區位移）
     + **重新整理類型：**選擇完成重新整理 （取代所有資料） 或增量更新 （將新資料新增至現有資料；需要選取記錄時間戳記欄）
     + 視需要為每個資料表重複
   + 設定所有資料表時按一下開始映射

1. **繼續資料映射**
   + 從現在開始，體驗與我們的資料加入流程相同
   + 遵循資料加入使用者指南中的資料映射區段來完成設定

### 預期事項
<a name="connecting-via-jdbc-connection-what-to-expect"></a>

建立連線並選取資料表後，Amazon Connect Decisions 可以從資料庫讀取資料。連線會保持作用中且安全，並透過 AWS Secrets Manager 加密和管理登入資料。您不需要手動更新 Amazon Connect Decisions 中的登入資料，您在 Secrets Manager 中所做的任何變更都會自動反映。

## 最佳實務
<a name="connecting-via-jdbc-best-practices"></a>

### 安全與存取管理
<a name="connecting-via-jdbc-security-access-management"></a>
+ **安全地存放登入**資料：一律使用 AWS Secrets Manager 來存放資料庫登入資料，絕不要在連線字串或組態檔案中硬式編碼登入資料
+ **啟用 SSL/TLS 加密**：保持啟用「強制 SSL 連線」選項，以確保資料傳輸中加密資料
+ **定期檢閱 KMS 和 Secrets Manager 政策**：確保只有授權的服務和帳戶可以存取您的加密金鑰和秘密
+ **使用最低權限存取**：僅將最低必要許可授予 Amazon Connect Decisions 將用於連線的資料庫使用者

### 連線組態
<a name="connecting-via-jdbc-connection-configuration"></a>
+ **使用描述性連線名稱**：選擇明確、有意義的名稱來表示環境和用途 （例如，「production-inventory-db」而不是「db1」)
+ **記錄您的連線**：使用描述欄位記下連線存取哪些資料、誰擁有它，以及任何特殊考量
+ 在**繼續之前測試連線**：選取資料表和設定重新整理排程之前，請務必驗證連線是否正常運作
+ **驗證 JDBC URL 格式**：再次檢查您的 JDBC URL 語法是否符合您的資料庫類型，以避免連線錯誤

### 資料重新整理策略
<a name="connecting-via-jdbc-data-refresh-strategy"></a>
+ **選擇適當的重新整理節奏**：根據來源資料變更的頻率和業務需求，選取重新整理頻率
+ **低活動期間排程重新整理**：設定資料庫負載較低的重新整理時間，將效能影響降至最低
+ **盡可能使用增量更新**：對於經常變更的大型資料集，增量更新比完全重新整理更有效率
+ **選取有意義的時間戳記資料欄**：使用增量更新時，請選擇準確反映記錄建立或修改時間的資料欄

### 使用聊天進行疑難排解
<a name="connecting-via-jdbc-chat-troubleshooting"></a>
+ **在您的請求中具體說明**：在請求協助疑難排解連線或映射問題時提供清晰的內容
+ **要求說明**：如果您不了解建議或產生的 SQL 查詢，請要求釐清
+ **在接受之前測試所有 SQL 變更**：使用預覽功能來驗證轉換是否與實際資料如預期般運作
+ **利用聊天進行故障診斷**：當連線失敗或重新整理遇到錯誤時，詢問診斷問題，例如「為什麼我的連線失敗？」 或「協助我了解此重新整理錯誤」

### 持續維護
<a name="connecting-via-jdbc-ongoing-maintenance"></a>
+ **定期監控重新整理執行**：檢查資料管理中的目的地和來源索引標籤，以確保重新整理成功完成
+ **迅速解決錯誤**：當 Amazon Connect Decisions 提醒您重新整理失敗時，請快速調查並解決問題，以避免資料漏洞
+ **安全地更新登入**資料：資料庫密碼變更時，在 AWS Secrets Manager 中更新登入資料，Amazon Connect Decisions 會自動使用新的登入資料
+ **文件自訂組態**：記下任何特殊重新整理排程、轉換邏輯或連線需求，以供您的團隊參考
+ **定期檢閱資料表選擇**：隨著資料需求的變化，請重新檢視您正在擷取的資料表，以及重新整理排程是否仍符合業務需求