インドカレーファンクラブ

パソコン、カメラ

AWS SNSでSMS送信できない問題の解決2021(割当上限増加リクエストのあれこれ)

概要

CognitoとMFAするためにSMSを送信する必要がある

その際にはAWS SNSを利用することになるんだけど、そこに癖がある

SMSの送信は$1分(月100件?)無料らしい
が、その記述も正直怪しい(後述)

今回2環境で異なるエラーが発生し、その両方で割当上限増加の申請をすることになった

AWSのわかりにくい文章のラッパーたる俺たちのクラスメソッド社のブログを見たが正直今回に関しては物足りなかった
故に今回この記事を書いている

Amazon SNS で SMS を一定量送信後に、急に送信できなくなった時の対処法 | DevelopersIO

SMS送信エラーのパターン

まず電話番号ミスでないことを確認したほうがいい

【AWS】Amazon SNSでSMSが届かなかった時の対応 - Qiita

今回僕はそこの問題は確認した上、Cognitoで送信するどころかマネジメントコンソールで送信してエラーになるので問題はもっと根本的なところにある

Cloudwatch logsを有効化しておくことでSMS送信失敗時のログはとれるようになるのでそこを見る(方法は割愛)

今回2環境で動かしていたがエラーのパターンは2つ確認した
どちらも東京リージョンからの送信

まず1つ目の環境

{
    "notification": {
        "messageId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "timestamp": "yyyy-MM-dd HH:mm:ss.SSS"
    },
    "delivery": {
        "destination": "+8190XXXXXXXX",
        "smsType": "Promotional",
        "providerResponse": "No quota left for account",
        "dwellTimeMs": 121
    },
    "status": "FAILURE"
}

これは割当上限(デフォルト$1分)超えということでのエラー

最初はSMSを送れていたが途中から送れなくなった。その状況と合致しているので理解できるし納得できる

次に2つ目の環境

{
    "notification": {
        "messageId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "timestamp": "yyyy-MM-dd HH:mm:ss.SSS"
    },
    "delivery": {
        "destination": "+8190XXXXXXXX",
        "smsType": "Promotional",
        "providerResponse": "Your account requires additional review prior to being able to send SMS messages. Please create a support ticket with an explanation of your use case. https://console.aws.amazon.com/support/cases#/create?issueType=service-limit-increase&limitType=service-code-sns-text-messaging",
        "dwellTimeMs": 103
    },
    "status": "FAILURE"
}

こちらの環境では最初から1通も送信ができず、このエラーで謎

取り敢えず1件目のエラーも2件目のエラーも、2件目のエラーログにあるURLから割当上限増加のお願いをする

サポートとのやりとり

1件目は正直雑に送った
雑とはいえ必須な項目は全て記入したし、ユースケースも想定件数も記入した

で、返信が返ってきた

平素は Amazon Web Servicesをご利用いただき、誠にありがとうございます。

お客様の使用限度額の引き上げの申請内容を慎重に審査した結果、ユースケースに関する情報が不十分であるという判断に至りました。

ケースの審査をお受けいただくには、次の内容に関しての詳細をこのメールへ返信してください。

-- SMSを送信するサイトまたはアプリのリンクまたは名前:
-- オプトインプロセスと、リクエストした人にのみメッセージが送信されるようにする方法の詳細:
-- メッセージの受信者が所在している国のリスト :
-- 予想される1日あたりの最大メッセージ送信数 :
-- 送信予定のメッセージテンプレート:
--その他、ユースケースをより理解しやすくする為の情報:


お客様からの情報を受け取り次第、申請を審査させていただきます。24 時間以内にこちらからご連絡いたします。必要な情報をすべてご提示いただいた場合は、24 時間以内に申請を承認いたしますが、追加で情報が必要な場合は、お客様のリクエストを解決するのに通常より時間がかかる可能性がございますことをご了承ください。

(以下省略)

これは申し訳ないことをしたかもしれないと殊勝に反省し、上のテンプレートに沿って追加で書いて送信したところ、今回の割当増加要求は認められた

次に2つ目の環境

こちらでは1つ目の環境での反省を活かし、最初から全ての項目に丁寧に記入し申請した
が、最初と同じ定型文で不十分だと文句を言われた

何が不十分なのか不明確で困ったが、一旦テンプレートに沿って同じ内容の返信をしておいた

すると申請が認められた

と思いきや上限$8で申請したはずが上限$100で通っていた
ナンデェ

料金よくわからん

彼らはこういう形で料金請求してくる

Asia Pacific (Tokyo)

Amazon Simple Notification Service APN1-Requests-Tier1 $0.00
First 1,000,000 Amazon SNS API Requests per month are free 104.000 Requests $0.00
Amazon Simple Notification Service APN1-SMS-Price-ROW $0.97
Variable Pricing for Amazon SNS SMS Notifications to Rest Of World (non-US) 0.969Dollars $0.97

利用していたのはSMS送信のみ
それも104回利用したことになっているらしい

100件という数字は超えているが1,000,000Requestsという数字はなんなのか

よくわからん

大した金額じゃないので目を瞑るけども、もう少しどうにかしたほうがいい気もする

まとめ

AWS SNSの利用にはそれなりの精神的苦痛が伴う

2021年6月時点でこんな感じで大いに不満だったけど、今後改善されることを祈って星3/5です(アマゾンカスタマー)