クラウドストレージへのファイルアップロード&ETLツール『Data Uploader』の入力にAmazon S3環境のファイルを指定する #データ統合基盤 #CSアナリティクス

2020.12.04

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

当エントリは『クラスメソッド CSアナリティクス Advent Calendar 2020』4日目のエントリです。

当エントリでは、クラスメソッドが展開しているデータ統合基盤サービス『CSアナリティクス』(以降"CSA")のプロダクト群の1つ、『Data Uploader』の入力に、任意のAmazon S3環境下のテキストファイルを指定する手順について紹介します。

目次

 

AWS CLI設定

Amazon S3を入力(及び出力)で指定・利用する場合、必要な認証情報を使うためにAWS CLI設定を行う必要があります。方法としては通常一般的にAWS CLIを用いる際の手順に準ずる形となりますが、現在対応している方法は以下の2つとなります。

 

aws cli configureコマンドによる認証情報設定を用いる

設定方法1つ目はaws cli configureコマンドを実行することでAWS CLIの利用設定を行う方法。AWS CLIを対象OS環境にインストールした上で、任意のプロファイル名(ここではcsaとしています)で認証情報を設定してください。

$ aws configure --profile csa
AWS Access Key ID [None]: AKIAXXXXXXXXXXXXXXXX
AWS Secret Access Key [None]: C5aZXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Default region name [None]: ap-northeast-1
Default output format [None]: json

なお、CSA Data UploaderでAmazon S3連携を行う際に必要な権限は以下の通りです。

  • 対象のAmazon S3バケットに対するPut権限
  • 対象のAmazon S3バケットに対するList権限

権限設定(IAM Policy)で必要な最低限の設定内容は以下の通りです。target-bucketの部分は対象のAmazon S3バケットの名称に置き換えてください。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket"
            ],
            "Resource": "arn:aws:s3:::target-bucket"
        },
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject"
            ],
            "Resource": "arn:aws:s3:::target-bucket/*"
        }
    ]
}

[設定]メニューより[接続設定]→[Amazon S3]を選択。

Amazom S3接続設定画面に遷移します。[追加]ボタンを押下。

接続に必要な情報を設定します。「S3接続情報名」には任意の識別文字列を、「AWSプロファイル名」には上記aws cli configureコマンドで設定した際のプロファイル名を入力し、[保存]を押下。

Amazon S3設定が作成出来ました。

 

インスタンス付与のIAM Role設定を用いる

対象OSがLinux且つAmazon Linuxで環境を用意している場合は、インスタンスに付与したIAM Roleの権限を用いて設定や実行を行うことが可能です。以下の手順で対応する流れとなります。

まずは前述「CSA Data UploaderでAmazon S3連携を行う際に必要な権限」の権限を有する形でIAM Roleの設定・インスタンスへのIAM Roleの付与を行っておいてください。

AWS CLIのaws configureコマンドによる認証情報の入力は不要ですが、AWS CLIとData Uploaderを連携させるための設定は必要となります。AWS CLIをインストールした上で、configファイルへの設定情報追記を行ってください。下記設定を対象ファイル内に追記します。

  • Windows版OSの場合、%UserProfile%/.aws/config ファイルに以下の設定を追加してください。
  • Linux版OSの場合、/root/.aws/config ファイルに以下の設定を追加してください。
[profile default]
output = json
region = ap-northeast-1

Data UploaderのAmazon S3接続設定を作成します。

  • S3接続情報名:任意の文字列
  • AWSプロファイル名:default

設定が作成出来ました。後述の手順でこの設定値を選択してください。

 

CSA Data Uploader入力:Amazon S3環境の作成

Data Uploaderのジョブ一覧画面にて、[ジョブを作成]を押下、任意のジョブ名で[データアップロード]ジョブを作成します。(ファイルの変換処理が要らない場合はファイルアップロードジョブでもOKです)

入力要素を作成。入力種別には[Amazon S3]を指定します。

[Amazon S3接続名]には、前述手順で作成したAmazon S3接続を指定。

以降、必要な情報を設定していきます。[バケット名]及び[ファイル/フォルダパス]については、データを格納しているS3パスを指定してください。(バケット名の接続テストも実施可能です) 項目指定の過程で"入力パスイメージ"もリアルタイムで確認出来ます。

文字コード〜ファイルヘッダーに関してはローカルテキストファイル接続時のものと同様です。

一通りの設定が完了したら[読み込みテスト]でアクセス出来ることを確認し、[保存]を押下。

入力設定保存後、[データ表示]リンクをクリックでデータのプレビュー表示が出来ることを確認出来ました。

 

変数を使った入力ファイル指定

上記設定は任意の個別フォルダ配下にあるファイルを指定する形としていましたが、通常業務などでは「日次でファイルを取り込む」ということも良くあるケースかと思います。そういったケースに対応する形でCSA Data Uploaderでは「変数」を利用することも出来るよう担っています。

例えば、以下のような形でS3バケット配下に日付形式(YYYY/MM/DD)でフォルダが構成・ファイルが配備されていた場合の対応を考えてみます。日次でファイルが来たと想定し、その日のうちに当日フォルダの内容を取り込む!みたいな感じです。

Data Uploaderの入力:Amazon S3設定画面にて、組み込み変数表示のリンクを押下。以下のような形でサンプル一覧が表示されるので、該当する(利用したい)サンプルの行にある[操作]アイコンをクリック。これで変数が利用可能な形でクリップボードにコピーされます。

得られた内容を活用し、以下の様に設定してみました。ワイルドカード書式と組み合わせ、『所定のテーブル想定フォルダ(sample-data/配下にスラッシュ区切りでの日付形式(YYYY/MM/DD)でフォルダが切られ、日付フォルダ配下のtsvファイル(*.tsv)を対象とする』形としています。

 

まとめ

という訳で、『クラスメソッド CSアナリティクス Advent Calendar 2020』4本目のエントリ、『Data Uploader』の入力に任意のAmazon S3環境のファイルを指定する手順の紹介でした。CSA Data Uploaderは1ヶ月間のトライアル利用が可能となっています。興味をお持ち頂いた方は是非無料版ダウンロードページからインストーラを入手頂き、お試し頂けますと幸いです。

では、明日(5日目)のエントリもお楽しみに!