How to make datas our friends

「エンジニアは発信していくことが責務である」という言葉に感化されて始めた勉強したことを書き留めていく備忘録的なやつ。

AdjustのローデータをS3に毎時自動でアップロードする方法

概要

アプリの広告計測ツールである Adjust にはローデータを毎時S3に自動で転送する機能があるのですが、ドキュメントがまぁとっつきにくい、そしてサポートが塩対応なので解決の手助けを一切してくれない、結果設定にぼちぼち時間を使ってしまったので、これから設定する人が僕と同じ過ちを侵さないために設定方法を備忘録としてまとめました。

ちなみに、ローデータエクスポートの設定方法はこちらにまとまっています。 docs.adjust.com

尚、本記事ではAWSの設定が英語になっているので、英語ベースでAWS設定方法を記載しています(堪忍)。
では、さっそく設定していきましょう。

S3のバケットを作成する

AWSのアカウントがない人は以下を参考にアカウントを用意してください。

aws.amazon.com

さっそくローデータをアップロードするS3のバケットを作成をしていきましょう。

ちなみにS3は、従量課金制なので本設定によって発生する料金は各自の責任でお願いします。とはいえ、あんまり激しい使い方をしない限り心配するような額にはならないと思います。

まずはAWSにログインし、サービス検索にS3といれるか、ストレージのS3を選択しS3に移動します。

f:id:minion024:20180310030814p:plain

S3に移動したら Create Bucket を押下しバケットの作成を行っていきます。

設定モーダルが表示されたら、必要な情報を記載していましょう。
今回の例では、 Bucket nameadjust-test に、RegionAsian Pacific (Tokyo) に設定し、Copy settings from an existing bucket は特に設定しないで Next ボタンを押下。

続いて、 Set propertiesSet permissions 画面が表示されるので、それぞれ今回は特に何も設定せずに Next ボタンを押下。

ここまで設定すると、 Review 画面が表示されるので、Create bucket ボタンを押下してバケットを作成します。

IAMでUserを作成する

続いてAdjustがS3にアクセスするためのKEY情報を作成するために、IAMでUserを作成します。

S3同様、AWSダッシュボードにてサービス検索にIAMといれるか、ストレージのIAMを選択しIAMに移動します。

IAMに移動したら、メニュー内の Users を選択し、Add user ボタンを押下してください。

Userの作成画面に移動するので、User name に任意の名前を(今回の例では Adjust にしています)、Access type Programmatic access にチェックをし、Next permissions を押下。

f:id:minion024:20180502223744p:plain

続いてPermissionの設定画面が表示されるので、AdjustがS3にデータを転送するために必要な権限を付与します。

Attach existing policies directly を選択し、Create policy ボタンを押下しPolicyの作成を行います。

f:id:minion024:20180502224408p:plain

Policyの作成画面が別タブで開かれるので、JSON でPolicyを直接編集します。

f:id:minion024:20180502224652p:plain

Adjustの設定ドキュメントに記載されている、AdjustがS3にアクセスするためのPermission情報をもとにJSONを作成します。

今回は先程作成したS3バケットadjust-test を使用するので、以下のように入力します。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetBucketLocation",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::adjust-test"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::adjust-test/*"
            ]
        }
    ]
}

それぞれ設定した内容が気になる人は以下のドキュメントを参照してみてください。

docs.aws.amazon.com
入力が完了したら、Review に進みます。Name を入力しPolicyの作成を行いましょう。今回の例では adjust-policy という名前を付けます。

Policyが完成したので、Userの作成画面に戻り Refresh ボタンを押下しPolicyを最新にします。

更新を行ったので先程作成したPolicyが反映されているはずです、Policyの検索窓に作成したPolicy名を入力すると表示されるのでチェックを入れ Review に進み Create Userを押します。

ここまでの作業でUserの作成が完了しました、Access key IDSecret access key が吐き出されるので、コピーもしくはCSVをダウンロードし大切に補完しましょう。このKEY情報はAdjust側での設定時に必要になります。

Adjsutダッシュボードで転送設定をおこなう

S3のバケット作成と、アクセスするためのUserを作成したので今度はAdjust側のダッシュボードにログインし転送の設定を行います。

まずは設定したいアプリの設定ボタンを押下。

f:id:minion024:20180502231708p:plain:w300

ナビゲーションが表示されるので ローデータエクスポート を選択。

f:id:minion024:20180502231954p:plain:w300

CSVアップロード を選択。

f:id:minion024:20180502231915p:plain

転送の設定画面が表示されるので、各項目を埋めていきましょう。

まず。転送設定を有効にするため一番上部に表示されているスライダーを Enabled] に設定します。

続いて キーSECRET に先程AWSで作成したUserのキー情報を入力し、バケットは一番最初に作成したバケット名を入れます。

エクスポートするイベントを選択してください と表示されている部分を押して必要な項目を選択してください。ちなみにデフォルトだと何も選択されていないので、ここの設定を飛ばすとAWS側の設定が完了していてもデータは転送されないので注意です。

最後の作業です、CSVの定義 にエクスポートするCSVの構成情報を記載します。

CSVの定義はこちらを参照して下さい。

adjust placeholder list

書き方が不明な場合、以下僕が作った定義を真似して編集してみてください。

{app_name},{app_name_dashboard},{store},{network_name},{campaign_name},{adgroup_name},{creative_name},{click_referer},{click_time},{activity_kind},{adid},{idfa},{android_id},{user_agent},{ip_address},{region},{country},{language},{device_name},{timezone},{event_name},{installed_at},{created_at}

定義の入力が完了したら、SAVE ボタンを押下し設定を保存します。以上で全ての設定が完了しました。
一時間おきにデータがS3のバケットにPUTされるはずなので、タイミングを見てデータが転送されているか確認をおこなってください。