

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

# 连接到 Amazon Redshift
<a name="connectors-redshift"></a>

要将 App Studio 与 Amazon Redshift 连接以使构建者能够在应用程序中访问和使用 Amazon Redshift 资源，您必须执行以下步骤：

1. [第 1 步：创建和配置 Amazon Redshift 资源](#connectors-redshift-create-resources)

1. [第 2 步：创建具有相应亚马逊 Redshift 权限的 IAM 策略和角色](#connectors-redshift-iam)

1. [第 3 步：创建亚马逊 Redshift 连接器](#connectors-redshift-create-connector)

## 第 1 步：创建和配置 Amazon Redshift 资源
<a name="connectors-redshift-create-resources"></a>

使用以下过程创建和配置要用于 App Studio 的 Amazon Redshift 资源。

**设置 Amazon Redshift 以与 App Studio 配合使用**

1. 登录 AWS 管理控制台 并打开亚马逊 Redshift 控制台，网址为。[https://console.aws.amazon.com/redshiftv2/](https://console.aws.amazon.com/redshiftv2/)

   我们建议使用中创建的管理用户[创建管理用户来管理 AWS 资源](setting-up-first-time-admin.md#setting-up-create-admin-user)。

1. 创建 Redshift 无服务器数据仓库或预配置集群。有关更多信息，请参阅《*亚马逊* Redshift 用户指南》中的 “[使用 Redshift Serverless 创建数据仓库](https://docs.aws.amazon.com/redshift/latest/gsg/new-user-serverless.html#serverless-console-resource-creation)[” 或 “创建集群](https://docs.aws.amazon.com/redshift/latest/mgmt/managing-clusters-console.html#create-cluster)”。

1. 配置完成后，选择 “**查询数据**” 以打开查询编辑器。连接到数据库。

1. 更改以下设置：

   1. 将 “**隔离会话**” 切换开关设置为`OFF`。这是必需的，这样您才能看到其他用户所做的数据更改，例如来自正在运行的 App Studio 应用程序所做的更改。

   1. 选择 “齿轮” 图标。选择 **Account settings (账户设置)**。将**最大并发连接数**增加到`10`。这是可以连接到 Amazon Redshift 数据库的查询编辑器会话数量的限制。它不适用于其他客户端，例如 App Studio 应用程序。

1. 在`public`架构下创建您的数据表。 `INSERT`这些表中的任何初始数据。

1. 在查询编辑器中运行以下命令：

   以下命令创建数据库用户并将其与 App Studio {{AppBuilderDataAccessRole}} 使用的名为 IAM 角色关联起来。您将在后面的步骤中创建 IAM 角色，此处的名称必须与为该角色指定的名称相匹配。

   ```
   CREATE USER "IAMR:{{AppBuilderDataAccessRole}}" WITH PASSWORD DISABLE;
   ```

   以下命令向 App Studio 授予所有表的所有权限。
**注意**  
为了获得最佳安全实践，您应将此处的权限范围缩小到相应表所需的最低权限。有关该`GRANT`命令的更多信息，请参阅 Amazon Redshift 数据库开发者指南中的[授权](https://docs.aws.amazon.com/redshift/latest/dg/r_GRANT.html)。

   ```
   GRANT ALL ON ALL TABLES IN SCHEMA public to "IAMR:{{AppBuilderDataAccessRole}}";
   ```

## 第 2 步：创建具有相应亚马逊 Redshift 权限的 IAM 策略和角色
<a name="connectors-redshift-iam"></a>

要在 App Studio 中使用 Amazon Redshift 资源，管理员必须创建 IAM 策略和角色来授予 App Studio 访问资源的权限。IAM 策略控制构建者可以使用的数据范围以及可以针对这些数据调用的操作，例如创建、读取、更新或删除。然后，IAM 策略将附加到 App Studio 使用的 IAM 角色。

我们建议为每项服务和策略至少创建一个 IAM 角色。例如，如果构建者在 Amazon Redshift 中创建两个由不同表支持的应用程序，则管理员应创建两个 IAM 策略和角色，分别为 Amazon Redshift 中的每个表创建一个。

### 步骤 2a：创建具有相应亚马逊 Redshift 权限的 IAM 策略
<a name="connectors-redshift-iam-policy"></a>

您在 App Studio 中创建和使用的 IAM 策略应仅包含应用程序遵循最佳安全实践所需的相应资源的最低限度权限。

**创建具有相应亚马逊 Redshift 权限的 IAM 策略**

1. 使用有权创建 [IAM 策略的用户登录 IAM 控制台](https://console.aws.amazon.com/iam)。我们建议使用中创建的管理用户[创建管理用户来管理 AWS 资源](setting-up-first-time-admin.md#setting-up-create-admin-user)。

1. 在左侧导航栏中，选择**策略**。

1. 选择**创建策略**。

1. 在**策略编辑器**部分，选择 **JSON** 选项。

1. 键入或粘贴 JSON 策略文档。以下选项卡包含预配置和无服务器 Amazon Redshift 的示例策略。
**注意**  
以下政策适用于所有使用通配符 () 的 Amazon Redshift 资源。`*`为了获得最佳安全实践，您应将通配符替换为要在 App Studio 中使用的资源的亚马逊资源名称 (ARN)。

------
#### [ Provisioned ]

------
#### [ JSON ]

****  

   ```
   {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
         {
         "Sid": "ProvisionedRedshiftForAppStudio",
         "Effect": "Allow",
            "Action": [
               "redshift:DescribeClusters",
               "redshift:GetClusterCredentialsWithIAM",
               "redshift-data:ListDatabases",
               "redshift-data:ListTables",
               "redshift-data:DescribeTable",
               "redshift-data:DescribeStatement",
               "redshift-data:ExecuteStatement",
               "redshift-data:GetStatementResult"
            ],
            "Resource": "*"
         }
      ]
   }
   ```

------

------
#### [ Serverless ]

------
#### [ JSON ]

****  

   ```
   {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
         {
         "Sid": "ServerlessRedshiftForAppStudio",
         "Effect": "Allow",
            "Action": [
               "redshift-serverless:ListNamespaces",
               "redshift-serverless:GetCredentials",
               "redshift-serverless:ListWorkgroups",
               "redshift-data:ListDatabases",
               "redshift-data:ListTables",
               "redshift-data:DescribeTable",
               "redshift-data:DescribeStatement",
               "redshift-data:ExecuteStatement",
               "redshift-data:GetStatementResult"
            ],
            "Resource": "*"
         }
      ]
   }
   ```

------

------

1. 选择**下一步**。

1. 在**查看并创建**页面上，提供**策略名称**（例如**RedshiftServerlessForAppStudio**或**RedshiftProvisionedForAppStudio**）和**描述**（可选）。

1. 选择**创建策略**以创建策略。

### 步骤 2b：创建一个 IAM 角色以授予 App Studio 访问亚马逊 Redshift 资源的权限
<a name="connectors-redshift-iam-role"></a>

现在，创建一个使用您之前创建的策略的 IAM 角色。App Studio 将使用此策略来访问已配置的 Amazon Redshift 资源。

**创建 IAM 角色以授予 App Studio 访问亚马逊 Redshift 资源的权限**

1. 使用有权创建 [IAM 角色的用户登录 IAM 控制台](https://console.aws.amazon.com/iam)。我们建议使用中创建的管理用户[创建管理用户来管理 AWS 资源](setting-up-first-time-admin.md#setting-up-create-admin-user)。

1. **在左侧导航栏中，选择角色**

1. 选择**创建角色**。

1. 在**可信实体类型**中，选择**自定义信任策略**。

1. 将默认策略替换为以下策略，以允许 App Studio 应用程序在您的账户中扮演此角色。

   您必须替换策略中的以下占位符。要使用的值可以在 App Studio 的 **“帐户设置”** 页面中找到。
   + {{111122223333}}替换为 AWS 用于设置 App Studio 实例的账户的账号，该**AWS 账号在 App Studio 实例的账户设置中作为账户 ID** 列出。
   + {{11111111-2222-3333-4444-555555555555}}替换为您的 App Studio 实例 ID，该**实例在 App Studi** o 实例的账户设置中作为实例 ID 列出。

------
#### [ JSON ]

****  

   ```
   { 
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           { 
               "Effect": "Allow",
               "Principal": { 
                   "AWS": "arn:aws:iam::{{111122223333}}:root"
               }, 
               "Action": "sts:AssumeRole",
               "Condition": {
                   "StringEquals": {
                           "aws:PrincipalTag/IsAppStudioAccessRole": "true",
                           "sts:ExternalId": "{{11111111-2222-3333-4444-555555555555}}"
                   }
               }
           } 
       ]
   }
   ```

------

   选择**下一步**。

1. 在**添加权限**中，搜索并选择您在上一步中创建的策略（**RedshiftServerlessForAppStudio**或**RedshiftProvisionedForAppStudio**）。选择策略旁边的 **\+** 将展开策略以显示其授予的权限，选中该复选框将选择该策略。

   选择**下一步**。

1. 在 “**名称、查看和创建**” 页面上，提供**角色名称**和**描述**。
**重要**  
此处的角色名称必须与 [第 1 步：创建和配置 Amazon Redshift 资源](#connectors-redshift-create-resources) ({{AppBuilderDataAccessRole}}) 中`GRANT`命令中使用的角色名称相匹配。

1. 在**步骤 3：添加标签**中，选择**添加新标签以添加以下标签**以提供 App Studio 访问权限：
   + **密钥：**`IsAppStudioDataAccessRole`
   + **值：**`true`

1. 选择 “**创建角色**” 并记下生成的亚马逊资源名称 (ARN)，在 App Studio 中[创建 Amazon Redshift 连接器时，您将需要该](#connectors-redshift-create-connector)名称。

## 第 3 步：创建亚马逊 Redshift 连接器
<a name="connectors-redshift-create-connector"></a>

现在，您已经配置了 Amazon Redshift 资源以及 IAM 策略和角色，请使用这些信息在 App Studio 中创建连接器，构建者可以使用该连接器将其应用程序连接到 Amazon Redshift。

**注意**  
您必须在 App Studio 中拥有管理员角色才能创建连接器。

**为亚马逊 Redshift 创建连接器**

1. 导航到 App Studio。

1. 在左侧导航栏的**管理**区域，选择**连接器**。您将进入一个页面，其中显示了现有连接器的列表，其中包含每个连接器的一些详细信息。

1. 选择 **\+ 创建连接器**。

1. 选择**亚马逊 Redshift 连接器**。

1. 通过填写以下字段来配置您的连接器：
   + **名称：**为您的连接器提供一个名称。
   + **描述：**为您的连接器提供描述。
   + **IAM 角色：**输入中创建的 IAM 角色的亚马逊资源名称 (ARN)。[步骤 2b：创建一个 IAM 角色以授予 App Studio 访问亚马逊 Redshift 资源的权限](#connectors-redshift-iam-role)有关 IAM 的更多信息，请参阅《IAM 用户指南》[https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html)。
   + **区域：**选择您的亚马逊 Redshift 资源所在的地 AWS 区。
   + **计算类型：**选择您使用的是 Amazon Redshift Serverless 还是预配置集群。
   + 选择@@ **集群或工作组：如果选择** “**已配置**”，请选择要连接到 App Studio 的集群。如果选择了**无服务器**，请选择工作组。
   + **数据库选择：**选择要连接到 App Studio 的数据库。
   + **可用表：**选择要连接到 App Studio 的表。

1. 选择**下一步**。查看连接信息，然后选择**创建**。

1. 新创建的连接器将出现在**连接**器列表中。