

 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 S3 以搭配 COPY 使用
<a name="t_uploading-data-to-S3"></a>

將文字檔案上傳到 Amazon S3 時，有幾個可採取的方法：
+ 如果您有壓縮的檔案，建議您分割大型檔案以利用 Amazon Redshift 中的平行處理。
+ 另一方面，COPY 會自動分割大型的未壓縮文字分隔檔案資料，以加速平行處理，並有效地從大型檔案分配資料。

建立 Amazon S3 儲存貯體來保存您的資料檔案，然後將資料檔案上傳至儲存貯體。如需有關建立儲存貯體及上傳檔案的詳細資訊，請參閱 *Amazon Simple Storage Service 使用者指南*中的[使用 Amazon S3 儲存貯體](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingBucket.html)。

**重要**  
必須在與您叢集所在的相同 ‏ AWS 區域中建立存放資料檔案的 Amazon S3 儲存貯體，除非您使用 [REGION](copy-parameters-data-source-s3.md#copy-region) 選項來指定 Amazon S3 儲存貯體所在的區域。

確定 S3 IP 範圍已新增至您的允許清單。若要進一步了解所需的 S3 IP 範圍，請參閱[網路隔離](https://docs.aws.amazon.com//redshift/latest/mgmt/security-network-isolation.html#network-isolation)。

透過在建立儲存貯體時使用 Amazon S3 主控台選取區域，或是在建立儲存貯體時使用 Amazon S3 API 或 CLI 來指定端點，即可以在特定區域中建立 Amazon S3 儲存貯體。

在資料載入之後，驗證 Amazon S3 上有正確的檔案。

**Topics**
+ [管理資料一致性](managing-data-consistency.md)
+ [將加密資料上傳到 Amazon S3](t_uploading-encrypted-data.md)
+ [驗證您的儲存貯體中存在正確的檔案](verifying-that-correct-files-are-present.md)

# 管理資料一致性
<a name="managing-data-consistency"></a>

Amazon S3 為所有 AWS 區域 Amazon S3 儲存貯體上的 COPY、UNLOAD、INSERT （外部資料表）、CREATE EXTERNAL TABLE AS 和 Amazon S3 Redshift Spectrum 操作提供強大的read-after-write一致性。此外，Amazon S3 Select、Amazon S3 存取控制清單、Amazon S3 物件標籤和物件中繼資料 (例如，HEAD 物件) 上的讀取操作均高度一致。如需資料一致性的相關資訊，請參閱《Amazon Simple Storage Service 使用者指南》**中的 [Amazon S3 資料一致性模式](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Introduction.html#ConsistencyModel)。

# 將加密資料上傳到 Amazon S3
<a name="t_uploading-encrypted-data"></a>

Amazon S3 同時支援伺服器端加密和用戶端加密。此主題討論伺服器端和用戶端加密之間的差異，並說明將用戶端加密與 Amazon Redshift 搭配使用的步驟。伺服器端加密對 Amazon Redshift 來說是透明的。

## 伺服器端加密
<a name="server-side-encryption"></a>

伺服器端加密是靜態資料加密，也就是說，Amazon S3 會在上傳資料時加密您的資料，並在您存取資料時將資料解密。使用 COPY 命令載入資料表時，與從 Amazon S3 上伺服器端加密或未加密的物件載入時沒有差異。如需伺服器端加密的相關資訊，請參閱《Amazon Simple Storage Service 使用者指南》**中的[使用伺服器端加密](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingServerSideEncryption.html)。

## 用戶端加密
<a name="client-side-encryption"></a>

在用戶端加密中，您的用戶端應用程式會管理您的資料的加密、加密金鑰和相關工具。您可以使用用戶端加密將資料上傳至 Amazon S3 儲存貯體，然後使用 COPY 命令載入資料搭配 ENCRYPTED 選項和私有加密金鑰，以提供更高的安全性。

您可以使用封套加密來加密您的資料。利用*封套加密*，您的應用程式會以獨佔方式處理所有加密。您的私有加密金鑰和未加密的資料永遠不會傳送到 AWS，因此請務必安全地管理加密金鑰。如果您遺失加密金鑰，您將無法取消加密資料，也無法從中復原加密金鑰 AWS。封套加密會結合快速對稱加密的效能，同時保有非對稱金鑰所提供金鑰管理的更高安全性。一次性使用對稱金鑰 (信封對稱金鑰) 是由您的 Amazon S3 加密用戶端產生，用來加密您的資料，然後該金鑰會由您的根金鑰加密，並隨著您的資料儲存在 Amazon S3。Amazon Redshift 在載入期間存取您的資料時，系統會使用您的實際金鑰來擷取並解密加密的對稱金鑰，然後將資料解密。

若要在 Amazon Redshift 中使用 Amazon S3 用戶端加密資料，請參閱《Amazon Simple Storage Service 使用者指南》**的[使用用戶端加密保護資料](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingClientSideEncryption.html)來遵循所述步驟，並搭配您使用的其他要求：
+ **對稱加密 –** 適用於 Java 的 AWS 開發套件 `AmazonS3EncryptionClient` 類別使用上述基於對稱金鑰加密的封套加密程序。使用此類別來建立 Amazon S3 用戶端，以上傳用戶端加密的資料。
+ **256 位元 AES 根對稱金鑰 –** 根金鑰會加密信封金鑰。您可以將根金鑰傳遞至您的 `AmazonS3EncryptionClient` 類別執行個體。儲存此金鑰，因為您將需要用它將資料複製到 Amazon Redshift。
+ **用來儲存加密信封金鑰的物件中繼資料 –** 依預設，Amazon S3 會將信封金鑰儲存為 `AmazonS3EncryptionClient` 類別的物件中繼資料。儲存為物件中繼資料的加密信封金鑰會在解密程序期間使用。

**注意**  
若您在初次使用加密 API 時得到密碼套件加密錯誤訊息，您的 JDK 版本可能包含將加密及解密轉換之金鑰長度上限限制為 128 位元的 Java Cryptography Extension (JCE) 管轄權政策檔案。如需有關解決此問題的資訊，請參閱《*Amazon Simple Storage Service 使用者指南*》中的[使用適用於 Java 的 AWS SDK 指定用戶端加密](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingClientSideEncryptionUpload.html)。

如需使用 COPY 命令將用戶端加密檔案載入至您的 Amazon Redshift 資料表的詳細資訊，請參閱[從 Amazon S3 載入加密的資料檔案](c_loading-encrypted-files.md)。

## 範例：上傳用戶端加密資料
<a name="client-side-encryption-example"></a>

如需如何使用適用於 Java 的 AWS SDK 上傳用戶端加密資料的範例，請參閱《*Amazon Simple Storage Service 使用者指南*》中的[使用用戶端加密保護資料](https://docs.aws.amazon.com/AmazonS3/latest/userguide/encrypt-client-side-symmetric-master-key.html)。

第二個選項會顯示在用戶端加密期間要讓資料可以在 Amazon Redshift 中載入，您必須進行的選擇。具體來說，此範例會顯示使用物件中繼資料來儲存加密的信封金鑰和使用 256 位元 AES 根對稱金鑰。

此範例提供使用適用於 Java 的 AWS 開發套件建立 256 位元 AES 對稱根金鑰並將其儲存至 檔案的範例程式碼。然後該範例會使用可先在用戶端上先加密樣本資料的 S3 加密用戶端，將物件上傳至 Amazon S3。此範例也會下載物件，並驗證資料一致。

# 驗證您的儲存貯體中存在正確的檔案
<a name="verifying-that-correct-files-are-present"></a>

將您的檔案上傳至您的 Amazon S3 儲存貯體之後，我們建議列出儲存貯體的內容，以驗證已包含所有正確的檔案，並且沒有不需要的檔案。例如，如果儲存貯體 `amzn-s3-demo-bucket` 保存名為 `venue.txt.back` 的檔案，下列命令會載入該檔案 (可能非特意)：

```
COPY venue FROM 's3://amzn-s3-demo-bucket/venue' … ;
```

如果您想要具體控制載入的檔案，您可以使用資訊清單檔案來明確列出資料檔案。如需使用資訊清單檔案的相關資訊，請參閱 COPY 命令的 [copy_from_s3_manifest_file](copy-parameters-data-source-s3.md#copy-manifest-file) 選項和 COPY 範例中的 [使用資訊清單指定資料檔案](r_COPY_command_examples.md#copy-command-examples-manifest)。

如需列出儲存貯體內容的相關資訊，請參閱《Amazon S3 開發人員指南》**中的[列出物件金鑰](https://docs.aws.amazon.com/AmazonS3/latest/userguide/ListingKeysUsingAPIs.html)。