

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用 JDBC 连接到您的数据库
<a name="connecting-via-jdbc"></a>

本指南将引导您使用 **Java 数据库连接 (JDBC) 将数据库连接**到 Amazon Connect 决策。您需要为数据库凭证设置安全加密，并建立 Amazon Connect Decisions 可用于访问您的数据的连接。

## 什么是 JDBC 连接以及何时应该使用它？
<a name="connecting-via-jdbc-what-is-jdbc"></a>

JDBC 连接允许 Amazon Connect Decisions 连接到您的现有数据库以读取数据，而不必要求您导出和上传 CSV 文件或设置自己的提取、转换、加载 (ETL) 管道到 S3。在以下情况下，这种方法是理想的选择：
+ 您的数据已存储在 AWS Glue-compatible 关系数据库中。有关兼容的数据库和版本，请参阅[本指南](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-connect-jdbc-home.html)。
+ 您希望无需手动导出文件即可进行实时或近实时的数据访问
+ 您的数据量很大，并且经常更新
+ 您更愿意将数据保存在当前位置而不是复制
+ 如果您使用的是较小的数据集或更喜欢基于文件的上传，那么标准的 CSV 上传过程可能会更简单地满足您的需求。有关此过程的更多详细信息，请参阅数据加载用户指南。

## 先决条件
<a name="connecting-via-jdbc-prerequisites"></a>

在开始之前，请确保您满足以下条件：
+ 一个有权创建 KMS 密钥和 Secrets Manager 资源的 AWS 账户
+ 您的 AWS 账户 ID 以及 Amazon Connections 将运作的地区
+ 数据库连接详细信息：主机名、端口、数据库名称和凭据
+ 对您的数据库进行管理访问以验证连接
+ 您的数据库已配置为接受来自 AWS 服务的连接

## 创建 Customer-Managed KMS 密钥
<a name="connecting-via-jdbc-create-kms-key"></a>

在将数据库连接到 Amazon Connect Decisions 之前，您需要为数据库凭证设置加密。AWS 密钥管理服务 (KMS) Management Service 提供了此安全层，可确保您的连接详细信息受到保护。

### 创建您的 KMS 密钥
<a name="connecting-via-jdbc-create-your-kms-key"></a>

1. **导航到 AWS KMS 控制台**
   + 在浏览器中打开 AWS 管理控制台
   + 在顶部的搜索栏中，键入 “KMS”，然后从结果中选择 “密钥管理服务”
   + 这将打开 KMS 控制面板，您将在其中管理加密密钥

1. **启动密钥创建**
   + 在 KMS 控制面板上，找到并单击右上角的**创建密钥**按钮
   + 这将启动密钥创建向导，该向导将指导您完成设置过程

1. **配置密钥类型和用法**
   + 在 “配置密钥” 页面上，选择 **Symmetric** 作为密钥类型（这是默认且推荐的选项）
   + 保持 “密钥用法” 下的 “加密和解密” 处于选中状态

1. **设置密钥识别详细信息**
   + 在 “别名” 字段中，输入密钥的描述性名称，例如 `aws-supply-chain-database-key`
   + 在 “描述” 字段中，添加诸如 “Amazon Connections 数据库凭证的加密密钥” 之类的上下文
   + （可选）添加标签以帮助组织和跟踪您的 AWS 资源（例如，密钥：“项目”，值：“Amazon Connections Decisions”）

1. **定义密钥管理权限**
   + 选择应该能够管理此密钥（创建、删除、修改策略）的 IAM 用户或角色
   + 至少要包括你自己的管理员角色，以确保你以后可以在需要时修改密钥
   + 这些管理员可以管理密钥，但不会自动获得使用密钥的权限 encryption/decryption
   + 在 “密钥删除” 部分，允许密钥管理员删除此密钥。 （这是默认和推荐的选项）

1. **定义密钥使用权限**
   + 在此页面上，您将看到用于选择可以使用密钥的 IAM 用户和角色的选项
   + 跳过此处选择特定用户的步骤，您将在下一步中配置服务权限

1. **为 Amazon Connections 服务配置密钥策略**
   + 你会看到一个带有默认 JSON 的策略编辑器
   + 在 KMS 密钥策略编辑器中，将以下语句附加到现有的 “声明” 数组中
   + 该政策授予您的账户完全控制权，并允许 Amazon Connections 的服务（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控制台中看到您的新密钥列出，其状态为 “已启用”。密钥现已准备就绪，可以在 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 Connections 生产环境的数据库凭证” 之类的描述
   + 如果组织需要，可以添加标签（例如，密钥：“环境”，值：“生产”）

