Amazon S3 V2ソース
マッピングまたはマッピングタスクのソースとしてAmazon S3 V2オブジェクトを使用できます。
Amazon S3 V2ソースの名前と説明を指定します。ソースオブジェクトのAmazon S3 V2ソースと詳細プロパティを設定します。
Amazon S3 V2ソースでのデータ暗号化
Amazon S3 V2ソースからデータの読み取りを行う際にデータを復号することができます。
次の表に、さまざまなファイルタイプに使用できる暗号化のタイプを示します。
暗号化タイプ | ファイルタイプ |
---|
クライアントサイド暗号化 | Binary1、Flat |
サーバーサイド暗号化 | Avro、Binary1、Delta1、Flat、JSON2、ORC、Parquet |
KMSを使用したサーバーサイド暗号化 | Avro、Binary1、Delta1、Flat、JSON2、ORC、Parquet |
Informatica Encryption | Binary1、Flat |
1詳細モードのマッピングには適用されません。 2詳細モードのマッピングにのみ適用されます。 |
Amazon S3 V2ソースのクライアントサイド暗号化
クライアントサイド暗号化は、データをAmazon S3サーバーに送信する前にデータを暗号化する方法です。
Amazon S3バケットの、クライアントサイド暗号化が行われたファイルを読み取ることができます。クライアントサイド暗号化が行われたファイルを読み取るには、接続プロパティでマスタ対称キーまたは顧客マスタキーを指定する必要があります。Secure Agentは、マスタ対称キーまたは顧客マスタキーを使用してデータを復号化します。
サードパーティのツールを使用してクライアントサイド暗号化が行われたファイルを生成すると、暗号化されたファイルのメタデータが生成されます。Amazon S3から暗号化されたファイルを読み取るには、暗号化されたファイルと暗号化されたファイルのメタデータをAmazonS3バケットにアップロードする必要があります。
暗号化されたファイルをアップロードする場合は、メタデータに次のキーが必要です。
- •Content-Type
- •x-amz-meta-x-amz-key
- •x-amz-meta-x-amz-unencrypted-content-length
- •x-amz-meta-x-amz-matdesc
- •x-amz-meta-x-amz-iv
クライアントサイド暗号化が行われたファイルの読み取り
クライアントサイド暗号化が行われたファイルを読み取るには、次のタスクを実行します。
- 1Amazon S3 V2接続を作成するときに、マスタ対称キーを指定します。
必ず、Base64形式の256ビットAES暗号化キーを指定してください。
- 2local_policy.jarおよびUS_export_policy.jarファイルを、Secure Agentインストール内の次のいずれかのディレクトリにコピーします。
- - <Secure Agentインストールディレクトリ>/jdk/jre/lib/security/policy/unlimited/から<Secure Agentインストールディレクトリ>/jdk/jre/lib/security/へ
- - <Secure Agentインストールディレクトリ>/jdk8/jre/lib/security/policy/unlimited/から<Secure Agentインストールディレクトリ>/jdk8/jre/lib/security/へ
- 3Secure Agentを再起動します。
Amazon S3 V2ソースのサーバーサイド暗号化
サーバーサイド暗号化は、Amazon S3が管理する暗号化キーを使用してデータを暗号化する方法です。KMSを使用したサーバーサイド暗号化は、AWS KMSが管理する顧客マスタキーを使用してデータを暗号化する方法です。
- サーバーサイド暗号化
- サーバーサイド暗号化ファイルを読み取るには、Amazon S3 V2ソースで暗号化されたファイルを選択します。
- KMSを使用したサーバーサイド暗号化
- KMSでサーバーサイド暗号化ファイルを読み取るには、AWS KMSが管理する顧客マスタキーを[顧客マスタキーID]接続プロパティで指定し、Amazon S3 V2ソースで暗号化されたファイルを選択します。
注: 詳細ソースプロパティで暗号化タイプを指定する必要はありません。
Amazon S3 V2ソースのInformatica Encryption
Informatica暗号ライブラリを使用して暗号化されたバイナリソースファイルまたはフラットソースファイルをローカルマシンまたはステージングロケーションにダウンロードし、ソースファイルを復号化できます。
Informatica Encryptionは、Secure Agentマシンでマッピングを実行する場合にのみ適用されます。Informatica暗号ライブラリを使用して暗号化されたソースファイルを読み取るには、次のタスクを実行します。
- 1Amazon S3 V2接続を作成するときに、組織の管理者がInformatica暗号ライブラリのライセンスに対する権限を持っていることを確認します。
- 2詳細ソースプロパティで、暗号化タイプに[Informatica Encryption]を選択します。
注: 詳細クラスタでInformatica Encryptionを使用するには、Secure AgentをAmazon EC2マシンにインストールする必要があります。
Informaticaで暗号化されたソースファイルを読み取り、暗号化タイプに[Informatica Encryption]を選択すると、データプレビューが失敗します。
データをプレビューできるようにするには、Informaticaで暗号化された読み取りたいソースファイルにあるメタデータと同じメタデータを含むダミーソースファイルを選択します。Informaticaで暗号化されたソースファイルのファイル名を[ファイル名]詳細ソースプロパティに入力し、ダミーソースファイルのファイル名を上書きします。次に、詳細ソースプロパティで、暗号化タイプに[Informatica Encryption]を選択します。
注: マッピングでIInformatica Encryptionを使用した場合、1000個を超えるファイルを復号することはできません。
Amazon S3 V2ソースのソースタイプ
データの読み取り元のソースのタイプを選択できます。
Amazon S3 V2詳細ソースプロパティの[ソースタイプ]オプションから次のソースタイプを選択できます。
- ファイル
- Amazon S3ファイルを含むバケット名を入力する必要があります。該当する場合は、<bucket_name>/<folder_name>形式で、ターゲットファイルを含むフォルダの名前を追加します。
- Amazon S3 V2コネクタには、実行時に[フォルダパス]と[ファイル名]プロパティの値を上書きできるオプションがあります。
バケット名を指定せずに、/<folder_name>形式でスラッシュ(/)から始まるフォルダパスを指定した場合、このフォルダパスは接続プロパティで指定したフォルダパスに付加されます。
例えば、このプロパティでフォルダパスを/<dir2>と指定し、接続プロパティでフォルダパスを<my_bucket1>/<dir1>と指定すると、このフォルダパスは、<my_bucket1>/<dir1>/<dir2>形式で接続プロパティで指定したフォルダパスに付加されます。
接続プロパティでフォルダパスを<my_bucket1>/<dir1>と指定し、このプロパティでフォルダパスを<my_bucket2>/<dir2>と指定すると、Secure Agentはこのプロパティで指定したフォルダパス<my_bucket2>/<dir2>にファイルを書き込みます。
- ディレクトリ
マッピングを作成して、実行時にソースタイプを[ディレクトリ]として選択する場合は、ソースファイルを選択する必要があります。[ソースタイプ]オプションを[ディレクトリ]として選択すると、ワイルドカード文字を使用してフォルダパスまたはファイル名を指定する場合、またはディレクトリからファイルを再帰的に読み取る場合にのみ[ファイル名]の値が優先されます。
読み取り操作では、実行時に[フォルダパス]の値を指定すると、Secure Agentは詳細ソースプロパティから[フォルダパス]の値を使用します。実行時に[フォルダパス]の値を指定しないと、Secure Agentは接続作成中に指定した[フォルダパス]の値を使用します。
ソースタイプとして[ディレクトリ]を選択するには、次のルールとガイドラインを使用します。
- - ディレクトリ内のすべてのソースファイルに同じメタデータが含まれている必要があります。
- - すべてのファイルに同じ形式のデータが含まれている必要があります。例えば、区切り記号、ヘッダーフィールド、およびエスケープ文字は同じである必要があります。
- - 指定されたディレクトリ内のすべてのファイルが解析されます。サブディレクトリ下のファイルは、ディレクトリからファイルを再帰的に読み取る場合にのみ解析されます。
複数のファイルからの読み込み
Amazon S3からフラット形式タイプの複数のファイルを読み取る、またはマッピングのターゲットにデータを書き込むことができます。
次のタイプのマニフェストファイルを使用できます。
- •カスタムマニフェストファイル
- •Amazon Redshiftマニフェストファイル
カスタムマニフェストファイル
フラット形式タイプの複数のファイルをAmazon S3から読み取ること、およびターゲットにデータを書き込むことができます。複数のフラットファイルを読み取るには、すべてのファイルが同じAmazon S3バケットに存在している必要があります。
Amazon S3バケットの複数のソースを読み取る場合は、すべてのソースファイルを含んだ、それぞれの絶対パスまたはディレクトリパスを持つ.manifestファイルを作成する必要があります。.manifestファイル名は、<file_name>.manifestという形式で指定する必要があります。
例えば、.manifestファイルには次の形式でソースファイルが含まれます。
{
"fileLocations": [
{
"URIs": [
"dir1/dir2/dir3/file_1.csv",
"dir1/dir2/dir3/file_2.csv",
"dir1/file_3.csv"
]
},
{
"URIPrefixes": [
"dir1/dir2/dir3/",
"dir1/dir2/dir4/"
]
},
{
"WildcardURIs": [
"dir1/dir2/dir3/*.csv"
]
}
]
}
カスタムマニフェストファイルのには、次のタグが含まれています。
- •URI。バケット名に関連するファイルのパスを指定します。
- •URIPrefix。バケット名に関連するディレクトリのパスを指定します。
- •WildcardURI。フラット形式タイプのファイル名にアスタリスク(*)ワイルドカードを指定して、Amazon S3バケットからファイルを取得します。アスタリスク(*)ワイルドカードを指定すると、すべてのファイルまたは名前のパターンに一致するファイルのみを取得します。
.manifestファイルのURIs、URIPrefixes、WildcardURIs、またはfileLocations内のすべてのセクションを指定できます。
フォルダ名の指定には、ワイルドカード文字を使用できません。例: { "WildcardURIs": [ "multiread_wildcard/dir1*/", "multiread_wildcard/*/" ] }。
[データプレビュー]タブには、.manifestファイルで指定されたURIに存在する最初のファイルのデータが表示されます。URIセクションが空の場合、URIPrefixesで指定されたフォルダの最初のファイルが表示されます。
Amazon Redshiftマニフェストファイル
UNLOADコマンドで作成されたAmazon Redshiftマニフェストファイルを使用して、Amazon S3から複数のフラットファイルを読み取ることができます。すべてのフラットファイルは同じメタデータを持ち、同じAmazon S3バケットで利用可能である必要があります。
.manifestファイルを作成して、ファイルのバケット名と完全なオブジェクトパスを含んだURLを使用してすべてのソースファイルを一覧表示します。.manifestファイル名は、<file_name>.manifestという形式で指定する必要があります。
例えば、Amazon Redshiftマニフェストファイルには次の形式でソースファイルが含まれます。
{
"entries": [
{"url": "s3://mybucket-alpha/2013-10-04-custdata", "mandatory":true},
{"url": "s3://mybucket-alpha/2013-10-05-custdata", "mandatory":true},
{"url": "s3://mybucket-beta/2013-10-04-custdata", "mandatory":true},
{"url": "s3://mybucket-beta/2013-10-05-custdata", "mandatory":true},
]
}
Redshiftマニフェストファイルの形式には、次のタグが含まれています。
- url
- urlタグは、次の形式のソースファイルで構成されています。
"url": "<エンドポイント名>://<フォルダパス>/<ファイル名>", "mandatory":<値>
- mandatory
- Amazon S3 V2コネクタは、mandatoryタグを使用して、.manifestファイル内のファイルの読み取りを続行するかどうかを次のシナリオに基づいて決定します。
- - mandatoryタグの値がtrueで、S3バケットに指定されたソースファイルがない場合、Amazon S3 V2コネクタは.manifestファイル内の残りのファイルも読み取りません。マッピングタスクは失敗します。
- - mandatoryタグの値がfalseで、S3バケットに指定されたファイルがない場合、Amazon S3 V2コネクタは.manifestファイル内の残りのファイルの読み取りを順番に続行します。
- - .manifestファイルにファイルが含まれていない場合、マッピングタスクは失敗します。
- デフォルトでは、mandatoryタグの値はfalseです。
ファイルの増分ロード
ディレクトリにソースファイルを増分ロードして、マッピングタスクの最後の実行以降に変更されたファイルのみを読み取り、処理することができます。
ファイルの増分ロードは、詳細モードのマッピングからのみ可能です。すべてのソースファイルが同じクラウド環境に存在することを確認してください。
ソースファイルを増分ロードするには、Amazon S3 V2データオブジェクトの詳細読み取りオプションでソースタイプに[増分ファイルロード]とディレクトリを選択します。
Amazon S3からファイルを増分ロードする場合、ジョブは、最終ロード時刻からジョブの実行を開始する20分前までに変更されたファイルをロードします。例えば、午後2時にジョブを実行すると、ジョブは午後1時45分より前に変更されたファイルをロードします。Amazon S3上でオブジェクトのアップロードが完了するまでに数分かかることがあるため、この20分のバッファにより、ジョブが完全なファイルのみをロードすることが保証されます。
マッピングタスクを設定すると、[増分ファイルロード]セクションに、ファイルを増分ロードするソーストランスフォーメーションと、最後のジョブがファイルのロードを完了した時刻が一覧表示されます。デフォルトでは、実行される次のジョブは、最終ロード時刻の後に変更されたファイルを確認します。
指定したソースディレクトリ内の変更されたファイルを検索するためにマッピングが使用するロード時間を上書きすることもできます。増分ファイルロード設定をリセットして、ディレクトリ内の変更されたすべてのファイルの完全ロードを実行することや、マッピングが変更されたファイルを検索するために使用する時間を設定することもできます。
ParquetやAvroなどの複合ファイル形式を含むディレクトリを増分ロードする詳細モードでのマッピングは、前回の実行以降にソース内に新しいファイルまたは変更されたファイルがない場合、失敗します。
ワイルドカード文字
詳細モードのマッピングを実行して、Avroファイル、フラットファイル、JSONファイル、ORCファイル、またはParquetファイルからデータを読み取る場合は、? および*というワイルドカード文字を使用してフォルダパスまたはファイル名を指定できます。
フォルダパスまたはファイル名にワイルドカード文字を使用するには、Amazon S3 V2データオブジェクトの詳細読み取りプロパティで[ワイルドカード文字を許可]オプションを選択します。
- ? (疑問符)
- 疑問符(?)の部分に文字を1つ含む文字列を検索します。例えば、ソースファイル名にa?b.txtと入力すると、Secure Agentは次のような名前のファイルからデータを読み取ります。
- - a1b.txt
- - a2b.txt
- - aab.txt
- *(アスタリスク)
- アスタリスクマーク(*)の部分に文字のない文字列、または文字を1つ以上含む文字列を検索します。例えば、ソースファイル名にa*b.txtと入力すると、Secure Agentは次のような名前のファイルからデータを読み取ります。
- - aab.txt
- - a1b.txt
- - ab.txt
- - abc11b.txt
アスタリスク(*)ワイルドカードを使用すると、すべてのファイルまたは名前のパターンに一致するファイルのみを取得できます。次の形式でワイルドカード文字を指定します。
abc*.txtを指定すると、Secure Agentは、abcという語から始まり、.txtというファイル拡張子で終わるすべてのファイル名を読み取ります。abc.*を指定すると、Secure Agentは、拡張子に関係なく、abcという語から始まるすべてのファイル名を読み取ります。
ワイルドカード文字のルールとガイドライン
ワイルドカード文字を使用してフォルダパスまたはファイル名を指定する場合は、次のルールとガイドラインを考慮してください。
- •バケット名にワイルドカード文字を指定することはできません。
- •フォルダパスにワイルドカード文字を指定し、Amazon S3バケットに名前のパターンに一致するフォルダが含まれていない場合、マッピングは失敗します。
- •ファイル名にワイルドカード文字を指定し、Amazon S3バケットに名前のパターンに一致するファイルが含まれていない場合、マッピングは失敗します。
- •詳細モードのマッピングのフォルダパスでワイルドカード文字を使用すると、Secure Agentは名前のパターンに一致するフォルダとファイルからデータを読み取ります。
ディレクトリからのファイルの再帰読み取り
詳細モードのAmazon S3 V2マッピングのサブディレクトリに保存されているオブジェクトを読み取ることができます。フラットファイル、Avroファイル、JSONファイル、ORCファイル、およびParquetファイルに対しては、再帰読み取りを使用できます。再帰読み取りを使用して読み取るファイルは、同じメタデータを持っている必要があります。
再帰読み取りを有効にするには、詳細ソースプロパティでソースタイプを[ディレクトリ]として選択します。サブディレクトリに格納されているオブジェクトを読み取るには、[再帰的なディレクトリの読み取り]詳細ソースプロパティを有効にします。
また、フォルダパスまたはファイル名にワイルドカード文字を指定して、再帰的な読み取りを使用することもできます。例えば、ワイルドカード文字を使用すると、次のような方法でファイルを再帰的に読み取ることができます。
- •フォルダパスを/abc*/とした場合。フォルダ名の先頭にパターンabcがあるフォルダまたはサブフォルダ内のすべてのファイルを返します。
- •フォルダパスを/abc*/として、ファイル名をmyfile*とした場合。フォルダまたはサブフォルダ内のファイル名の先頭にパターンmyfileがあり、フォルダ名の先頭にパターンabcがあるすべてのファイルを返します。
ソースパーティション
フラットファイル、Avroファイル、ORCファイル、またはParquetファイルからデータを読み取る場合に、実行時にマッピングのパフォーマンスを最適化するように固定パーティションを設定できます。固定パーティションは、マッピングでのみ設定できます。
パーティションタイプによって、パーティションポイントでパーティションにデータを配布する方法を制御します。パーティション化が設定されていると、Secure Agentは、パーティションとして定義したスレッドの数に基づいてソースデータの行を配布します。
Mapping Designerでソーストランスフォーメーションを設定する際に、パーティション化を有効にします。
ソーストランスフォーメーションの[パーティション]タブで、固定パーティションを選択し、読み取るデータの容量に基づいてパーティションの数を入力します。デフォルトでは、[パーティションの数]フィールドの値は1です。
次の図に、設定されたパーティショニングを示します。
Secure Agentは、Amazon S3 V2ソースファイルのサイズに応じてパーティションを有効にします。ファイル名には、<file name>_<number>形式で、0から始まる数字が付加されます。
パーティション化を有効にした場合に、ソースカラムの精度がそのカラムの最大データ長より小さいと、予期しない結果が発生することがあります。予期しない結果が発生しないようにするには、パーティション化が期待通りに機能するようにするために、ソースカラムの精度を、そのカラムの最大データ長と同じかそれより大きくする必要があります。
注: マニフェストファイル、圧縮された.gzファイル、または読み取りディレクトリファイルから読み取るようにマッピングでAmazon S3 V2ソースのパーティションを設定すると、Secure Agentはパーティションを無視します。ただし、タスクは正常に実行されます。
ソースオブジェクトパスの読み取り
ソースオブジェクトをインポートするときに、Secure Agentはインポートされたソースオブジェクトにファイル名フィールドを追加します。ファイル名フィールドには、Secure Agentがランタイムにデータを読み取るソースファイルの絶対パスが格納されます。
例えば、読み取り対象の複数のレコードが格納された多数のファイルがあるディレクトリになるとします。Amazon S3 V2ソースの詳細プロパティで、ソースタイプとしてこのディレクトリを選択します。マッピングを実行するときに、Secure Agentは各レコードを読み取り、対応するソースファイルの絶対パスをファイル名フィールドに格納します。
ファイル名フィールドは、次のファイル形式に適用されます。
- •Avro
- •バイナリ。マッピングのみに適用されます。
- •ORC
- •Parquet
注: ソースデータのカラム名にFileNameは使用しないでください。FileNameは予約済みのキーワードです。この名前は、大文字と小文字が区別されます。
ソースオブジェクトでFileNameフィールドを使用すると、Secure Agentはマッピングと詳細モードのマッピングではそれぞれ異なる方法でファイル名とディレクトリ名を読み取ります。
特徴 | マッピング | 詳細モードのマッピング |
---|
ファイル名 | xyz.amazonaws.com/aa.bb.bucket/1024/characterscheckfor1024 | s3a://<bucket_name>/customer.avro |
ディレクトリ名 | <ファイル名を含むファイルの絶対パス> | s3a://<bucket_name>/avro/<directory_name>/<file_name> |
注: ソースオブジェクトの[FileName]フィールドは、デフォルトで-を使用した形式を使用します。例: s3-us-west-2.amazonaws.com/<bucket_name>/automation/customer.avro
を使用するように[FileName]フィールドの形式を変更します。、JVMオプションchangeS3EndpointForFileNamePort = trueを設定します。例: s3.us-west-2.amazonaws.com/<bucket_name>/automation/customer.avro
SQL ELTの最適化
データをAmazon S3ソースからAmazon Redshiftのデータウェアハウスにロードする場合に、完全なSQL ELTの最適化を有効にすることができます。Amazon Redshiftにデータをロードするときに、データウェアハウスモデルおよび要件ごとにデータを変換できます。マッピングタスクで完全なSQL ELTの最適化を有効にすると、マッピングロジックがAWS環境にプッシュされ、AWSコマンドが利用されます。詳細モードで設定されたマッピングに基づいて、タスクに対してSQL ELTの最適化を設定することはできません。
SQL ELTの最適化の詳細については、Amazon Redshift V2コネクタのヘルプを参照してください。サポートされている他のクラウドデータウェアハウスにデータをロードする必要がある場合は、該当するクラウドデータウェアハウスのコネクタのヘルプを参照してください。