

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

# 連線至 Amazon Redshift
<a name="connectors-redshift"></a>

若要將 App Studio 與 Amazon Redshift 連線，讓建置器能夠在應用程式中存取和使用 Amazon Redshift 資源，您必須執行下列步驟：

1. [步驟 1：建立和設定 Amazon Redshift 資源](#connectors-redshift-create-resources)

1. [步驟 2：使用適當的 Amazon Redshift 許可建立 IAM 政策和角色](#connectors-redshift-iam)

1. [步驟 3：建立 Amazon 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 管理主控台 ，並在 [https://console.aws.amazon.com/redshiftv2/](https://console.aws.amazon.com/redshiftv2/)：// 開啟 Amazon Redshift 主控台。

   建議使用在 中建立的管理使用者[建立管理使用者以管理 AWS 資源](setting-up-first-time-admin.md#setting-up-create-admin-user)。

1. 建立 Redshift Serverless 資料倉儲或佈建叢集。如需詳細資訊，請參閱《*Amazon 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 資料庫開發人員指南》中的 [GRANT](https://docs.aws.amazon.com/redshift/latest/dg/r_GRANT.html)。

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

## 步驟 2：使用適當的 Amazon 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：使用適當的 Amazon Redshift 許可建立 IAM 政策
<a name="connectors-redshift-iam-policy"></a>

您建立並與 App Studio 搭配使用的 IAM 政策應僅包含應用程式遵循最佳安全實務之適當資源的最低必要許可。

**使用適當的 Amazon 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 使用之資源的 Amazon Resource Name (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 存取 Amazon Redshift 資源
<a name="connectors-redshift-iam-role"></a>

現在，建立使用您先前建立之政策的 IAM 角色。App Studio 將使用此政策來存取已設定的 Amazon Redshift 資源。

**建立 IAM 角色，讓 App Studio 存取 Amazon 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}} 取代為用於設定 App Studio 執行個體的帳戶的 AWS 帳號，在 App Studio 執行個體的帳戶設定中列為帳戶 **AWS ID**。
   + 將 {{111111111-2222-3333-4444-5555555555 }}取代為您的 App Studio 執行個體 ID，在 App Studio 執行個體的帳戶設定中列為執行個體 **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. 選擇**建立角色**，並記下產生的 Amazon Resource Name (ARN)，您會[在 App Studio 中建立 Amazon Redshift 連接器](#connectors-redshift-create-connector)時需要它。

## 步驟 3：建立 Amazon Redshift 連接器
<a name="connectors-redshift-create-connector"></a>

現在您已設定 Amazon Redshift 資源和 IAM 政策和角色，請使用該資訊在 App Studio 中建立連接器，建置器可以用來將其應用程式連線至 Amazon Redshift。

**注意**  
您必須在 App Studio 中具有管理員角色，才能建立連接器。

**建立 Amazon Redshift 的連接器**

1. 導覽至 App Studio。

1. 在左側導覽窗格中，在**管理**區段中選擇**連接器**。您將前往顯示現有連接器清單的頁面，其中包含每個連接器的一些詳細資訊。

1. 選擇 **\+ 建立連接器**。

1. 選擇 **Amazon Redshift** 連接器。

1. 填寫下列欄位來設定您的連接器：
   + **名稱：**提供連接器的名稱。
   + **描述：**提供連接器的描述。
   + **IAM 角色：**從在 中建立的 IAM 角色輸入 Amazon Resource Name (ARN)[步驟 2b：建立 IAM 角色，讓 App Studio 存取 Amazon Redshift 資源](#connectors-redshift-iam-role)。如需 IAM 的詳細資訊，請參閱《[IAM 使用者指南](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html)》。
   + **區域：**選擇 Amazon Redshift 資源所在的 AWS 區域。
   + **運算類型：**選擇您是使用 Amazon Redshift Serverless 還是佈建叢集。
   + **叢集或工作群組選擇：**如果選擇**佈建**，請選擇您要連線至 App Studio 的叢集。如果選擇**無伺服器**，請選擇工作群組。
   + **資料庫選擇：**選擇您要連線至 App Studio 的資料庫。
   + **可用的資料表：**選取要連線至 App Studio 的資料表。

1. 選擇**下一步**。檢閱連線資訊，然後選擇**建立**。

1. 新建立的連接器會出現在**連接器**清單中。