TalendでAmazonS3に接続するコンポーネントまとめ

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

タイトルの通り、TalendでAmazonS3に関連するコンポーネントをご紹介します。
AmazonS3にCSV/TSV形式でデータのバックアップを取る、 RedshiftにCopyするためのファイルを置くなど、AmazonS3関連のコンポーネントを使う機会も少なくありません。

AmazonS3に関連したコンポーネント一覧

Talend Open Studio 6.2.0でAmazonS3に関連するコンポーネントは以下のものがあります。
コンポーネント名を見ればどういった機能かといったことも分かります。

コンポーネント名 機能
tS3BucketCreate S3のバケットを作成
tS3BucketDelete S3のバケットを削除
tS3BucketExist S3バケットの存在チェック
tS3BucketList S3のバケット一覧リスト化
tS3Close S3への接続を閉じる
tS3Connection S3へ接続する
tS3Copy S3のファイルをコピーする
tS3Delete S3のファイルを削除
tS3Get S3からファイルを取得
tS3List S3のファイル一覧リスト化
tS3Put S3にファイルをアップロード

使ってみましょう

大体同じような感じで使えるので、悩むことはほとんどないかと思います。
全てのコンポーネントに共通することとして、AWSのアクセスキー・シークレットアクセスキーをセットする必要があります(tS3Connectionを使うのであれば、既存の接続を使いまわすことで省略できます)。
※また、バージョン6.2.0からAmazon EC2上で実行するのであれば設定する必要がなくなったようです。詳しくはコチラの記事をご覧ください。

tS3BucketCreateとtS3BucketDelete

コンポーネントにAWSのアクセスキーとシークレットアクセスキー、作成したい/削除したいバケット名を設定します。
ジョブを実行すれば、S3にバケットが作成/削除されます。

devio_yura_2016072101

tS3BucketExist

このコンポーネントに設定することはtS3BucketCreate、tS3BucketDeleteと一緒ではあります。
入力したバケット名が存在する場合はtrue、存在しない場合はfalseがglobalMapにセットされます。
処理結果を取得するためのコードは以下のような形になります。

(Boolean)globalMap.get("tS3BucketExist_1_BUCKET_EXIST");

tS3ConnectionとtS3Close

tS3Connectionで一旦S3に接続した後は、他のコンポーネントでもコネクションを使用できます。
使い方としては、コネクションを使用したいコンポーネントの『既存の接続を使用』チェックボックスにチェックを入れます。
用済みになったコネクションはtS3Closeでクローズします。

devio_yura_2016072102
devio_yura_2016072103

tS3BucketList

S3に存在するバケット名の一覧をリスト化します。
他のコンポーネントにはIterateでつないで使用します。
devio_yura_2016072104
バケット名を取得するためのコードは以下のような形になります。

(String)globalMap.get("tS3BucketList_1_CURRENT_BUCKET_NAME")

tS3Copy

tS3Copyコンポーネントは、ファイルのコピーができます。
コピー元/コピー先のバケット名とファイルのキー名を指定します。
devio_yura_2016072105

tS3Delete

S3からファイルを削除します。
このコンポーネントはバケット名とキー名をセットするのみです。

tS3GetとtS3Put

tS3GetはS3からファイルを取得して、保存します。
バケット名、キー名、ジョブ実行環境への保存先のパスを指定します。
tS3Putは逆にS3にファイルをアップロードします。
S3のアップロード先のバケット、キー名、アップロード対象ファイルのパスを指定します。

tS3List

tS3BucketListと同じようにS3に保存されているファイル名をリスト化します。
『全てのバケットオブジェクトを表示』チェックボックスのチェックを外して、バケットを絞るのがいいかと思います。
キープレフィックスを指定すればリスト化される対象となるファイル名をさらに絞れます。
devio_yura_2016072106
ファイルのキー名を取得するコードは以下のような形になります。

(String)globalMap.get("tS3List_1_CURRENT_KEY")

おわりに

以上となります。
簡単ですが、これだけでTalendからAmazonS3のオブジェクトへの操作は大体できると思います。