Amazon S3 からの COPY - Amazon Redshift

Amazon S3 からの COPY

S3 バケットに配置したファイルからデータをロードするには、FROM 句を使用して COPY が Amazon S3 にあるファイルを見つける方法を指定します。FROM 句の一部としてデータファイルのオブジェクトパスを指定できます。または、Amazon S3 オブジェクトパスのリストを含むマニフェストファイルの場所を指定できます。Amazon S3 からの COPY では、HTTPS 接続が使用されます。S3 IP 範囲が許可リストに追加されていることを確認します。必要な S3 IP 範囲の詳細については、「ネットワークの隔離」を参照してください。

重要

データファイルを保持する Amazon S3 バケットがクラスターと同じ AWS リージョンに存在しない場合は、REGIONパラメータを使用して、データがあるリージョンを指定する必要があります。

構文

FROM { 's3://objectpath' | 's3://manifest_file' } authorization | MANIFEST | ENCRYPTED | REGION [AS] 'aws-region' | optional-parameters

次の例では、オブジェクトパスを使用して Amazon S3 からデータをロードします。

copy customer from 's3://amzn-s3-demo-bucket/customer' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';

次の例では、マニフェストファイルを使用して Amazon S3 からデータをロードします。

copy customer from 's3://amzn-s3-demo-bucket/cust.manifest' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' manifest;

パラメータ

FROM

ロードするデータのソースです。Amazon S3 ファイルのエンコードの詳細については、データ変換パラメータ を参照してください。

's3://copy_from_s3_objectpath'

データを含む Amazon S3 オブジェクトへのパスを指定します (例: 's3://amzn-s3-demo-bucket/custdata.txt')。s3://copy_from_s3_objectpath パラメータは、1 つのファイルを参照することも、同じキープレフィックスを持つオブジェクトまたはフォルダの集合を参照することもできます。たとえば、名前 custdata.txtcustdata.txtcustdata.txt.1custdata.txt.2custdata.txt.bak など、複数の物理ファイルを参照するキープレフィックスです。キープレフィックスは複数のフォルダを参照することもできます。たとえば、's3://amzn-s3-demo-bucket/custfolder'custfolder フォルダや custfolder_1 フォルダなどを参照します。custfolder_2キープレフィックスが複数のフォルダを参照する場合、フォルダ内のすべてのファイルがロードされます。キープレフィックスが custfolder.log などのフォルダだけでなくファイルとも一致する場合、COPY はファイルのロードも試みます。キープレフィックスが原因で COPY が不要なファイルをロードしようとした場合は、マニフェストファイルを使用します。詳細については、copy_from_s3_manifest_fileを参照してください。

重要

データファイルを保持する S3 バケットがクラスターと同じ AWS リージョンに存在しない場合は、REGIONパラメータを使用して、データがあるリージョンを指定する必要があります。

詳細については、「Amazon S3 からデータをロードする」を参照してください。

's3://copy_from_s3_manifest_file'

ロードするデータファイルをリストするマニフェストファイルの Amazon S3 オブジェクトキーを指定します。's3://copy_from_s3_manifest_file' 引数は、単一のファイル ('s3://amzn-s3-demo-bucket/manifest.txt' など) を明示的に参照する必要があります。キープレフィックスを参照することはできません。

マニフェストは、Amazon S3 からロードする各ファイルの URL をリストする、JSON 形式のテキストファイルです。URL にはバケット名およびファイルの完全オブジェクトパスが含まれます。マニフェストで指定するファイルの場所は異なるバケットでもかまいませんが、すべてのバケットは Amazon Redshift クラスターと同じ AWS リージョンに置かれている必要があります。ファイルが 2 回リストされている場合、ファイルは 2 回ロードされます。次の例は、3 つのファイルをロードするマニフェストの JSON を示しています。

{ "entries": [ {"url":"s3://amzn-s3-demo-bucket1/custdata.1","mandatory":true}, {"url":"s3://amzn-s3-demo-bucket1/custdata.2","mandatory":true}, {"url":"s3://amzn-s3-demo-bucket2/custdata.1","mandatory":false} ] }

二重引用符は必須であり、傾きの付いた "高機能な" 引用符ではなくシンプルな引用符 (0x22) にする必要があります。マニフェストの各エントリには、オプションとして mandatory フラグを含めることができます。mandatorytrue に設定されている場合、そのエントリのファイルが見つからなければ、COPY は終了します。ファイルが見つかれば、COPY 処理は継続します。mandatory のデフォルト値は false です。

以下の例に示すように、Parquet または ORC 形式のデータファイルからロードする場合、metaフィールドは必須です。

