

 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/)。

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

# 開始使用 Amazon Kinesis Data Streams 中的串流擷取
<a name="materialized-view-streaming-ingestion-getting-started"></a>

本主題說明如何使用具體化視觀表從 Kinesis Data Streams 取用串流資料。

 設定 Amazon Redshift 串流擷取涉及建立對應至串流資料來源的外部結構描述，以及建立參照外部結構描述的具體化視觀表。Amazon Redshift 串流擷取支援以 Kinesis Data Streams 作為來源。因此，在設定串流擷取之前，您必須擁有可用的 Kinesis Data Streams 來源。如果您沒有來源，請按照 [Amazon Kinesis Data Streams 入門](https://docs.aws.amazon.com/streams/latest/dev/getting-started.html)中的 Kinesis 文件指示進行操作，或使用[透過 AWS 管理主控台建立串流](https://docs.aws.amazon.com/streams/latest/dev/how-do-i-create-a-stream.html)中的指示，在主控台上建立一個來源。

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

**注意**  
*串流擷取和 Amazon Redshift Serverless* - 本主題中的組態步驟同時適用於佈建的 Amazon Redshift 叢集和 Amazon Redshift Serverless。如需詳細資訊，請參閱[串流擷取行為和資料類型](materialized-view-streaming-ingestion.md#materialized-view-streaming-ingestion-limitations)。

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

1. 使用信任政策來建立 IAM 角色，允許 Amazon Redshift 叢集或 Amazon Redshift Serverless 工作群組擔任該角色。如需如何設定 IAM 角色信任政策的資訊，請參閱[授權 Amazon Redshift 代表您存取其他 AWS 服務](https://docs.aws.amazon.com/redshift/latest/mgmt/authorizing-redshift-service.html)。建立角色之後，該角色應具有下列 IAM 政策，該政策提供與 Amazon Kinesis 資料串流通訊的許可。

   **Kinesis 資料串流中未加密串流的 IAM 政策**

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "ReadStream",
               "Effect": "Allow",
               "Action": [
                   "kinesis:DescribeStreamSummary",
                   "kinesis:GetShardIterator",
                   "kinesis:GetRecords",
                   "kinesis:ListShards",
                   "kinesis:DescribeStream"
               ],
               "Resource": "arn:aws:kinesis:*:111122223333:stream/*"
           },
           {
               "Sid": "ListStream",
               "Effect": "Allow",
               "Action": "kinesis:ListStreams",
               "Resource": "*"
           }
       ]
   }
   ```

------

   **Kinesis 資料串流中加密串流的 IAM 政策**

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "ReadStream",
               "Effect": "Allow",
               "Action": [
                   "kinesis:DescribeStreamSummary",
                   "kinesis:GetShardIterator",
                   "kinesis:GetRecords",
                   "kinesis:ListShards",
                   "kinesis:DescribeStream"
               ],
               "Resource": "arn:aws:kinesis:*:111122223333:stream/*"
           },
           {
               "Sid": "DecryptStream",
               "Effect": "Allow",
               "Action": [
                   "kms:Decrypt"
               ],
               "Resource": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
           },
           {
               "Sid": "ListStream",
               "Effect": "Allow",
               "Action": "kinesis:ListStreams",
               "Resource": "*"
           }
       ]
   }
   ```

------

1. 檢查您的 VPC，並確認您的 Amazon Redshift 叢集或 Amazon Redshift Serverless 具有使用 NAT 閘道或網際網路閘道透過網際網路連線到 Kinesis Data Streams 端點的路徑。如果您希望 Redshift 和 Kinesis Data Streams 之間的流量保留在 AWS 網路中，請考慮使用 Kinesis Interface VPC Endpoint。如需詳細資訊，請參閱 [使用 Amazon Kinesis Data Streams 搭配介面 VPC 端點](https://docs.aws.amazon.com/streams/latest/dev/vpc.html)。

1. 在 Amazon Redshift 中，建立外部結構描述以將 Kinesis 中的資料對應至結構描述。

   ```
   CREATE EXTERNAL SCHEMA kds
   FROM KINESIS
   IAM_ROLE { default | 'iam-role-arn' };
   ```

    Kinesis Data Streams 的串流擷取不需要驗證類型。它會使用 `CREATE EXTERNAL SCHEMA` 陳述式中定義的 IAM 角色來提出 Kinesis Data Streams 要求。

    選用：使用 REGION 關鍵字指定 Amazon Kinesis Data Streams 或 Amazon MSK 串流所在的區域。

   ```
   CREATE EXTERNAL SCHEMA kds
   FROM KINESIS
   REGION 'us-west-2'
   IAM_ROLE { default | 'iam-role-arn' };
   ```

   在此範例中，該區域會指定來源串流的位置。IAM\$1ROLE 是一個範例。

1. 建立具體化視觀表以取用串流資料。使用如下的陳述式，如果無法剖析記錄，其會導致錯誤。如果您不希望略過錯誤記錄，請使用類似這樣的命令。

   ```
   CREATE MATERIALIZED VIEW my_view AUTO REFRESH YES AS
   SELECT *
   FROM kds.my_stream_name;
   ```

   Kinesis 串流名稱會區分大小寫，且可同時包含大寫和小寫字母。若要從具有大寫名稱的串流中擷取，您可以在資料庫層級將組態 `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`。預設行為是手動重新整理。請注意，當您使用 CAN\$1JSON\$1PARSE 時，可能會略過無法剖析的記錄。

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

   請務必注意，如果您的具體化視觀表定義中有商務邏輯，商業邏輯錯誤可能會導致串流擷取在某些情況下遭到封鎖。這可能會導致您必須捨棄並重新建立具體化視觀表。為了避免這種情況，我們建議您盡可能簡化邏輯，並在擷取資料後，對資料執行大部分的商務邏輯檢查。

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

   ```
   REFRESH MATERIALIZED VIEW my_view;
   ```

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

   ```
   select * from my_view;
   ```