Help us understand the problem. What is going on with this article?

Amazon Pinpointのここがツラい[AWS]

AWS Pinpointを前職で使い倒したのでその経験を書く。規模としては1PUSHにつき100万-1000万デバイスがターゲット。
世界で1番ユーザーデバッグしたと思う。


AWSの公式漫画で紹介されていたのでむしゃくしゃしてかいた。
https://aws.amazon.com/jp/campaigns/manga/vol5-2/

2017/12-2018/10ぐらいまでの話なので今はもっと良くなっているかも?

ドキュメントにないステータスが返されるのは基本

例えば、CampaignActivityのstatusはこう書いてあるが

The state of the activity. Valid values: PENDING, INITIALIZING, RUNNING, PAUSED, CANCELLED, COMPLETED

https://docs.aws.amazon.com/pinpoint/latest/apireference/rest-api-campaign-activities.html

実際はSKIPPEDやFAILEDなども来る。
たちの悪いことにFAILEDのまま放置するといつのまにかCOMPLETEDに変わっていたりする。
(実際は失敗している)

そもそも各ステータスがどういう時に返されるのか、どこにも書いていない
Campaignに限った話ではなく、Jobなどでも発生する。

デバイス毎の配信ステータスはAPIで取れない

  1. API ドキュメントに「EndoointのEndpointStatusにデバイス毎の配信ステータスが入る」と書いてあったのでそれを元に設計
  2. 作成してテストしてみたところ、不正なEndpointを登録して配信しても常に「Success」しか返ってこない
  3. AWSサポートに問い合わせしたところ、1ヶ月後に「このパラメータは使えないのでドキュメントを更新した」という返信がくる
  4. ドキュメントの説明が「Not used.」になった image.png

https://docs.aws.amazon.com/pinpoint/latest/apireference/rest-api-endpoint.html

結果、前提が崩れたのでアーキテクチャ設計からやり直しに。
一応kinesisからfirehoseでS3にログを吐いてそのログをGCMとAPNSでレコード毎に分析すればステータスが取れることは判明したが、、

ドキュメントから必須項目がわからない&勝手に必須項目が変わる

つらい。変えるときはせめてアナウンスして。βじゃないんだから。

Campaign.Limits.MaximumDurationを設定しないと配信が60分で打ち切られる

  1. 60分超えの配信を行うと配信失敗数が増える事象を検知
  2. 問い合わせしたところ数週間後にキャンペーン最大実行時間が3600秒で打ち切りになるデフォルト値が設定されているとの回答あり。
  3. コンソールのSettingに「キャンペーン最大実行時間」という項目があり、有効にするチェックボックスがアクティブでなくとも全体にデフォルト値が設定されるらしい。

(これに関してはコンソール側の設定にその項目があることを認識してなかった、CampaignのMaximumDurationを設定しない≒無制限だと思っていた自分も悪いが、、)

iOSの証明書を更新しても切り替わらない

コンソールのSettingから証明書を更新しても切り替わらないことがある。
一度iOSのチェックを外して保存して再度登録するとうまくいく。

設定の組み合わせで配信の失敗確率が上がる

IsLocalTimeと何か(忘れた)を組み合わせると失敗しやすくなる等々。とりあえずIsLocalTimeは使うな。

配信数がマイナスになる

バグ

配信ステータスが一週間以上配信中のまま

バグ

同じ端末に二重送信される

バグ

CSVの取り込み件数が一致しない

バグ

月数回ペースで配信が失敗する

kinesis経由でS3にログを出す設定は絶対に入れること
これがないとサポートに問い合わせてもほとんど原因不明で返ってくる。

その他

思い出したら書く。

undoroid
Android/iOSの開発をメインにサーバサイド・インフラまで
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした