

 Amazon Redshift 將不再支援從修補程式 198 開始建立新的 Python UDFs。現有 Python UDF 將繼續正常運作至 2026 年 6 月 30 日。如需詳細資訊，請參閱[部落格文章](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

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

# 開始從 Apache Kafka 來源進行串流擷取
<a name="materialized-view-streaming-ingestion-getting-started-MSK"></a>

本主題說明如何使用具體化視觀表從 Amazon MSK、Apache Kafka 或 Confluent Cloud 取用串流資料。

 Amazon Redshift 串流擷取的目的是簡化直接從串流服務擷取串流資料至 Amazon Redshift 或 Amazon Redshift Serverless 的程序。這適用於 Amazon MSK Provisioned 和 Amazon MSK Serverless、開放原始碼 Apache Kafka，以及 Confluent Cloud。Amazon Redshift 串流擷取讓您在將串流資料擷取至 Amazon Redshift 之前，不需要在 Amazon S3 中暫存 Apache Kafka 主題。

 在技術層級上，串流擷取可提供以低延遲、高速的方式，將串流或主題資料擷取至 Amazon Redshift 具體化視觀表。在設定之後，您可以使用具體化視觀表重新整理採用大量資料。

您必須擁有可用的 Apache Kafka 來源，才能設定 Amazon Redshift 串流擷取。如果您沒有來源，請使用下列指示建立一個來源：
+ **Amazon MSK** - [開始使用 Amazon MSK](https://docs.aws.amazon.com/msk/latest/developerguide/getting-started.html)
+ **Apache Kafka** - [Apache Kafka 快速入門](https://kafka.apache.org/quickstart)
+ **Confluent Cloud** - [Confluent Cloud 快速入門](https://docs.confluent.io/cloud/current/get-started/index.html)

## 設定從 Kafka 執行串流擷取
<a name="materialized-view-streaming-ingestion-getting-started-MSK-setup"></a>

使用下列程序設定從 Amazon MSK 或非 AWS受管 Apache Kafka 來源 (Apache Kafka 和 Confluent Cloud) 串流擷取至 Amazon Redshift。

**Topics**
+ [設定身分驗證](#materialized-view-streaming-ingestion-getting-started-MSK-setup-auth)
+ [設定您的 VPC](#materialized-view-streaming-ingestion-getting-started-MSK-Setup-VPC)
+ [建立具體化視觀表](#materialized-view-streaming-ingestion-getting-started-MSK-setup-materialized-view)

### 設定身分驗證
<a name="materialized-view-streaming-ingestion-getting-started-MSK-setup-auth"></a>

本節說明設定身分驗證，以允許 Amazon Redshift 應用程式存取 Amazon MSK 來源。

建立應用程式的角色後，請連接下列其中一項政策，以允許存取您的 Amazon MSK、Apache Kafka 或 Confluent Cloud 叢集。對於 mTLS 身分驗證，您可以將 Amazon Redshift 使用的憑證儲存在 ACM 或 Secrets Manager 中，因此您必須選擇符合憑證儲存位置的政策。

請注意，當您搭配任何支援的 Apache Kafka 串流來源使用直接串流擷取至 Amazon Redshift 時，身分驗證或傳輸中的資料不支援自我簽署憑證。其中包括 Amazon MSK、Apache Kafka 和 Confluent Cloud。考慮使用透過 AWS Certificate Manager 或任何其他公開信任的憑證授權單位產生的憑證。

只有 Kafka 2.7.1 版或更新版本支援透過 MSK 進行 Amazon Redshift IAM 身分驗證。

**AUTHENTICATION IAM (僅限 Amazon MSK)：**

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "MSKIAMpolicy",
            "Effect": "Allow",
            "Action": [
                "kafka-cluster:ReadData",
                "kafka-cluster:DescribeTopic",
                "kafka-cluster:Connect"
            ],
            "Resource": [
                "arn:aws:kafka:*:111122223333:cluster/MyTestCluster/*",
                "arn:aws:kafka:*:111122223333:topic/MyTestCluster/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "kafka-cluster:AlterGroup",
                "kafka-cluster:DescribeGroup"
            ],
            "Resource": [
                "arn:aws:kafka:*:111122223333:group/MyTestCluster/*"
            ]
        }
    ]
}
```

------

**驗證 MTLS：使用存放在 中的憑證 AWS Certificate Manager**

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "MSKmTLSACMpolicy",
            "Effect": "Allow",
            "Action": [
                "acm:ExportCertificate" 
            ],
            "Resource": [
                "arn:aws:acm:us-east-1:444455556666:certificate/certificate_ID"
            ]
        }
    ]
}
```

------

**驗證 MTLS：使用存放在 中的憑證 AWS Secrets Manager**

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "MSKmTLSSecretsManagerpolicy",
            "Effect": "Allow",
            "Action": [
                "secretsmanager:GetSecretValue" 
            ],
            "Resource": [
                "arn:aws:secretsmanager:us-east-1:444455556666:secret:secret_ID"
            ]
        }
    ]
}
```

------

------
#### [ Amazon MSK ]

如果您使用 AUTHENTICATION NONE 連線到 Amazon MSK 來源，則不需要 IAM 角色。不過，如果您使用 AUTHENTICATION IAM 或 MTLS 來驗證 Amazon MSK 叢集，您的 Amazon Redshift 叢集或 Amazon Redshift Serverless 命名空間必須附加具備適當許可的 IAM 角色。使用信任政策來建立 IAM 角色，允許 Amazon Redshift 叢集或 Amazon Redshift Serverless 命名空間擔任該角色。建立角色後，請新增下列其中一項許可，以便支援 IAM 或 MTLS。對於 mTLS 身分驗證，Amazon Redshift 使用的憑證可以存放在 或 中 AWS Certificate Manager AWS Secrets Manager，因此您必須選擇符合憑證存放位置的政策。將角色附加至您的 Amazon Redshift 佈建叢集或 Redshift Serverless 命名空間。如需如何設定 IAM 角色信任政策的資訊，請參閱[授權 Amazon Redshift 代表您存取其他 AWS 服務](https://docs.aws.amazon.com/redshift/latest/mgmt/authorizing-redshift-service.html)。

下表顯示可從 Amazon MSK 設定串流擷取的免費組態選項：


| Amazon Redshift 組態 | Amazon MSK 組態 | 在 Redshift 和 Amazon MSK 之間開啟的連接埠 | 
| --- | --- | --- | 
|  AUTHENTICATION NONE  |  TLS 傳輸已停用  | 9092 | 
|  AUTHENTICATION NONE  |  已啟用的 TLS 傳輸  | 9094 | 
|  AUTHENTICATION IAM  |  IAM  | 9098/9198 | 
|  AUTHENTICATION MTLS  |  已啟用的 TLS 傳輸  | 9094 | 

Amazon Redshift 身份驗證是在 CREATE EXTERNAL SCHEMA 陳述式中設定的。

**注意**  
如果 Amazon MSK 叢集已啟用相互傳輸層安全性 (mTLS) 身份驗證，則將 Amazon Redshift 設定為使用 AUTHENTICATION NONE 會指示其使用連接埠 9094 進行未驗證的存取。但是，這將會失敗，因為 mTLS 身份驗證正在使用連接埠。因此，我們建議您在使用 mTLS 時切換到 AUTHENTICATION mtls。

------
#### [ Apache Kafka or Confluent Cloud ]

對於 Apache Kafka 和 Confluent Cloud，Amazon Redshift 支援下列連線通訊協定：
+ 連線至 Apache Kafka 時，您可以使用 mTLS 或純文字搭配 TLS 傳輸進行身分驗證。
+ 連線至 Confluent Cloud 時，您只能使用 mTLS 進行身分驗證。

Amazon Redshift 支援使用下列加密通訊協定連線至 Apache Kafka 和 Confluent Cloud：

**Apache Kafka 和 Confluent Cloud 支援的身分驗證方法**


| Amazon Redshift | Kafka 安全通訊協定 | Apache Kafka 支援 | Confluent Cloud 支援 | 
| --- | --- | --- | --- | 
| AUTHENTICATION NONE | PLAINTEXT | 否 | 否 | 
| AUTHENTICATION NONE | SSL | 是 | 否 | 
| AUTHENTICATION IAM | SASL\$1SSL | 否 | 否 | 
| AUTHENTICATION MTLS | SSL | 是 (使用憑證) | 是 (使用憑證) | 

請注意，Amazon Redshift 不支援 SASL/SCRAM 或 SASL/PLAINTEXT。

------

### 設定您的 VPC
<a name="materialized-view-streaming-ingestion-getting-started-MSK-Setup-VPC"></a>

建立身分驗證資源後，請檢查您的 VPC，並確認 Amazon Redshift 叢集或 Amazon Redshift Serverless 工作群組具有通往 Apache Kafka 來源的路由。

**注意**  
對於 Amazon MSK，Amazon MSK 叢集的輸入安全群組規則應允許您的 Amazon Redshift 叢集或 Redshift Serverless 工作群組的安全群組。您指定的連接埠取決於 Amazon MSK 叢集上設定的身分驗證方法。如需詳細資訊，請參閱[連接埠資訊和](https://docs.aws.amazon.com/msk/latest/developerguide/port-info.html)[從 VPC 內部 AWS 外存取](https://docs.aws.amazon.com/msk/latest/developerguide/aws-access.html)。

接著在您的 Amazon Redshift 叢集或 Amazon Redshift Serverless 工作群組上啟用增強型 VPC 路由。如需詳細資訊，請參閱[啟用增強型 VPC 路由](https://docs.aws.amazon.com/redshift/latest/mgmt/enhanced-vpc-enabling-cluster.html)。

### 建立具體化視觀表
<a name="materialized-view-streaming-ingestion-getting-started-MSK-setup-materialized-view"></a>

在本節中，您會設定 Amazon Redshift 用來存取 Apache Kafka 串流資料的具體化視觀表。

假設您有可用的 Apache Kafka 叢集，第一步是使用 `CREATE EXTERNAL SCHEMA` 在 Redshift 中定義結構描述，並將叢集作為資料來源參考。之後，若要存取主題中的資料，請在具體化視觀表中定義 `STREAM`。您可以使用預設的 Amazon Redshift VARBYTE 資料類型儲存來自主題的記錄，或定義結構描述，將資料轉換為半結構化的 `SUPER` 格式。當您查詢具體化視觀表時，傳回的記錄會是主題的時間點檢視。

1. 在 Amazon Redshift 中，建立外部結構描述以對應至 Apacke Kafka 叢集。語法如下：

   ```
   CREATE EXTERNAL SCHEMA MySchema
   FROM KAFKA
   [ IAM_ROLE [ default | 'iam-role-arn' ] ]
   AUTHENTICATION [ none | iam | mtls ]
   {AUTHENTICATION_ARN 'acm-certificate-arn' |  SECRET_ARN 'asm-secret-arn'};
   ```

   在 `FROM` 子句中，`KAFKA` 表示結構描述對應來自 Apache Kafka 來源的資料。

    `AUTHENTICATION` 表示串流擷取的身分驗證類型。有三種可用類型：
   + **none** - 指定不需身分驗證。這對應至 MSK 上未經驗證的存取。這對應至 Apache Kafka 中的 SSL 身分驗證。Confluent Cloud 不支援此身分驗證方法。
   + **iam** — 指定 IAM 身份驗證。您只能使用 IAM 身分驗證搭配 Amazon MSK。選擇此選項時，請確保 IAM 角色具有 IAM 身份驗證的許可。如需設定必要 IAM 政策的詳細資訊，請參閱 [設定從 Kafka 執行串流擷取](#materialized-view-streaming-ingestion-getting-started-MSK-setup)。
   + **mtls** - 指定雙向 Transport Layer Security 透過簡化用戶端與伺服器之間的身分驗證來提供安全通訊。在此情況下，用戶端是 Redshift，而伺服器是 Apache Kafka。如需使用 mTLS 設定串流擷取的詳細資訊，請參閱 [從 Apache Kafka 來源執行 Redshift 串流擷取時使用 mTLS 進行身分驗證](materialized-view-streaming-ingestion-mtls.md)。

   請注意，串流擷取不支援使用使用者名稱和密碼的 Amazon MSK 身分驗證。

   `AUTHENTICATION_ARN` 參數指定您用來建立加密連線的 ACM 雙向 Transport Layer Security (mTLS) 憑證的 ARN。

   `SECRET_ARN` 參數會指定包含 Amazon Redshift 用於 mTLS 之憑證的 AWS Secrets Manager 秘密 arn。

   下列範例示範如何在建立外部結構描述時，設定 Amazon MSK 叢集的代理系統 URI：

   **使用 IAM 身分驗證：**

   ```
   CREATE EXTERNAL SCHEMA my_schema
   FROM KAFKA
   IAM_ROLE 'arn:aws:iam::012345678901:role/my_role'
   AUTHENTICATION IAM
   URI 'b-1.myTestCluster.123z8u.c2.kafka.us-west-1.amazonaws.com:9098,b-2.myTestCluster.123z8u.c2.kafka.us-west-1.amazonaws.com:9098'
   ```

   **不使用身分驗證：**

   ```
   CREATE EXTERNAL SCHEMA my_schema
   FROM KAFKA 
   AUTHENTICATION none
   URI 'b-1.myTestCluster.123z8u.c2.kafka.us-west-1.amazonaws.com:9092,b-2.myTestCluster.123z8u.c2.kafka.us-west-1.amazonaws.com:9092'
   ```

   **使用 mTLS：**

   ```
   CREATE EXTERNAL SCHEMA my_schema
   FROM KAFKA
   IAM_ROLE 'arn:aws:iam::012345678901:role/my_role'
   AUTHENTICATION MTLS
   URI 'b-1.myTestCluster.123z8u.c2.kafka.us-west-1.amazonaws.com:9094,b- 2.myTestCluster.123z8u.c2.kafka.us-west-1.amazonaws.com:9094'
   {AUTHENTICATION_ARN 'acm-certificate-arn' |  SECRET_ARN 'asm-secret-arn'}
   ```

   如需建立外部結構描述的詳細資訊，請參閱 [CREATE EXTERNAL SCHEMA](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_EXTERNAL_SCHEMA.html)。

1. 建立具體化視觀表以取用主題的資料。使用下列範例所示的 SQL 命令。

   ```
   CREATE MATERIALIZED VIEW MyView AUTO REFRESH YES AS
   SELECT *
   FROM MySchema."mytopic";
   ```

   Kafka 主題名稱會區分大小寫，且可同時包含大寫和小寫字母。若要從具有大寫名稱的主題中擷取，您可以在工作階段或資料庫層級將組態 `enable_case_sensitive_identifier` 設定為 `true`。如需詳細資訊，請參閱[名稱和識別碼](https://docs.aws.amazon.com/redshift/latest/dg/r_names.html)與 [enable\$1case\$1sensitive\$1identifier](https://docs.aws.amazon.com/redshift/latest/dg/r_enable_case_sensitive_identifier.html)。

   若要開啟自動重新整理，請使用 `AUTO REFRESH YES`。預設行為是手動重新整理。

1. 中繼資料資料欄包括下列項目：    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/redshift/latest/dg/materialized-view-streaming-ingestion-getting-started-MSK.html)

   請務必注意，如果您的具體化視觀表定義中有商務邏輯會商業邏輯錯誤，則這可能會導致串流擷取在某些情況下擷取失敗。這可能會導致您必須捨棄並重新建立具體化視觀表。為了避免這種情況，我們建議您盡可能讓商業邏輯保持簡單，並在擷取資料後，對資料執行額外的邏輯。

1. 重新整理檢視，這會調用 Amazon Redshift 從主題讀取，並將資料載入具體化視觀表。

   ```
   REFRESH MATERIALIZED VIEW MyView;
   ```

1. 查詢具體化視觀表中的資料。

   ```
   select * from MyView;
   ```

   執行 `REFRESH` 時，具體化視觀表會直接從主題更新。您可以建立對應至 Kafka 主題資料來源的具體化視觀表。您可以對資料執行篩選和彙總，以做為具體化視觀表定義的一部分。您的串流擷取具體化視觀表 (基礎具體化視觀表) 只能參照一個 Kafka 主題，但是您可以建立與基礎具體化視觀表及其他具體化視觀表或資料表結合的額外具體化視觀表。

如需串流擷取限制的相關資訊，請參閱 [串流擷取行為和資料類型](materialized-view-streaming-ingestion.md#materialized-view-streaming-ingestion-limitations)。

# 從 Apache Kafka 來源執行 Redshift 串流擷取時使用 mTLS 進行身分驗證
<a name="materialized-view-streaming-ingestion-mtls"></a>

雙向 Transport Layer Security (mTLS) 為提供身分驗證的方法，讓伺服器對其傳送資訊的用戶端進行身分驗證，以及讓用戶端對伺服器進行身分驗證。使用 mTLS 的好處在於提供信任的身分驗證，供數種垂直產業應用程式中的各種使用案例使用。這些包括金融、零售、政府和醫療保健產業的使用案例。在串流擷取至 Redshift 的案例中，身分驗證會發生在伺服器 (如 Amazon MSK、Apache Kafka 或 Confluent Cloud) 與 Amazon Redshift 佈建叢集或 Amazon Redshift Serverless 工作群組之間。

本主題提供多項程序和 SQL 命令範例，示範如何建立外部結構描述，以使用 mTLS 在 Redshift 用戶端與任何 Apache Kafka 伺服器之間進行身分驗證。本主題中的步驟補充了設定從 Apache Kafka 來源進行串流擷取的完整步驟。如需詳細資訊，請參閱[開始從 Apache Kafka 來源進行串流擷取](materialized-view-streaming-ingestion-getting-started-MSK.md)。

## 使用 mTLS 進行串流擷取的先決條件
<a name="materialized-view-streaming-ingestion-mtls-prerequisites"></a>

本節提供使用 mTLS 搭配 AWS Certificate Manager 或 AWS Secrets Manager進行串流擷取的先決條件步驟。

作為初步步驟，您必須擁有或建立私有憑證授權機構 (PCA)，可用來發行憑證，以透過安全通訊管道啟用安全通訊。 AWS 私有憑證授權單位 (私有 CA) 是執行此功能的可用服務。如需詳細資訊，請參閱《AWS 私有憑證授權單位 使用者指南》**中的[建立私有 CA](https://docs.aws.amazon.com/privateca/latest/userguide/create-CA.html)。建立私有 CA 之後，匯出根 CA 憑證，並將其儲存至副檔名為 .pem 的檔案。

若要建立使用 CA 憑證的叢集，請執行下列操作：

------
#### [ Amazon MSK ]

1. 建立支援 mtls 用戶端身分驗證的 Amazon MSK 叢集。如需設定 Amazon MSK 叢集的詳細資訊，請參閱《Amazon Managed Streaming for Apache Kafka 開發人員指南》**中的 [Amazon MSK 的雙向 TLS 用戶端身分驗證](https://docs.aws.amazon.com/msk/latest/developerguide/msk-authentication.html#msk-authentication-cluster)。

1. 編輯 Amazon MSK 叢集的安全設定，使用 AWS Certificate Manager (ACM) 開啟 TLS 用戶端身分驗證，然後選取您先前建立的 AWS 私有 CA (PCA)。如需詳細資訊，請參閱《Amazon Managed Streaming for Apache Kafka 開發人員指南》**中的[更新叢集的安全設定](https://docs.aws.amazon.com/msk/latest/developerguide/msk-update-security.html)。

------
#### [ Confluent Cloud ]

1. 建立專用的 Confluent Cloud 叢集，最好與 Amazon Redshift 叢集位於相同的 AWS 區域 中。如需建立 Confluent Cloud 叢集的詳細資訊，請參閱[在 Confluent Cloud 中建立 Kafka 叢集](https://docs.confluent.io/cloud/current/get-started/index.html#step-1-create-a-ak-cluster-in-ccloud)。

1. 上傳您先前建立的匯出 AWS 私有 CA 根 CA 憑證 pem 檔案。如需詳細資訊，請參閱[管理 Confluent Cloud 的 mTLS 身分驗證的憑證認證機構](https://docs.confluent.io/cloud/current/security/authenticate/workload-identities/identity-providers/mtls/certificate-authority.html)。Confluent Cloud 使用此憑證來驗證 Amazon Redshift 用戶端憑證。

------

## 使用 mTLS 搭配 進行串流擷取 AWS Certificate Manager
<a name="materialized-view-streaming-ingestion-mtls-acm"></a>

下列程序說明如何使用 AWS Certificate Manager (ACM) 儲存和管理憑證，以設定 Redshift 串流擷取使用的 mTLS：

1. 透過 ACM 請求私有憑證。當您執行此操作時，請選取您在「先決條件」一節中建立的 PCA 作為憑證認證機構。ACM 會儲存已簽署的憑證和附加的私有金鑰，以進行安全通訊。如需使用 ACM 管理憑證的詳細資訊，請參閱《AWS Certificate Manager 使用者指南》**中的[發行和管理憑證](https://docs.aws.amazon.com/acm/latest/userguide/gs.html)。

1. 對於您用來管理 Redshift 叢集或 Amazon Redshift Serverless 工作群組的 IAM 角色，請附加許可以匯出憑證，即 **acm:ExportCertificate**。如需設定串流擷取所需 IAM 資源的詳細資訊，請參閱 [設定從 Kafka 執行串流擷取](materialized-view-streaming-ingestion-getting-started-MSK.md#materialized-view-streaming-ingestion-getting-started-MSK-setup)。在下一個步驟中指定相同的 IAM 角色，以建立外部結構描述。
**注意**  
請求在您的 VPC 中 AWS Certificate Manager 需要網際網路閘道 (IGW) 或 NAT 閘道 (NGW)。如果您的 VPC 沒有 IGW 或 NGW，請執行下列操作：  
使用 Secrets Manager 儲存您的憑證，而不要使用 ACM。
將 Secrets Manager VPC 端點附加至您的 VPC。
如需使用 Secrets Manager 搭配 mTLS 進行串流擷取的詳細資訊，請參閱後續的 [使用 mTLS 搭配 進行串流擷取 AWS Secrets Manager](#materialized-view-streaming-ingestion-mtls-secrets-manager)。

1. 取得 Amazon MSK、Apache Kafka 或 Confluent Cloud 叢集的啟動程序代理系統 URI。如需取得 Amazon MSK 的啟動程序代理系統 URI 的相關資訊，請參閱《Amazon Managed Streaming for Apache Kafka 開發人員指南》**中的[取得 Amazon MSK 叢集的啟動程序代理系統](https://docs.aws.amazon.com/msk/latest/developerguide/msk-get-bootstrap-brokers.html)。

1.  執行如下列範例所示的 SQL 命令，以使用 `mtls` 建立將叢集對應至 Redshift 外部結構描述的外部結構描述。

------
#### [ Amazon MSK ]

   ```
   CREATE EXTERNAL SCHEMA my_schema
   FROM KAFKA
   IAM_ROLE 'arn:aws:iam::012345678901:role/my_role'
   AUTHENTICATION mtls
   URI 'b-1.myTestCluster.123z8u.c2.kafka.us-west-1.amazonaws.com:9094,b-2.myTestCluster.123z8u.c2.kafka.us-west-1.amazonaws.com:9094'
   AUTHENTICATION_ARN 'arn:aws:acm:Region:444455556666:certificate/certificate_ID';
   ```

------
#### [ Apache Kafka or Confluent Cloud ]

   ```
   CREATE EXTERNAL SCHEMA my_schema
   FROM KAFKA
   IAM_ROLE 'arn:aws:iam::012345678901:role/my_role'
   AUTHENTICATION mtls
   URI 'lkc-2v531.domz6wj0p.us-west-1.aws.confluent.cloud:9092'
   AUTHENTICATION_ARN 'arn:aws:acm:region:444455556666:certificate/certificate_ID';
   ```

------

   重要參數：
   + IAM\$1ROLE - 與叢集相關聯的 IAM 角色，用於串流擷取。
   + URI - 叢集的啟動程序代理系統 URI。請注意，對於 Amazon MSK，指定連接埠 9094 與代理系統通訊以進行 TLS 加密。
   + AUTHENTICATION\$1ARN - ACM 憑證的 ARN。當您選擇發出憑證時，ACM 主控台中就會提供 ARN。

執行這些組態設定步驟後，您可以建立 Redshift 具體化視觀表，以參考範例中定義的結構描述，然後使用 REFRESH MATERIALIZED VIEW 來串流資料。如需詳細資訊，請參閱[開始從 Apache Kafka 來源進行串流擷取](materialized-view-streaming-ingestion-getting-started-MSK.md)。

## 使用 mTLS 搭配 進行串流擷取 AWS Secrets Manager
<a name="materialized-view-streaming-ingestion-mtls-secrets-manager"></a>

如果您不想在 AWS Certificate Manager中參考憑證，您可以使用 AWS Secrets Manager 進行憑證管理，藉此為 Redshift 串流擷取設定 mTLS。下列步驟說明如何使用 Secrets Manager 設定 mTLS。

1. 使用您選擇的工具建立憑證簽署請求和私有金鑰。然後，您可以使用簽署請求來產生已簽署憑證，以使用您用來為叢集產生憑證的相同 AWS 私有 CA (PCA)。如需發行憑證的詳細資訊，請參閱 *AWS 私有憑證授權單位 API 參考*中的 [IssueCertificate](https://docs.aws.amazon.com/privateca/latest/APIReference/API_IssueCertificate.html)。

1. 使用 擷取憑證 AWS 私有憑證授權單位。如需詳細資訊，請參閱《AWS 私有憑證授權單位 使用者指南》**中的[擷取私有憑證](https://docs.aws.amazon.com/privateca/latest/userguide/PcaGetCert.html)。

1. 將上一個步驟中產生的憑證和私有金鑰儲存在 AWS Secrets Manager中。選擇 `Other type of secret` 並使用純文字格式。索引鍵/值對的格式應為 `{"certificate":"<cert value>","privateKey":"<pkey value>"}`，如下列範例所示。如需在 中建立和管理秘密的詳細資訊 AWS Secrets Manager，請參閱*AWS Secrets Manager 《 使用者指南*》中的[使用 建立和管理秘密 AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/managing-secrets.html)。

   ```
   {"certificate":"-----BEGIN CERTIFICATE-----
   klhdslkfjahksgdfkgioeuyihbflahabhbdslv6akybeoiwv1hoaiusdhbahsbdi 
   H4hAX8/eE96qCcjkpfT84EdvHzp6fC+/WwM0oXlwUEWlvfMCXNaG5D8SqRq3qA==
   -----END CERTIFICATE-----
   -----BEGIN CERTIFICATE-----
   klhdslkfjahksgdfkgioeuyihbflahabhbdslv6akybeoiwv1hoaiusdhbahsbdi 
   wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
   -----END CERTIFICATE-----",
   "privateKey":"-----BEGIN PRIVATE KEY-----
   klhdslkfjahksgdfkgioeuyihbflahabhbdslv6akybeoiwv1hoaiusdhbahsbdi
   7OD4m1dBEs3Fj++hDMH9rYRp99RqtCOf0EWOUe139KOilOsW+cyhAoc9Ci2+Jo/k
   17u2N1iGILMQEZuCRtnJOkFYkw==
   -----END PRIVATE KEY-----"}
   ```

1. 連接許可政策以將機密擷取至您用來管理 Amazon Redshift 叢集或 Amazon Redshift Serverless 工作群組的 IAM 角色。此許可為 `secretsmanager:GetSecretValue`。如需詳細資訊，請參閱[設定身分驗證](materialized-view-streaming-ingestion-getting-started-MSK.md#materialized-view-streaming-ingestion-getting-started-MSK-setup-auth)。如需管理 IAM 政策的詳細資訊，請參閱[編輯 IAM 政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-edit.html)。在下一個步驟中指定相同的 IAM 角色，以建立外部結構描述。

1. 在 Redshift 中執行 SQL 命令，以建立外部結構描述。您使用 AUTHENTICATION 類型 `mtls`。您也可以在 AWS Secrets Manager中指定叢集的 URI 和機密 ARN。

   ```
   CREATE EXTERNAL SCHEMA my_schema
   FROM KAFKA
   IAM_ROLE 'arn:aws:iam::012345678901:role/my_role'
   AUTHENTICATION mtls
   URI 'b-1.myTestCluster.123z8u.c2.kafka.us-west-1.amazonaws.com:9094,b-2.myTestCluster.123z8u.c2.kafka.us-west-1.amazonaws.com:9094'
   SECRET_ARN 'arn:aws:secretsmanager:us-east-1:012345678910:secret:myMTLSSecret';
   ```

重要參數：
+ IAM\$1ROLE - 與叢集相關聯的 IAM 角色，用於串流擷取。
+ URI - 叢集的啟動程序代理系統 URI。請注意，對於 Amazon MSK，指定連接埠 9094 與代理系統通訊以進行 TLS 加密。
+ SECRET\$1ARN - Secrets Manager 中機密的 ARN，包含用於 mTLS 的憑證。

## 針對現有外部結構描述啟用 mTLS 身分驗證
<a name="materialized-view-streaming-ingestion-mtls-alter"></a>

如果您有用於串流擷取的現有外部結構描述，而且想要實作雙向 TLS 進行身分驗證，您可以執行下列命令，以指定 mTLS 身分驗證和 ACM 中的 ACM 憑證 ARN。

```
ALTER EXTERNAL SCHEMA schema_name 
AUTHENTICATION mtls
AUTHENTICATION_ARN 'arn:aws:acm:Region:444455556666:certificate/certificate_ID';
```

或者，您可以指定 mTLS 身分驗證，並參考 AWS Secrets Manager中的機密 ARN。

```
ALTER EXTERNAL SCHEMA schema_name 
AUTHENTICATION mtls
SECRET_ARN 'arn:aws:secretsmanager:us-east-1:012345678910:secret:myMTLSSecret';
```

如需 ALTER EXTERNAL SCHEMA 命令的相關資訊，請參閱 [ALTER EXTERNAL SCHEMA](r_ALTER_EXTERNAL_SCHEMA.md)。