Amazon Redshiftコネクタ > 部 III: Amazon Redshiftコネクタを使用したデータ統合 > Amazon Redshiftソースとターゲット > Amazon Redshiftソース
  

Amazon Redshiftソース

Amazon Redshiftオブジェクトを、同期タスク、マッピング、またはマッピングタスクのソースとして使用できます。同期タスクでソースとして複数の関連するAmazon Redshift標準オブジェクトを使用することもできます。
Amazon Redshiftソースオブジェクトを使用するときに、標準オブジェクトをプライマリソースとして選択してから、子オブジェクトを追加することができます。
詳細ソースプロパティを設定するとき、Amazon Redshift固有のプロパティを設定します。データを暗号化し、Amazon S3にステージングファイルを保持して、Amazon Redshiftでファイルにクエリの結果を安全にアンロードできます。

Amazon RedshiftソースのAmazon Redshiftステージングディレクトリ

エージェントは、ソースプロパティで指定したディレクトリにステージングファイルを作成します。同期タスク、マッピングおよびマッピングタスクは、Amazon Redshiftからデータを読み込む前にステージングディレクトリにデータをステージングします。エージェントは、タスクが完了するときに、ステージングディレクトリからステージングファイルを削除します。
Hosted Agentのディレクトリは設定できません。Hosted Agentは、一時的な場所にデータをステージングするディレクトリを作成し、タスクが完了するときにその一時的な場所からそのステージングファイルを削除します。
タスクパフォーマンスを向上させるには、ステージングファイルの圧縮を有効にします。処理するデータのボリュームに最適なディスク領域を使用して、ステージングディレクトリを指定します。各Secure Agentマシンのランタイム環境で使用可能なディレクトリパスを指定します。
アプリケーションは、タスクが実行している時間を基に、ステージングディレクトリにサブディレクトリを作成します。サブディレクトリは次の命名規則を使用します。
<staging directory>/infaRedShiftStaging<MMddHHmmssSSS+xyz>

Amazon Redshiftソースのサーバーサイド暗号化

Amazon Redshiftからファイルを取得してAmazon S3にファイルをステージングするときにAmazon Redshiftでデータを暗号化する場合は、サーバーサイド暗号化を有効にする必要があります。
サーバーサイド暗号化用に接続プロパティでAWS Key Management Service(AWS KMS)によって生成された顧客マスタキーIDを設定できます。IAM認証と、顧客マスタキーを使用したサーバーサイド暗号化を使用する場合は、IAM EC2ロールとIAM Redshiftロールを顧客マスタキーに追加する必要があります。
詳細ターゲットプロパティでサーバーサイド暗号化を選択する場合は、接続プロパティで顧客マスタキーIDを指定する必要があります。
注: Amazon S3のステージングファイルは、タスクの完了後に削除されます。

Amazon Redshiftソースのデータ暗号化

サーバーサイド暗号化のAWS Key Management Service(AWS KMS)によって生成された顧客マスタキーIDを使用すると、データを暗号化できます。
[スケジュール]ページのAmazon Redshiftの詳細ソースプロパティにある[暗号化タイプ]フィールドで、暗号化のタイプを選択できます。Unloadコマンドは、AWSが管理する暗号化キーとAWS Key Management Serviceキーを使用して、サーバーサイド暗号化用にAmazon S3に一時ファイルを作成します。
サーバーサイド暗号化用にUnloadコマンドでAWS Key Management Serviceによって生成された顧客マスタキーIDを使用します。以下のタイプの暗号化を選択できます。
SSE-S3
[SSE-S3]暗号化タイプを選択した場合、UnloadコマンドはAmazon S3バケットに一時ファイルを作成し、Amazon S3はサーバーサイド暗号化用のAWSが管理する暗号化キーを使用してファイルを暗号化します。
SSE-KMS
[SSE-KMS]暗号化タイプを選択した場合、UnloadコマンドはAmazon S3バケットに一時ファイルを作成し、Amazon S3はサーバーサイド暗号化用のAWS KMSが管理する顧客マスタキーを使用してファイルを暗号化します。
接続プロパティで指定したAWS KMSが管理する顧客マスタキーは、Amazon S3をホストする地域と同じ地域に属する必要があります。例えば、Amazon S3が[米国西部(オレゴン)]地域でホストされている場合、[SSE-KMS]暗号化タイプを選択すると、同じ地域で有効にされたAWS KMSが管理する顧客マスタキーを使用する必要があります。
S3クライアントサイドの暗号化の有効化プロパティを有効にして、暗号化タイプSSE-S3として選択した場合、Amazon S3はクライアントサイド暗号化にマスタ対称キーを使用してデータを暗号化します。
S3クライアントサイドの暗号化の有効化プロパティを有効にして、暗号化タイプSSE-KMSとして選択した場合、Amazon S3はクライアントサイド暗号化にAWS Key Management Serviceによって生成された顧客マスタキーIDを使用してデータを暗号化します。
注: Amazon Redshiftコネクタは、マスタ対称キーを使用するサーバーサイド暗号化と、顧客マスタキーを使用するクライアントサイド暗号化をサポートしていません。

Amazon Redshiftソースのクライアントサイド暗号化