{ "entries":[ { "url":"s3://amzn-s3-demo-bucket1/orc/2013-10-04-custdata", "mandatory":true, "meta":{ "content_length":99 } }, { "url":"s3://amzn-s3-demo-bucket2/orc/2013-10-05-custdata", "mandatory":true, "meta":{ "content_length":99 } } ] }

ENCRYPTED、GZIP、LZOP、BZIP2、または ZSTD オプションを指定している場合でも、マニフェストファイルの暗号化または圧縮は行わないでください。指定したマニフェストファイルが見つからないか、マニフェストファイルの形式が適切ではない場合、COPY はエラーを返します。

マニフェストファイルを使用する場合、COPY コマンドに MANIFEST パラメータを指定する必要があります。MANIFEST パラメータを指定しない場合、COPY では、FROM で指定されたファイルがデータファイルであると想定します。

詳細については、「Amazon S3 からデータをロードする」を参照してください。

authorization

COPY コマンドが、他の AWS リソース (Amazon S3、Amazon EMR、Amazon DynamoDB、Amazon EC2 など) のデータにアクセスするにためには承認が必要です。この認可を付与するには、クラスターにアタッチした AWS Identity and Access Management (IAM) ロールを参照 (ロールベースのアクセスコントロール) するか、ユーザーのアクセス認証情報を指定 (キーベースのアクセスコントロール) します。セキュリティと柔軟性を強化するために、IAM ロールベースのアクセスコントロールを使用することをお勧めします。詳細については、「認可パラメータ」を参照してください。

MANIFEST

Amazon S3 からロードするデータファイルの識別にマニフェストを使用することを指定します。MANIFEST パラメータが使用されている場合、COPY は 's3://copy_from_s3_manifest_file' によって参照されるマニフェストに記載されているファイルからデータをロードします。マニフェストファイルが見つからない場合、または形式が正しくない場合、COPY は失敗します。詳細については、「マニフェストを使用し、データファイルを指定する」を参照してください。

ENCRYPTED

Amazon S3 にある入力ファイルの暗号化が、カスタマーマネージドのキーを使用したクライアント側の暗号化であることを指定する句。詳細については、「暗号化されたデータファイルを Amazon S3 からロードする」を参照してください。入力ファイルが Amazon S3 サーバー側の暗号化 (SSE-KMS または SSE-S3) を使用して暗号化されている場合は、ENCRYPTED を指定しないでください。COPY では、サーバー側で暗号化されたファイルを自動的に読み取ります。

ENCRYPTED パラメータを指定する場合は、MASTER_SYMMETRIC_KEYパラメータも指定するか、master_symmetric_key値を CREDENTIALS 文字列に含める必要があります。

暗号化されたファイルが圧縮形式である場合は、GZIP、LZOP、BZIP2、ZSTD パラメータを追加してください。

ENCRYPTED を指定している場合でも、マニフェストファイルと JSONPaths ファイルの暗号化は行わないでください。

MASTER_SYMMETRIC_KEY 'root_key'

Amazon S3 のデータファイルの暗号化に使用されたルート対称キー。MASTER_SYMMETRIC_KEY を指定する場合、ENCRYPTEDパラメータも指定する必要があります。MASTER_SYMMETRIC_KEY は CREDENTIALS パラメータと併用できません。詳細については、「暗号化されたデータファイルを Amazon S3 からロードする」を参照してください。

暗号化されたファイルが圧縮形式である場合は、GZIP、LZOP、BZIP2、ZSTD パラメータを追加してください。

REGION [AS] 'aws-region'

ソースデータが配置されている AWS のリージョンを指定します。REGION は、データを含む AWS のリソースが Amazon Redshift クラスターと同じリージョンにない場合に、Amazon S3 バケットまたは DynamoDB テーブルから COPY を実行するために必要となります。

aws_region の値は、Amazon Redshift リージョンとエンドポイントテーブルに示されているリージョンと一致している必要があります。

REGION パラメータが指定されている場合、マニフェストファイルや複数の Amazon S3 バケットを含むすべてのリソースが指定されたリージョンに存在している必要があります。

注記

リージョン間でデータを転送する場合、Amazon S3 バケットやデータを含む DynamoDB テーブルに対して追加料金が発生します。料金の詳細については、「Amazon S3 の料金」ページの別の AWS リージョンへの「Amazon S3 からのデータ転送 (アウト)」、および「Amazon DynamoDB の料金」ページの「データ転送 (アウト)」を参照してください。

デフォルトでは、COPY はデータが Amazon Redshift クラスターと同じリージョンにあると見なします。

任意指定のパラメータ

Amazon S3 からの COPY では、オプションで次のパラメータを指定できます。

サポートされないパラメータ

Amazon S3 からの COPY では、次のパラメータは使用できません。

  • SSH

  • READRATIO