

 Amazon Redshift は、パッチ 198 以降、新しい Python UDF の作成をサポートしなくなります。既存の 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/)を参照してください。

# 暗号化されたデータファイルをアンロードする
<a name="t_unloading_encrypted_files"></a>

UNLOAD は、AWS が管理する暗号化キー (SSE-S3) を使用した Amazon S3 のサーバー側暗号化により、ファイルを自動的に作成します。AWS Key Management Service キーを使用したサーバー側の暗号化 (SSE-KMS)、またはカスタマーマネージド型キーを使用したクライアント側の暗号化を指定することもできます。UNLOAD では、お客様が用意したキーによる Amazon S3 サーバー側の暗号化はサポートされません。詳細については、「[サーバー側の暗号化を使用したデータの保護](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html)」を参照してください。

AWS KMS キーを使用したサーバー側の暗号化によって Amazon S3 にアンロードするには、次の例に示すように KMS\$1KEY\$1ID パラメータを使用してキー ID を指定します。

```
unload ('select venuename, venuecity from venue')
to 's3://amzn-s3-demo-bucket/encrypted/venue_' 
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
KMS_KEY_ID '1234abcd-12ab-34cd-56ef-1234567890ab'
encrypted;
```

独自の暗号化キーを指定する場合は、ENCRYPTED オプションを指定した UNLOAD コマンドを使用することにより、Amazon S3 でクライアント側の暗号化データファイルを作成できます。UNLOAD で使用されるエンベロープ暗号化プロセスは、Amazon S3 のクライアント側暗号化で使用されているものと同じです。この暗号化されたファイルをロードするには、COPY コマンドとともに ENCRYPTED オプションを使用します。

このプロセスの動作は次のようになります。

1. ユーザーは、base64 で暗号化した 256 ビット AES キーを作成し、これをプライベート暗号化キー (*ルート対称キー*) として使用します。

1. 作成したルート対称キーと ENCRYPTED オプションを指定しながら、UNLOAD コマンドを実行します。

1. UNLOAD により、1 回限り使用の対称キー (*エンベロープ対称キー*と呼ばれます) と初期化ベクター (IV) が生成され、これが UNLOAD でのデータの暗号化に使用されます。

1. 作成したルート対称キーを使用してエンベロープ対称キーが暗号化されます。

1. 暗号化されたデータファイルが Amazon S3 に保存され、暗号化されたエンベロープキーと IV がオブジェクトメタデータとして各ファイルとともに保存されます。暗号化されたエンベロープキーはオブジェクトメタデータ `x-amz-meta-x-amz-key` として、IV はオブジェクトメタデータ `x-amz-meta-x-amz-iv` として保存されます。

エンベロープ暗号化プロセスの詳細については、「[Client-side data encryption with the AWS SDK for Java and Amazon S3](https://aws.amazon.com/articles/2850096021478074)」の記事を参照してください。

暗号化されたデータファイルをアンロードするには、ルートキーの値を認証情報文字列に追加するとともに、ENCRYPTED オプションを指定します。MANIFEST オプションを使用すると、マニフェストファイルも暗号化されます。

```
unload ('select venuename, venuecity from venue')
to 's3://amzn-s3-demo-bucket/encrypted/venue_' 
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
master_symmetric_key '<root_key>' 
manifest
encrypted;
```

アンロードしようとする暗号化済みデータファイルが GZIP 圧縮されている場合は、GZIP オプションをルートキーの値および ENCRYPTED オプションとともに指定します。

```
unload ('select venuename, venuecity from venue')
to 's3://amzn-s3-demo-bucket/encrypted/venue_' 
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
master_symmetric_key '<root_key>' 
encrypted gzip;
```

暗号化されたデータファイルをロードするには、同じルートキーの値を含めながら MASTER\$1SYMMETRIC\$1KEY パラメータを追加し、さらに ENCRYPTED オプションを指定します。

```
copy venue from 's3://amzn-s3-demo-bucket/encrypted/venue_' 
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
master_symmetric_key '<root_key>' 
encrypted;
```