クライアントサイド暗号化は、データをAmazon Redshiftサーバーに送信する前にデータを暗号化する方法です。
Amazon Redshiftソースに対してクライアントサイド暗号化を有効にすると、Amazon Redshiftは暗号化されたデータをアンロードしてから、そのデータをSecure Agentにプッシュします。Secure Agentは、タスクまたはマッピングロジックに基づいてデータをターゲットに書き込みます。
クライアントサイド暗号化を有効にするには、接続プロパティでマスタ対称キーを指定し、詳細ターゲットプロパティで[S3クライアントサイドの暗号化の有効化]オプションを選択する必要があります。
Secure Agentは、マスタ対称キーを使用してデータを暗号化します。マスタ対称キーはBase64形式の256ビットAES暗号化キーです。Amazon Redshiftコネクタはマスタ対称キーを使用してAmazon S3サーバーにデータをアップロードし、[暗号化]オプションを設定したcopyコマンドと追加のセキュリティ用のプライベート暗号化キーを使用して、データをロードします。

Unloadコマンド

Unloadコマンドを使用すると、Amazon Redshiftからデータを抽出し、Amazon S3でステージングファイルを作成できます。Unloadコマンドはセキュアな接続を使用して、Amazon S3上の1つ以上のファイルにデータをロードします。
Unloadコマンドオプションを[UnloadOptionsプロパティファイル]フィールドで直接指定できます。オプションを大文字で入力し、オプションの区切りには、Unloadコマンドには次のオプションとデフォルト値があります。
プロパティファイルにはUnloadコマンドオプションが含まれます。[UnloadOptionsプロパティファイル]フィールドにプロパティファイルパスを追加します。以下に例を示します。
C:\Temp\Redshift\unloadoptions.txt
印刷できない文字の8進数の表現をDELIMITERおよびQUOTEとして使用することを推奨します。
pre-SQLコマンドまたはpost-SQLコマンドとしてUnloadコマンドを実行する場合は、ALLOWOVERWRITEオプションを指定して既存のオブジェクトを上書きします。

Unloadコマンドのオプション

UnloadコマンドのオプションはAmazon Redshiftからデータを抽出し、Amazon S3のステージングファイルに特定の形式でデータをロードします。特定の文字を使用してデータを区切ったり、複数のファイルにデータを並行して読み込んだりできます。
Unloadコマンドにオプションを追加するには、[UnloadOptionsプロパティファイル]オプションを使用します。以下のオプションを設定できます。
DELIMITER
入力ファイル内のフィールドを区切るための単一のASCII文字。パイプ(|)、チルダ(~)、タブ(\t)などの文字を使用できます。指定した区切り文字をデータに含めることはできません。区切り文字がデータに含まれる場合、ESCAPEを使用すると、区切り文字が通常の文字として読み取られます。デフォルトは\036で、印刷できない8進数のレコード区切り文字です。
ESCAPE
次の文字が出現する前に、区切りアンロードファイルにCHARカラムとVARCHARカラムのエスケープ文字を追加できます。
デフォルトはOFFです。
PARALLEL
Unloadコマンドは、クラスタ内のスライス数に従ってデータを複数のファイルに並行して書き込みます。デフォルトはONです。並行オプションをオフにすると、Unloadコマンドはデータを順番に書き込みます。データファイルの最大サイズは6.5 GBです。
AWS_IAM_ROLE
Amazon EC2システムにインストールされたでを実行するAmazon Redshiftロールリソース名(ARN)を次の形式で指定します。AWS_IAM_ROLE=arn:aws:iam::<account ID>:role/<role-name>
例: arn:aws:iam::123123456789:role/redshift_read
ADDQUOTES
ADDQUOTESは、デフォルトではUNLOADコマンドで実行されます。詳細ソースプロパティでADDQUOTESオプションを指定しないでください。Unloadコマンドは各データフィールドに引用符を追加します。引用符を追加すると、UNLOADコマンドは区切り文字を含むデータ値を読み取ることができます。二重引用符(")がデータに含まれる場合、ESCAPEを使用すると、区切り文字が通常の文字として読み取られます。

パーティション化

Amazon Redshiftからデータを読み取る際には、パーティション化を設定して実行時のマッピングのパフォーマンスを最適化できます。パーティションタイプによって、パーティションポイントでパーティションにデータを配布する方法を制御します。
キー範囲パーティションなどのパーティションタイプを定義できます。1つまたは複数のフィールドの値に基づいてAmazon Redshiftデータをパーティション化するようにキー範囲パーティション化を設定します。キー範囲パーティション化により、Secure Agentはパーティションキーとして定義したフィールドに基づいてソースデータ行を分散します。Secure Agentは、フィールド値を各パーティションの範囲値と比較して、適切なパーティションに行を送信します。
データ値が均等に分散されているカラムには、キー範囲パーティション化を使用します。そうしないと、パーティションのサイズが等しくなくなる可能性があります。例えば、あるカラムのキー値1から1000の間には10行あり、キー値1001から2000の間には999行があるというようになります。
キー範囲パーティション化では、あるパーティションのクエリが別のパーティションよりも先に行を返す場合があります。または、あるパーティションは行を返し、他のパーティションは行を返さない場合もあります。テーブル内の行がキー範囲と同じ順序である場合にこのようなことが起こります。あるクエリは行を読み取って行を返し、他のクエリは同じ行を読み取ってフィルタすることもあります。
注: 推奨されるパーティションの最大数は32です。32を超えるパーティションを設定すると、マッピングタスクがメモリバッファエラーで失敗する場合があります。