Amazon Simple Notification Service
開発者ガイド

SMS メッセージプリファレンスの設定

Amazon SNS を使用して、配信の最適化の方法 (コストに対してか、確実な配信に対してか)、毎月の使用量の上限、メッセージ配信がログに記録される方法、SMS の毎日の使用状況レポートをサブスクライブするかどうかなど、SMS メッセージのプリファレンスを指定します。

これらの設定は、アカウントから送信するすべての SMS メッセージに対して有効になりますが、個々のメッセージの送信時に上書きすることができます。詳細については、「SMS メッセージの送信」を参照してください。

プリファレンスの設定 (コンソール)

  1. AWS マネジメントコンソールにサインインした後、Amazon SNS コンソール (https://console.aws.amazon.com/sns/v2/home) を開きます。

  2. コンソールメニューで、SMS メッセージングをサポートしているリージョンにリージョンセレクタを設定します。

  3. ナビゲーションパネルで、[テキストメッセージング (SMS)] を選択します。

  4. [テキストメッセージング (SMS)] ページで、[テキストメッセージングの設定管理] を選択します。

  5. [テキストメッセージングの設定] ページの [デフォルトのメッセージタイプ] で、通常に送信する SMS メッセージのタイプを選択します。

    • [プロモーション] (デフォルト) – マーケティングメッセージなどの重要度が低いメッセージ。Amazon SNS は、コストを最も低く抑えるようにメッセージの配信を最適化します。

    • [トランザクション] – 顧客のトランザクションをサポートする重要なメッセージ (たとえば、多要素認証のためのワンタイムパスコードなど)。Amazon SNS によってメッセージの配信が最適化され、最高の信頼性が実現されます。

    メッセージを送信するとき、この設定をオーバーライドできます。

    プロモーションおよびトランザクションメッセージの料金表の詳細については、「グローバル SMS 料金表」を参照してください。

  6. [アカウントの使用料制限] に、各暦月での SMS メッセージに使用する上限額 (USD) を入力します。Amazon SNS が、SMS メッセージを送信するとその月の使用限度を超えるコストが発生すると判断した場合、Amazon SNS は、数分以内に SMS メッセージの発行を停止します。

    重要

    Amazon SNS は分散システムであるため、使用制限を超えると数分以内に SMS メッセージの送信を停止します。その間に、SMS メッセージを送信し続ければ制限を超えるコストが発生する可能性があります。

    デフォルトでは、使用制限は 1.00 USD に設定されます。制限を引き上げる場合は、SNS テキストメッセージングのケースを AWS サポート に送信します。[新しい制限値] に、必要な月ごとの使用制限を入力します。[Use Case Description] フィールドで、月ごとの SMS 使用制限の引き上げをリクエストしていることを説明します。通常、AWS サポートでは 2 営業日以内にケースが処理されます。AWS サポート では、リクエストする使用制限およびケースの複雑さに応じて、リクエストを確実に処理するために、さらに 3~5 日必要になることがあります。

  7. [CloudWatch Logs アクセスの IAM ロール] で、Amazon SNS が CloudWatch Logs で SMS 配信をログに記録することを許可するための IAM ロールを作成します。

    1. [Create IAM role] を選択します。

    2. [SNS is requesting permission to use resources in your account] ページで [Allow] を選択します。

  8. [サンプルの成功率のデフォルト] で、Amazon SNS が CloudWatch Logs でログに記録する正常な SMS 配信の割合を指定します。たとえば、失敗した配信にのみログを書き込むには、この値を 0 に設定します。正常な配信の 10% に対してログを書き込むには、10 に設定します。割合を指定しないなら、Amazon SNS は、すべての正常配信に対してログを書き込みます。

  9. [デフォルトの送信者 ID] に、少なくとも 1 つの文字を含み、スペースは含まない、11 文字以内の英数字のカスタム ID を入力します。送信者 ID は、受信デバイスにメッセージ送信者として表示されます。たとえば、メッセージ ソースを識別しやすいように、ビジネスブランドを使用できます。

    送信者 ID のサポートについては、国またはリージョンによって異なります。たとえば、米国の電話番号へ配信されるメッセージは、送信者 ID を表示しません。送信者 ID をサポートする国およびリージョンについては、「サポートされているリージョンおよび国」を参照してください。

    送信者 ID を指定しない場合、サポートされている国およびリージョンでは、メッセージは送信者 ID として長いコードを表示します。アルファベットの送信者 ID を必要とする国およびリージョンでは、メッセージは送信者 ID として NOTICE を表示します。

    メッセージを送信するときに、この設定をオーバーライドできます。

  10. [レポートストレージ] で、Amazon SNS から SMS の毎日の使用状況レポートを受け取る Amazon S3 バケットの名前を入力します。Amazon SNS では、受け取る Amazon S3 バケットを指定した場合にのみ、毎日の使用状況レポートが作成されます。詳細については、「SMS の毎日の使用状況レポートの表示」を参照してください。

  11. [Update preferences] を選択します。

プリファレンスの設定 (AWS SDK)

AWS SDK のいずれかを使用して SMS プリファレンスを設定するには、Amazon SNS API の SetSMSAttributes リクエストに対応する、SDK のアクションを使用します。このリクエストによって、月ごとの使用制限およびデフォルトの SMS 型 (プロモーションまたはトランザクション) などの、異なる SMS の属性に値を割り当てます。すべての SMS 属性については、『Amazon Simple Notification Service API Reference』の「SetSMSAttributes」を参照してください。

以下の例では、AWS SDK で提供されている Amazon SNS クライアントを使用して SMS 設定を定義する方法について説明します。

AWS SDK for JavaAWS SDK for .NET
AWS SDK for Java

以下の例では、AWS SDK for Java の AmazonSNSClient クラスの setSMSAttributes メソッドを使用します。この例では、異なる属性名の値を設定します。

public static void main(String[] args) { AmazonSNSClient snsClient = new AmazonSNSClient(); setDefaultSmsAttributes(snsClient); } public static void setDefaultSmsAttributes(AmazonSNSClient snsClient) { SetSMSAttributesRequest setRequest = new SetSMSAttributesRequest() .addAttributesEntry("DefaultSenderID", "mySenderID") .addAttributesEntry("MonthlySpendLimit", "1") .addAttributesEntry("DeliveryStatusIAMRole", "arn:aws:iam::123456789012:role/mySnsRole") .addAttributesEntry("DeliveryStatusSuccessSamplingRate", "10") .addAttributesEntry("DefaultSMSType", "Transactional") .addAttributesEntry("UsageReportS3Bucket", "sns-sms-daily-usage"); snsClient.setSMSAttributes(setRequest); Map<String, String> myAttributes = snsClient.getSMSAttributes(new GetSMSAttributesRequest()) .getAttributes(); System.out.println("My SMS attributes:"); for (String key : myAttributes.keySet()) { System.out.println(key + " = " + myAttributes.get(key)); } }

この例では、MonthlySpendLimit 属性の値を 1.00 USD に設定します。デフォルトでは、これは Amazon SNS で許可される最大額です。制限を引き上げる場合は、SNS テキストメッセージングのケースを AWS サポート に送信します。[新しい制限値] に、必要な月ごとの使用制限を入力します。[Use Case Description] フィールドで、月ごとの SMS 使用制限の引き上げをリクエストしていることを説明します。通常、AWS サポートでは 2 営業日以内にケースが処理されます。AWS サポート では、リクエストする使用制限およびケースの複雑さに応じて、リクエストを確実に処理するために、さらに 3~5 日必要になることがあります。

属性が正しく設定されたことを確認するために、この例では、getSMSAttributes メソッドの結果を表示します。この例を実行すると、IDE のコンソール出力ウィンドウに属性が表示されます。

My SMS attributes: DeliveryStatusSuccessSamplingRate = 10 UsageReportS3Bucket = sns-sms-daily-usage DefaultSMSType = Transactional DeliveryStatusIAMRole = arn:aws:iam::123456789012:role/mySnsRole MonthlySpendLimit = 1 DefaultSenderID = mySenderID
AWS SDK for .NET

以下の例では、AWS SDK for .NET の AmazonSimpleNotificationServiceClient クラスの SetSMSAttributes メソッドを使用します。この例では、異なる属性名の値を設定します。

static void Main(string[] args) { AmazonSimpleNotificationServiceClient snsClient = new AmazonSimpleNotificationServiceClient(Amazon.RegionEndpoint.USWest2); SetDefaultSmsAttributes(snsClient); } public static void SetDefaultSmsAttributes(AmazonSimpleNotificationServiceClient snsClient) { SetSMSAttributesRequest setRequest = new SetSMSAttributesRequest(); setRequest.Attributes["DefaultSenderID"] = "mySenderID"; setRequest.Attributes["MonthlySpendLimit"] = "1"; setRequest.Attributes["DeliveryStatusIAMRole"] = "arn:aws:iam::123456789012:role/mySnsRole"; setRequest.Attributes["DeliveryStatusSuccessSamplingRate"] = "10"; setRequest.Attributes["DefaultSMSType"] = "Transactional"; setRequest.Attributes["UsageReportS3Bucket"] = "sns-sms-daily-usage"; SetSMSAttributesResponse setResponse = snsClient.SetSMSAttributes(setRequest); GetSMSAttributesRequest getRequest = new GetSMSAttributesRequest(); GetSMSAttributesResponse getResponse = snsClient.GetSMSAttributes(getRequest); Console.WriteLine("My SMS attributes:"); foreach (var item in getResponse.Attributes) { Console.WriteLine(item.Key + " = " + item.Value); } }

この例では、MonthlySpendLimit 属性の値を 1.00 USD に設定します。デフォルトでは、これは Amazon SNS で許可される最大額です。制限を引き上げる場合は、SNS テキストメッセージングのケースを AWS サポート に送信します。[新しい制限値] に、必要な月ごとの使用制限を入力します。[Use Case Description] フィールドで、月ごとの SMS 使用制限の引き上げをリクエストしていることを説明します。通常、AWS サポートでは 2 営業日以内にケースが処理されます。AWS サポート では、リクエストする使用制限およびケースの複雑さに応じて、リクエストを確実に処理するために、さらに 3~5 日必要になることがあります。

属性が正しく設定されたことを確認するために、この例では、GetSMSAttributes メソッドの結果を表示します。この例を実行すると、IDE のコンソール出力ウィンドウに属性が表示されます。

My SMS attributes: DeliveryStatusSuccessSamplingRate = 10 UsageReportS3Bucket = sns-sms-daily-usage DefaultSMSType = Transactional DeliveryStatusIAMRole = arn:aws:iam::123456789012:role/mySnsRole MonthlySpendLimit = 1 DefaultSenderID = mySenderID