AP-South-1 (ムンバイ) リージョンでホストされている AWS Lambda 関数から OTP を送信しようとしています。これには、SNS の全世界へのテキスト メッセージ機能を使用しています。"AP-South-1" リージョンは全世界のテキスト メッセージ機能をサポートしていないため、SNSClient のリージョン エンドポイントを "APNortheast1" (つまり、東京) リージョンとして送信します。これは、全世界のテキスト メッセージをサポートするためです。
これで、ラムダ関数の管理者特権が付与されました (管理者ポリシーでロールをアタッチすることにより)。しかし、それでも機能していないようです (メッセージが携帯電話に配信されません)。関数の実行中に例外は発生せず、その SMS の「TransactionID」も取得しています。SNS コンソールで、SMS が失敗として表示されます。そのため、cloudwatch ログを有効にしました。私が取得しているログは以下のとおりです-
{
"notification": {
"messageId": "8cba93de-b794-577d-99be-c1ba5d5d21dd",
"timestamp": "2017-10-21 06:26:17.946"
},
"delivery": {
"destination": "+91XXXXXXXXXX",
"smsType": "Transactional",
"providerResponse": "Internal error",
"dwellTimeMs": 79
},
"status": "FAILURE"
}
皮肉なことに、これは実際には、別のアカウントから (手動で) リソースを移行している新しいアカウントです。この古いアカウントでは、まったく同じ設定を使用していますが、メッセージが携帯電話に適切に配信されているようです。参考までに、私の Lambda 関数は .net コアで記述されており、SMS をインドの携帯電話番号に配信しようとしています。