1. **添加资源权限**
   + 单击 “编辑权限”。在策略编辑器中，粘贴以下策略。该政策允许 Amazon Connections 的服务读取你的秘密

   ```
   {
     "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 Connections 检索您的数据库凭证

1. **配置轮换（可选）**
   + 在此设置中，您可以通过选择 “**禁用自动旋转” 来跳过自动旋转**
   + 如果您的安全策略需要，您可以稍后启用轮换

1. **审核和创建**
   + 查看您的所有秘密信息
   + 单击 “**存储**” 以创建密钥
   + 你将返回到 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 Connections 中建立 JDBC 连接了。

### 配置您的 JDBC 连接
<a name="connecting-via-jdbc-configure-connection"></a>

1. **导航至 Amazon Connect 决策 > 数据管理**
   + 登录到你的 Amazon Connections 实例
   + 从主导航栏中选择 “数据管理”
   + 在选项卡导航中，导航到 “连接”
   + 选择 “新建连接” 以创建新连接

1. **输入您的连接详情**
   + **连接名称（必填）：**输入此连接的唯一标识符（例如，“生产数据库”）
   + **描述（可选）：**添加有关此连接的目的和用法的详细信息，以帮助您的团队了解它访问了哪些数据
   + **JDBC 网址（必填）：**按以下格式输入完整的 JDBC 连接字符串：`jdbc:<database-type>://<hostname>:<port>/<database>`（例如，）`jdbc:postgresql://db.example.com:5432/mydb`
   + **架构名称（可选）：**根据需要指定数据库架构（例如，“public”、“dbo”、“myschema”）。留空以使用数据库的默认架构
   + **秘密 ARN（必填）：**粘贴您在步骤 2 中保存的秘密 ARN。这允许 Amazon Connections 从 Secrets Manager 安全地检索您的数据库凭证。
   + **强制执行 SSL 连接：**选中此复选框（推荐）以要求对数据库连接进行 SSL/TLS 加密
   + **VPC 终端节点服务名称（必填）：**输入通过 AWS 进行私有连接的 VPC 终端节点服务名称 PrivateLink （格式：`com.amazonaws.vpce.<region>.vpce-svc-xxxxxxxxx`）

1. **Connect 连接到您的数据库**
   + 单击 “Connect” 以测试并建立连接。Amazon Connect Decisions 将验证它是否可以使用提供的凭证成功连接到您的数据库。此步骤最多可能需要 2 分钟，因此请不要在连接期间离开此屏幕。
   + 如果连接成功，您将自动导航到表格选择
   + 如果连接失败：
     + 查看您的连接详细信息以确保所有字段都准确无误：
       + 验证您的密钥 ARN 是否正确
       + 确认您的数据库凭证准确无误
       + 检查您的 JDBC 网址格式是否正确
       + 确保您的数据库已配置为接受来自 AWS 服务的连接
       + 验证您的 KMS 密钥和 Secrets Manager 策略配置是否正确
     + 您还可以使用聊天体验通过提问 “为什么我的数据库连接失败？” 之类的问题来帮助解决连接问题 或 “帮我调试我的 JDBC 连接”

1. **选择要收录的表**
   + 连接后，您将看到 “选择表” 屏幕，其中显示了数据库中所有可用的表
   + 选中要收录的每张表旁边的复选框

1. **配置表格刷新计划**
   + 对于每个选定的表格，单击 “操作” 列中的三点菜单，然后选择 “计划刷新”
   + 在配置负载详细信息对话框中，设置：
     + **节奏：**刷新频率（每小时、每天、每周或自定义）
     + **开始时间：**开始刷新的时间（以 UTC 和您的时区偏移量显示）
     + **刷新类型：**选择完成刷新（替换所有数据）或增量更新（向现有数据添加新数据；需要选择记录时间戳列）
     + 根据需要对每张桌子重复此操作
   + 配置完所有表后，单击 “开始映射”

1. **继续进行数据映射**
   + 从现在开始，体验与我们的数据加载流程相同
   + 按照《数据载入用户指南》的 “数据映射” 部分完成设置

### 会发生什么
<a name="connecting-via-jdbc-connection-what-to-expect"></a>

建立连接并选择表后，Amazon Connect Decisions 就可以从您的数据库中读取数据。连接保持活跃和安全，证书通过 AWS Secrets Manager 进行加密和管理。您无需在 Amazon Connect 决策中手动更新凭证，您在 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 网址格式**： Double-check您的 JDBC 网址语法与您的数据库类型相匹配以避免连接错误

### 数据刷新策略
<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 Connections 将自动使用新的证书
+ **记录自定义配置**：记下任何特殊的刷新计划、转换逻辑或连接要求以供团队参考
+ **定期查看表选择**：随着数据需求的变化，重新审视您正在采集哪些表，以及刷新计划是否仍然符合业务需求