技術AWSPinpointRubyお久しぶりです。ルームクリップ株式会社でエンジニアをしています、仲本です。当社は、2018-05-02をもちまして、ルームクリップ株式会社になりました。今後ともなにとぞよろしくお願いいたします。今回は、RubyのSDKでPinpointを使ったので、ポストしたいと思います。(ここ最近社内でWEBアプリケーションの言語はRubyで統一しようという流れになっているのもあり)やることPUSH通知対象のJSONを作成S3にJSONをアップロードセグメントを作成キャンペーンを作成PUSH送信PUSH通知対象のJSONを作成Pinpointでは、セグメントに登録するエンドポイント(device_tokenとかの事ですね)をJSON形式でS3にアップロードしておいて、それをセグメント作成時に読み込ませる事が出来ます。サンプルとして次のようなJSONを作成します。id(Android)を入力してください。test.json{"ChannelType":"APNS","Address":"xxxxxxxxxxx","Demographic":{"Platform":"iOS","Make":"Apple"},"Attributes":{"userName":["taro"]}}{"ChannelType":"GCM","Address":"xxxxxxxxxxx","Demographic":{"Platform":"Android","Make":"Google"},"Attributes":{"userName":["jiro"]}}S3にJSONをアップロードEndpointを固めたJSONをS3にアップロードする処理を追加していきます。'YOUR_SECRET_KEY'))create_import_jobでセグメント作成リクエストcreate_import_jobをすると、AWSコンソールのセグメント一覧にYOUR_SEGMENT_NAMEとして作ったものが出てきます。今回のサンプルは小さいのですぐにインポートが完了します。})パラメータapplication_idPinpointのProjects一覧にIDが記載されていますdefine_segmenttrueにしてセグメント取り込みで新規作成しますformatJSONとCSVが選べます。register_endpoints取り込みと同時にエンドポイントを保存する場合はTRUErole_arnS3に読み書き出来るARNを指定s3_url先程アップロードしたS3エンドポイントです。s3://YOUR_BUCKET_NAME/pinpoint/test.jsonsegment_nameセグメントに付ける名前キャンペーンを作成セグメントが完成したら、セグメントIDを使ってキャンペーンを作成します。})パラメータholdout_percentPUSHを送信しない確率is_paused停止状態でTRUElimitsdaily1日に送信出来る件数maximum_durationキャンペーン終了後に送信出来るようになる時間(秒)messages_per_second秒間送信数total最大送信数message_configurationPUSH通知の内容を定義。APNS、GCMなど細かく分ける事が出来ますが、今回は最低限。{{Attributes.userName}}はテンプレート変数で、最初に作ったJSONに指定した、メッセージ毎のパラメータ。schedulefrequency1ショットなのか、どういう頻度で繰り返すのかis_local_time時刻のローカライズを行うかstart_time送信開始日時(iso8601)今回は1分後に設定timezoneタイムゾーンsegment_id先程作成したセグメントIDsegment_versionセグメントに付けられるバージョン。抽出軸は同じだが抽出するタイミングで変わる類のものの時に使えそう。各々のスタイルでPUSHを待つ。APIの仕様書をよく使いました。create_import_jobが完了するまで時間がかかる場合があるため、キャンペーン作成前にwaitした方が良さそうです。ありがとうございました。社内SE・サーバーサイド・インフラ周りを中心に担当。味のあるオッサンを目指して頑張っている。夜は酒場に居る事が多い。