メニュー
Amazon Redshift
データベース開発者ガイド (API Version 2012年12月1日)

Amazon S3 からのコピー

S3 バケットに配置したファイルからデータをロードするには、FROM 句を使用して COPY が Amazon S3 にあるファイルを見つける方法を指定します。FROM 句の一部としてデータファイルのオブジェクトパスを指定できます。または、Amazon S3 オブジェクトパスのリストを含むマニフェストファイルの場所を指定できます。Amazon S3 からの COPY では、HTTPS 接続が使用されます。

重要

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

構文

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

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

Copy
copy customer from 's3://mybucket/customer' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';

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

Copy
copy customer from 's3://mybucket/cust.manifest' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' manifest;

Parameters

FROM

ロードするデータのソースです。

「s3://copy_from_s3_objectpath

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

重要

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

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

「s3://copy_from_s3_manifest_file

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

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

Copy
{ "entries": [ {"url":"s3://mybucket-alpha/custdata.1","mandatory":true}, {"url":"s3://mybucket-alpha/custdata.2","mandatory":true}, {"url":"s3://mybucket-beta/custdata.1","mandatory":false} ] }

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

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

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

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

authorization

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

MANIFEST

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

ENCRYPTED

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

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

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

MASTER_SYMMETRIC_KEY 'master_key'

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

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

REGION [AS] 'aws-region'

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

aws_region の値は、次の表に示されているリージョンと一致している必要があります。

リージョン名 サービス対象
米国東部(バージニア北部) us-east-1
米国東部 (オハイオ) us-east-2
米国西部 (北カリフォルニア) us-west-1
米国西部 (オレゴン) us-west-2
アジアパシフィック (ムンバイ) ap-south-1
アジアパシフィック (シンガポール) ap-southeast-1
アジアパシフィック (シドニー) ap-southeast-2
アジアパシフィック (東京) ap-northeast-1
アジアパシフィック (ソウル) ap-northeast-2
カナダ (中部) ca-central-1
中国 (北京) cn-north-1
欧州 (フランクフルト) eu-central-1
欧州 (アイルランド) eu-west-1
欧州 (ロンドン) eu-west-2
南米 (サンパウロ) sa-east-1
AWS GovCloud (US) us-gov-west-1

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

注記

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

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

オプションのパラメータ

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

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

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

  • SSH

  • READRATIO