

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Amazon SNS を使用したモバイルテキストメッセージ
<a name="sns-mobile-phone-number-as-subscriber"></a>

**重要**  
Amazon SNS SMS デベロッパーガイドが更新されました。Amazon SNS は、SMS メッセージの配信のために [AWS End User Messaging SMS](https://docs.aws.amazon.com/sms-voice/latest/userguide/what-is-service.html) と統合されています。このガイドには、Amazon SNS SMS メッセージを作成、設定、管理する方法に関する最新情報が含まれています。

Amazon SNS モバイルテキストメッセージング (SMS) は、SMS をサポートするウェブ、モバイル、ビジネスアプリケーションなど、さまざまなプラットフォームへのメッセージ配信をサポートするように設計されています。ユーザーは、トピックにサブスクライブすると、1 つまたは複数の電話番号にメッセージを送信でき、配信プロセスを簡素化できます。

Amazon SNS メッセージは によって配信されるため AWS End User Messaging SMS、信頼性の高いメッセージ送信が保証されます。Amazon SNS API では、メッセージタイプ (プロモーションまたはトランザクション）、[毎月の支出制限](sms_preferences.md#sms_preferences_console)、[オプトアウトリスト](sms_manage.md#sms_manage_optout)、[メッセージ配信の最適化](sms_preferences.md#sms_preferences_console)など、さまざまなプロパティを設定できます。

AWS End User Messaging SMS は、グローバル SMS 供給ネットワークを介して送信先電話番号へのメッセージの送信を処理します。ルーティング、配信ステータス、および地域の規制に必要なコンプライアンスを管理します。詳細なアクセス許可、電話プール、設定セット、SMS シミュレーター、国ルールなど、追加の SMS 機能にアクセスするには、「[AWS End User Messaging SMS ユーザーガイド](https://docs.aws.amazon.com/sms-voice/latest/userguide/configurations.html)」を参照してください。

![\[Amazon SNS が と統合 AWS End User Messaging SMS してモバイルテキストメッセージを確実に配信する方法の図。メッセージは、個々の受信者に直接送信することも、Amazon SNS トピックを介してグループに配布することもできます。 は、グローバルネットワーク全体でメッセージのルーティング、配信、コンプライアンス AWS End User Messaging SMS を処理し、スケーラビリティと信頼性を確保します。この設定により、メッセージの設定、使用制限の管理、配信ステータスの追跡を行って AWS SMS メッセージングを最適化することもできます。\]](http://docs.aws.amazon.com/ja_jp/sns/latest/dg/images/sns-sms-end-user-messaging.png)


次の主要機能を利用すると、スケーラブルで拡張が容易な Amazon SNS SMS メッセージを送信できます。

**[メッセージ設定のカスタマイズ](sms_preferences.md)**  
予算とユースケースに基づいて SMS 設定を設定 AWS アカウント して、 の SMS 配信をカスタマイズします。例えば、メッセージがコスト効率を優先するか、確実な配信を優先するかを選択できます。

**[支出クォータを設定する](channels-sms-awssupport-spend-threshold.md)**  
SMS 配信をカスタマイズするには、個別のメッセージ配信の支出クォータを設定するか、 AWS アカウントの毎月の支出クォータを設定します。現地の法律や規制 (米国やカナダなど) で義務付けられている場合、SMS 受信者は[オプトアウト](sms_manage.md#sms_manage_optout)できます。つまり、SMS メッセージの受信を停止することを選択できます AWS アカウント。受信者はメッセージの受信をオプトアウトした後、再度電話番号をオプトインして、メッセージの送信を再開できます (ただし制限があります)。

**[SMS メッセージをグローバルに送信する](https://docs.aws.amazon.com/sms-voice/latest/userguide/phone-numbers-sms-by-country.html)**  
Amazon SNS は、複数のリージョンで SMS メッセージングをサポートしているので、ユーザーは、240 以上の国とリージョンにメッセージを送信できます。

## Amazon SNS が SMS メッセージを配信する方法
<a name="sns-sms-pinpoint-integration"></a>

ユーザーに代わって SMS を送信するように Amazon SNS にリクエストすると、メッセージは AWS End User Messaging SMSを使用してディスパッチされます。Amazon SNS と の統合 AWS End User Messaging SMS には、次の利点があります。

**[IAM ポリシー](sns-mobile-phone-number-getting-started.md#sns-mobile-phone-number-prerequisites)**  
IAM ポリシーとリソースポリシーを活用して、他の AWS サービスやリージョン間で SMS リソースへのアクセスを制御および分散できます。

**[AWS End User Messaging SMS 設定](https://docs.aws.amazon.com/sms-voice/latest/userguide/configurations.html)**  
すべての発信元 ID 関連の設定 (作成、設定の更新、新しい発信元 IDsプロビジョニング、登録テンプレートの変更) が を使用します AWS End User Messaging SMS。

**[AWS End User Messaging SMS 請求](https://aws.amazon.com/sns/sms-pricing/)**  
ただし、すべての SMS 請求は行われます AWS End User Messaging SMS。SMS リソースを一元的に調達および管理しながら、SMS ワークロードの AWS 支出を統合することができます。

# Amazon SNS SMS の開始方法
<a name="sns-mobile-phone-number-getting-started"></a>

**重要**  
Amazon SNS SMS デベロッパーガイドが更新されました。Amazon SNS は、SMS メッセージの配信のために [AWS End User Messaging SMS](https://docs.aws.amazon.com/sms-voice/latest/userguide/what-is-service.html) と統合されています。このガイドには、Amazon SNS SMS メッセージを作成、設定、管理する方法に関する最新情報が含まれています。

このトピックでは、SMS サンドボックスを管理し、 AWS End User Messaging SMS APIs にアクセスして使用するために必要なアクセス許可を Amazon SNS に付与するように IAM およびリソースベースのポリシーを設定する方法について説明します。

## 前提条件
<a name="sns-mobile-phone-number-prerequisites"></a>

Amazon SNS は、IAM ポリシーを更新し、以下のアクションを含めて、Amazon SNS リソースへの包括的な制御と可視性を確保することをお勧めします。
+ [`AmazonSNSFullAccess`](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonSNSFullAccess)
+ [`AmazonSNSReadOnly`](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonSNSReadOnlyAccess) 

# Amazon SNS SMS サンドボックスの使用
<a name="sns-sms-sandbox"></a>

新しく作成された Amazon SNS SMS アカウントは、SMS サンドボックスに自動的に配置されます。これにより、不正行為や悪用のリスクを軽減し、AWS ユーザーと受信者の両方のセキュリティを確保します。この環境は、テストおよび開発用の安全なスペースとして機能します。SMS サンドボックスで動作している間は、すべての Amazon SNS 機能にアクセスできますが、特定の制限が適用されます。
+ SMS メッセージは、検証済みの送信先電話番号にのみ送信できます。
+ 最大 10 個の認証済みの送信先電話番号を持つことができます。
+ 送信先電話番号は、検証または最後の検証の試行から 24 時間以上経過した後に削除できるようになります。

アカウントがサンドボックスから移動されると、これらの制限は解除され、SMS メッセージを任意の受信者に送信できます。

## 最初のステップ
<a name="sns-mobile-phone-number-getting-started-steps"></a>

新しい Amazon SNS SMS アカウントは SMS サンドボックスに配置されます。次の手順を使用して、サンドボックスでの電話番号の作成と管理、発信元 ID と送信者 ID の作成、会社の登録を行います。

1. **送信先の電話番号**を SMS サンドボックスに追加します。Amazon SNS SMS サンドボックスでの電話番号の追加、管理、移行の詳細については、「[Amazon SNS SMS サンドボックスでの電話番号の追加と確認](sns-sms-sandbox-verifying-phone-numbers.md)」を参照してください。

1. SMS メッセージを送信したときに受信者のデバイスに表示される**発信元 ID** を作成します。発信元 ID に関して、使用できるさまざまなタイプの詳細などについては、[Amazon SNS SMS メッセージの送信元アイデンティティ](channels-sms-originating-identities.md) ドキュメントを参照してください。

1. 会社を**登録**します。一部の国では、会社の ID を登録して、電話番号や送信者 ID を購入したり、その国の受信者に送信されたメッセージを確認したりできるようにする必要があります。登録が必要な国については、「*AWS End User Messaging SMS ユーザーガイド*」の「[AWS End User Messaging SMS での SMS メッセージングでサポートされている国と地域](https://docs.aws.amazon.com/sms-voice/latest/userguide/phone-numbers-sms-by-country.html)」を参照してください。

1. トピックまたは携帯電話にメッセージを**送信**します。詳細については、「[Amazon SNS を使用して SMS メッセージを送信する](sms_sending-overview.md)」を参照してください。

# Amazon SNS SMS サンドボックスでの電話番号の追加と確認
<a name="sns-sms-sandbox-verifying-phone-numbers"></a>

SMS サンドボックス AWS アカウント で から SMS メッセージを送信する前に、以下のセットアップ手順を完了する必要があります。 [Amazon SNS SMS サンドボックスの使用](sns-sms-sandbox.md)これにより、アカウントの SMS メッセージングの準備ができ、送信先の電話番号が適切に検証されます。

1. **[発信元 ID](https://docs.aws.amazon.com/sms-voice/latest/userguide/phone-number-types.html)** を作成します。SMS サンドボックス内にないアカウントと同様に、一部の国や地域の受信者に SMS メッセージを送信するには、事前に発信元 ID が必要になります。

1. メッセージを送信する**送信先の電話番号**を SMS サンドボックス内に追加します。

1. **電話番号**を検証して、送信先の電話番号が SMS メッセージで使用できることを確認します。

**送信先の電話番号を追加および確認する**

1. [Amazon SNS コンソール](https://console.aws.amazon.com/sns/home)にサインインします。

1. コンソールメニューで、[[SMS メッセージングをサポートしているリージョン]](https://docs.aws.amazon.com/general/latest/gr/end-user-messaging.html) を選択します。

1. ナビゲーションペインで、[**テキストメッセージング (SMS)**] を選択します。

1. **[サンドボックスの送信先電話番号]** セクションで、**[電話番号の追加]** を選択します。

1. **[送信先の詳細]** で、次の情報を入力し、**[電話番号の追加]** を選択します。
   + 送信先の **[国コード]** と **[電話番号]**。
   + 検証メッセージを送信する **[言語]**。

1. 電話番号を追加すると、Amazon SNS は指定された送信先の電話番号に OTP を送信します。この OTP は検証に必要です。

1. OTP は、指定した**送信先の電話番号**に標準の SMS メッセージとして届きます。
   + 15 分以内に OTP を受信しない場合は、Amazon SNS コンソールで **[検証コードを再送信]** を選択します。
   + OTP は 24 時間で最大 5 回再送信できます。

1. OTP を受け取ったら、**[検証コード]** ボックスに入力し、**[電話番号を検証]** を選択します。

1. **検証ステータス**を確認します。
   + 電話番号が正常に検証されると、電話番号とその検証ステータスが **[サンドボックスの送信先電話番号]** セクションに表示されます。
   + ステータスが **[保留中]** の場合、検証は失敗しています。これは、例えば、国コードを正しく入力しなかった場合に発生する可能性があります。
   + 保留中や検証済みの電話番号を削除できるのは、前回の検証の試行から 24 時間以上経過後に限られます。

1. 他の地域で同じ送信先の電話番号を使用する場合は、使用する地域ごとに上記の手順**を繰り返します**。

## OTP テキストの非受信のトラブルシューティング
<a name="sns-sms-sandbox-troubleshooting-phone-numbers"></a>

電話番号での OTP テキストの受信を妨げる可能性がある一般的な問題をトラブルシューティングします。
+ **Amazon SNS SMS 支出制限:** AWS アカウント で SMS メッセージ送信の支出制限を超えた場合、メッセージ (OTP テキストを含む) は、制限が引き上げられるか、請求の問題が解決されるまで配信されない可能性があります。
+ **電話番号が SMS 通知にオプトインされていない:** 一部の国や地域では、受信者はオプトインを行って、ショートコード (OTP テキストに通常使用されます) から SMS メッセージを受信できるようにする必要があります。受信者の電話番号がオプトインされていない場合、OTP テキストは受信されません。
+ **通信事業者の制限またはフィルタリング:** 一部のモバイル通信事業者には、特定のタイプの SMS メッセージ (OTP テキストを含む) の配信を妨げる制限またはフィルタリングメカニズムがある場合があります。これは、通信事業者によって実装されたセキュリティポリシーまたはスパム対策が原因である可能性があります。
+ **無効または不正な電話番号:** 受信者が提供した電話番号が不正確または無効な場合、OTP テキストは配信されません。
+ **ネットワークの問題:** 一時的なネットワークの問題や障害により、SMS メッセージ (OTP テキストを含む) が受信者の電話に配信されない可能性があります。
+ **配信の遅延:** 場合によっては、ネットワークの輻輳やその他の要因により、SMS メッセージの配信が遅延することがあります。OTP テキストは最終的には配信される可能性がありますが、想定以上に遅延する場合があります。
+ **アカウントの停止または終了:** 不払いや AWS 利用規約違反など AWS アカウント、 に問題がある場合、OTP テキストを含む Amazon SNS メッセージング機能は停止または終了される可能性があります。

# Amazon SNS SMS サンドボックスで電話番号を削除する
<a name="sns-sms-sandbox-deleting-phone-numbers"></a>

[SMS サンドボックス](sns-sms-sandbox.md)で、検証待ちまたは検証済みの送信先電話番号を削除できます。

**重要**  
[電話番号の検証](sns-sms-sandbox-verifying-phone-numbers.md)を行ってから 24 時間後、または最後の検証の試行の 24 時間後に、電話番号を削除できます。

**SMS サンドボックスから送信先の電話番号を削除するには**

1. [Amazon SNS コンソール](https://console.aws.amazon.com/sns/home)にサインインします。

1. コンソールメニューで、送信先電話番号を追加した、[[SMS メッセージングをサポートしているリージョン]](https://docs.aws.amazon.com/general/latest/gr/end-user-messaging.html)を選択します。

1. ナビゲーションペインで、**[テキストメッセージング (SMS)]** を選択します。

1. **モバイルテキストメッセージ (SMS)** ページで、**サンドボックスの送信先電話番号**セクションに移動します。

1. 削除する特定の電話番号を選択し、**[電話番号の削除]** を選択します。

1. 送信先電話番号の削除を確定するには、「**delete me**」と入力し、[**削除**] を選択します。

   送信先電話番号の検証または検証の試行から 24 時間以上経過していることを確認してから、削除を進めます。

1. 追加したけれどもう使わない送信先電話番号を追加したリージョンごとに、上記のステップを繰り返します。

# Amazon SNS SMS サンドボックス外への移動
<a name="sns-sms-sandbox-moving-to-production"></a>

を [SMS サンドボックス](sns-sms-sandbox.md) AWS アカウント の外に移動するには、まず送信先の電話番号を追加、検証、テストする必要があります。これを行ったら、 を使用してケースを作成します AWS サポート。

**AWS アカウントを SMS サンドボックス外に移動するようにリクエストするには**

1. **電話番号を検証する**

   1.  AWS アカウント が SMS サンドボックスにある間に、[Amazon SNS コンソール](https://console.aws.amazon.com/sns/home)を開きます。

   1. ナビゲーションペインの [モバイル] の下で、**[テキストメッセージング (SMS)]** を選択します。

   1. サンドボックスの送信先電話番号セクションで、1 つまたは複数の送信先電話番号を[追加して検証](sns-sms-sandbox-verifying-phone-numbers.md)します。この検証により、メッセージを正常に送受信できるようになります。

1. **SMS 発行のテスト**

   1. 少なくとも 1 つの検証済みの電話番号で、メッセージを送受信できることを確認します。SMS メッセージの発行方法の詳細については、「[Amazon SNS を使用して SMS メッセージを携帯電話に発行する](sms_sending-overview.md#sms_publish-to-phone)」を参照してください。

1. **サンドボックス編集を開始する**

   1. 「Amazon SNS コンソールの**モバイルテキストメッセージング (SMS)**」のページの [**アカウント情報**] で、[**SMS サンドボックスを終了する**] を選択します。。このアクションにより、[Amazon サポートセンター](https://support.console.aws.amazon.com/support/home?#/case/create?issueType=service-limit-increase)にリダイレクトされ、**Service Quotas の引き上げ**オプションが選択されたサポートケースが自動的に作成されます。

1. **フォームへの入力**

   1. 「**Service Quotas の引き上げ**」のサポートフォームで、以下を実行します。

     1. サービスとして **[SNS テキストメッセージング]** を選択します。

     1. SMS メッセージを送信する**ウェブサイト URL** または**アプリ名**を指定します。

     1. 送信するメッセージのタイプとして、**ワンタイムパスワード**、**プロモーション**、**トランザクション**のいずれかを選択します。

     1. SMS メッセージの送信元の **AWS リージョン** を選択します。

     1. SMS メッセージの送信先の**国**または**地域**を指定します。

     1. お客様が**メッセージの受信をオプトインする**方法の説明を入力します。

     1. 使用する**メッセージテンプレート**を含めます。

1. **クォータとリージョンを指定する**

   1. [**リクエスト**]で、以下の操作を行います。

     1. を移動する **AWS リージョン** を選択します AWS アカウント。

     1. **[リソースタイプ]** で、**[一般的な制限]** を選択します。

     1. **[クォータ]** で、**[SMS サンドボックスを終了]** を選択します。

     1. (オプション) 追加の引き上げやその他の調整をリクエストするには、**[別のリクエストを追加]** を選択して、必要な詳細を指定します。

     1. **[申請する上限数]** に、リクエストする**クォータ**を米ドルで入力します。

1. **その他の詳細**

   1. **[ケースの説明]** に、リクエストに関連する追加の詳細を入力します。

   1. **[お問い合わせオプション]** で、**[連絡の際に希望する言語]** を選択します。

1. **リクエストを送信する**

   1. **[送信]** を選択して、リクエストを サポートに送信します。

 サポート チームは 24 時間以内にリクエストに最初の応答を提供します。

迷惑なコンテンツや悪意のあるコンテンツを送信するためにシステムが悪用されないように、私たちは各リクエストを慎重に検討しています。可能であれば、24 時間以内にリクエストを承認します。ただし、追加情報が必要な場合は、お客様のリクエストの解決に時間がかかる場合があります。

お客様のユースケースが私たちのポリシーに一致しない場合は、リクエストを承認できない場合があります。

# Amazon SNS SMS メッセージの送信元アイデンティティ
<a name="channels-sms-originating-identities"></a>

**重要**  
Amazon SNS SMS デベロッパーガイドが更新されました。Amazon SNS は、SMS メッセージの配信のために [AWS End User Messaging SMS](https://docs.aws.amazon.com/sms-voice/latest/userguide/what-is-service.html) と統合されています。このガイドには、Amazon SNS SMS メッセージを作成、設定、管理する方法に関する最新情報が含まれています。

SMS メッセージの送信元アイデンティティは、SMS メッセージの送信者を表すために使用される識別子です。次のタイプの送信元アイデンティティを使用して受信者に対しお客様の身元証明ができます。

**送信元番号**  
SMS メッセージの送信者の電話番号を識別する数値文字列です。送信元番号には、ロングコード (通常 10 桁以上の標準電話番号)、10 桁のロングコード (10DLC)、通話料無料番号 (TFN)、ショートコード (4～7 桁の電話番号) など、いくつかのタイプがあります。  
送信元番号のサポートは、送信元番号ではなく送信者 ID の使用が現地法により義務付けられている国では利用できません。送信元番号を使用して SMS メッセージを送信すると、受信者のデバイスには送信元番号が送信者の電話番号として表示されます。ユースケースごとに異なる送信元番号を指定できます。  
詳細については、「*AWS End User Messaging SMS ユーザーガイド*」の「[電話番号](https://docs.aws.amazon.com/sms-voice/latest/userguide/phone-numbers.html)」を参照してください。  
 AWS アカウント内のすべての既存の発信元番号のリストを表示するには、[Amazon SNS コンソール](https://console.aws.amazon.com/sns/home)のナビゲーションペインで、**発信元番号**を選択します。

**送信者 IDs**  
SMS メッセージの送信者を識別する英字名です。送信者 ID を使用して SMS メッセージを送信し、送信者 ID 認証がサポートされているエリアに受信者がいる場合は、電話番号ではなく、送信者 ID が受信者のデバイスに表示されます。送信者 ID は、電話番号、ロングコード、ショートコードよりも、送信者に関する詳細な情報を SMS の受信者に示すことができます。  
送信者 ID は、世界の一部の国や地域でサポートされています。一部の地域では、企業として個別のお客様に SMS メッセージを送信する場合は、事前に規制当局または業界団体に登録されている送信者 ID を使用する必要があります。送信者 ID をサポートまたは必要とする国と地域の完全なリストについては、「*AWS End User Messaging SMS ユーザー ガイド*」の「[AWS End User Messaging SMSの SMS メッセージングがサポートされている国と地域](https://docs.aws.amazon.com/sms-voice/latest/userguide/phone-numbers-sms-by-country.html)」を参照してください。  
送信者 ID の使用には追加料金はかかりません。ただし、送信者 ID 認証のサポートや要件は国によって異なります。主要な市場 (例: カナダ、中国、米国) の中には、送信者 ID の使用がサポートされていないものがあります。一部の地域では、企業として個人のお客様に SMS メッセージを送信する場合は、規制当局または業界団体に事前登録されている送信者 ID を使用する必要があります。  
詳細については、「*AWS End User Messaging SMS ユーザーガイド*」の「[送信者 ID](https://docs.aws.amazon.com/sms-voice/latest/userguide/sender-id.html)」を参照してください。

# Amazon SNS での SMS メッセージングの設定
<a name="channels-sms-configurations"></a>

**重要**  
Amazon SNS SMS デベロッパーガイドが更新されました。Amazon SNS は、SMS メッセージの配信のために [AWS End User Messaging SMS](https://docs.aws.amazon.com/sms-voice/latest/userguide/what-is-service.html) と統合されています。このガイドには、Amazon SNS SMS メッセージを作成、設定、管理する方法に関する最新情報が含まれています。

Amazon SNS SMS の設定を使用して、使用クォータの調整や配信ステータスのログ記録の設定など、要件に合わせて SMS プリファレンスの設定を行うことができます。このトピックでは、Amazon SNS コンソールと AWS SDK を使用してトピックに SMS メッセージを発行する方法、クォータを効率的に処理する方法、SMS アクティビティに関する詳細な統計を取得する方法についても詳しく説明します。

# Amazon SNS を使用して SMS メッセージを送信する
<a name="sms_sending-overview"></a>

このセクションでは、Amazon SNS を使用して SMS メッセージを送信する方法について説明します。ここでは、トピックへの発行、トピックへの電話番号のサブスクライブ、メッセージの属性の設定、携帯電話への直接発行などについて説明します。

## SMS メッセージを Amazon SNS トピックに発行する
<a name="sms_publish-to-topic"></a>

Amazon SNS トピックにこれらの電話番号を登録することで、1 通の SMS メッセージを一度に複数の電話番号に送信できます。SNS トピックは通信チャンネルで、受信者を追加し、すべての受信者にメッセージを発行できます。サブスクライバーは、サブスクリプションをキャンセルするか、サブスクライバーが AWS アカウントからの SMS メッセージの受信をオプトアウトするまで、トピックに発行されたすべてのメッセージを受信します。

### AWS コンソールを使用してトピックにメッセージを送信する
<a name="sms_publish-to-topic_console"></a>

**トピックを作成する**

SMS メッセージを送信するトピックがまだない場合は、次の手順を実行します。

1. [Amazon SNS コンソール](https://console.aws.amazon.com/sns/home)にサインインします。

1. コンソールメニューで、[[SMS メッセージングをサポートしているリージョン]](https://docs.aws.amazon.com/general/latest/gr/end-user-messaging.html) を選択します。

1. ナビゲーションペインで、[**トピック**] を選択してください。

1. [**トピック**] ページで、[**トピックの作成**] を選択します。

1. [**トピックの作成**] ページの [**詳細**] で、次の操作を行います。

   1. **[Type]** (タイプ) で、**[Standard]** (標準) を選択します。

   1. [**名前**] にトピック名を入力します。

   1. (オプション) [**表示名**] に SMS メッセージのカスタムプレフィックスを入力します。トピックにメッセージを送信する場合、Amazon SNS によって右アングルブラケット (>) とスペースに続いて表示名が付加されます。表示名では大文字と小文字が区別されず、Amazon SNS は表示名を大文字に変換します。例えば、トピックの表示名が `MyTopic` で、メッセージが `Hello World!` である場合、メッセージは次のように表示されます。

      ```
      MYTOPIC> Hello World!
      ```

1. **[トピックを作成]** を選択します。トピックの名前と Amazon リソースネーム (ARN) が、[**トピック**] ページに表示されます。

**SMS サブスクリプションを作成するには**

トピックに 1 回だけメッセージを発行することによって、サブスクリプションを使用して SMS メッセージを複数の受信者に送信できます。
**注記**  
Amazon SNS を使用して SMS メッセージを送信し始めると、 AWS アカウントは *SMS サンドボックス*にあります。SMS サンドボックスは、SMS 送信者としての評判を損なうことなく、Amazon SNS 機能を試すための安全な環境を提供します。アカウントが SMS サンドボックスにあり、Amazon SNS のすべての機能を使用できますが、SMS メッセージを送信できるのは、確認済みの送信先の電話番号だけです。詳細については、「[Amazon SNS SMS サンドボックスの使用](sns-sms-sandbox.md)」を参照してください。

1. [Amazon SNS コンソール](https://console.aws.amazon.com/sns/home)にサインインします。

1. ナビゲーションペインで [**サブスクリプション**] を選択します。

1. [**サブスクリプション**] ページで [**サブスクリプションの作成**] を選択します。

1. [**サブスクリプションの作成**] ページで [**詳細**] セクションで、以下を実行します。

   1. **トピック ARN**で、SMS メッセージを送信するトピックの Amazon リソースネーム (ARN) を入力または選択します。

   1. [**プロトコル**] で **SMS** を選択します。

   1. [**エンドポイント**] に、トピックをサブスクライブする電話番号を入力します。

1. [**サブスクリプションの作成**] を選択します。サブスクリプション情報は [**サブスクリプション**] ページに表示されます。

   さらに電話番号を追加するには、このステップを繰り返します。電子メールなど、他の種類のサブスクリプションを追加することもできます。

**単一のメッセージを送信するには**

トピックにメッセージを発行すると、Amazon SNS はトピックにサブスクライブされているすべての電話番号にメッセージの配信を試みます。

1. [[Amazon SNS コンソール](https://console.aws.amazon.com/sns/home)] の [**トピック**] ページで、SMS メッセージを送信するトピックの名前を選択します。

1. トピックの詳細ページで、[**トピックへの発行**] を選択します。

1. [**トピックへのメッセージの発行**] ページの **[メッセージの詳細]** で、次の操作を行います。

   1. トピックに E メールのサブスクリプションが含まれていない場合、および E メール と SMS のサブスクリプションの両方を発行する場合は、[**件名**] のフィールドを空のままにします。Amazon SNS の [**件名**] は、E メールの件名の欄とにあたります。

   1. (オプション) [**有効期限 (TTL)**] に、Amazon SNS がモバイルアプリケーションエンドポイント受信者に SMS メッセージを送信するのに必要な秒数を入力します。

1. [**メッセージ本文**] で、次の作業を行います。

   1. [**メッセージ構造**] で、[**すべての配信プロトコルに同一のペイロード**] をクリックして、トピックに登録されているすべてのプロトコルタイプに同じメッセージを送信します。または、[**配信プロトコルごとにカスタムペイロード**] を選択して、異なるプロトコルタイプの受信者用のメッセージをカスタマイズします。例えば、電話番号受信者にはデフォルトメッセージを入力し、E メール受信者にはカスタムメッセージを入力できます。

   1. [**エンドポイントに送信するメッセージ本文**] を選択し、メッセージを入力するか、配信プロトコルごとにカスタムメッセージを入力します。

      トピックに表示名がある場合、Amazon SNS はそれをメッセージの長さを増やすメッセージに追加します。表示名の長さは、名前の文字数に Amazon SNS が追加する右アングルブラケット (>) とスペースの 2 文字をプラスしたものです。

      SMS メッセージのサイズ限度の詳細については、「[Amazon SNS を使用して SMS メッセージを携帯電話に発行する](#sms_publish-to-phone)」を参照してください。

1. (オプション) [**メッセージ属性**] で、タイムスタンプ、署名、ID などのメッセージメタデータを追加します。

1. [**メッセージの発行**] を選択します。Amazon SNS から SMS メッセージを送信し、成功のメッセージを表示します。

### AWS SDKs
<a name="sms_publish-to-topic_sdk"></a>

 AWS SDK を使用するには、認証情報を使用して設定する必要があります。詳細については、『*AWS SDK とツールのリファレンスガイド*』の「[共有設定ファイルおよび認証情報ファイル](https://docs.aws.amazon.com/sdkref/latest/guide/creds-config-files.html)」を参照してください。

次のコードの例は以下の方法を示しています。
+ Amazon SNS トピックを作成します。
+ 携帯電話番号をトピックにサブスクライブする。
+ SMS メッセージをトピックに発行して、登録されているすべての電話番号がメッセージを一度に受信できるようにします。

------
#### [ Java ]

**SDK for Java 2.x**  
 GitHub には、その他のリソースもあります。用例一覧を検索し、[AWS コード例リポジトリ](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javav2/example_code/sns#code-examples)での設定と実行の方法を確認してください。
トピックを作成し、その ARN を返します。  

```
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.sns.SnsClient;
import software.amazon.awssdk.services.sns.model.CreateTopicRequest;
import software.amazon.awssdk.services.sns.model.CreateTopicResponse;
import software.amazon.awssdk.services.sns.model.SnsException;

/**
 * Before running this Java V2 code example, set up your development
 * environment, including your credentials.
 *
 * For more information, see the following documentation topic:
 *
 * https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html
 */
public class CreateTopic {
    public static void main(String[] args) {
        final String usage = """

                Usage:    <topicName>

                Where:
                   topicName - The name of the topic to create (for example, mytopic).

                """;

        if (args.length != 1) {
            System.out.println(usage);
            System.exit(1);
        }

        String topicName = args[0];
        System.out.println("Creating a topic with name: " + topicName);
        SnsClient snsClient = SnsClient.builder()
                .region(Region.US_EAST_1)
                .build();

        String arnVal = createSNSTopic(snsClient, topicName);
        System.out.println("The topic ARN is" + arnVal);
        snsClient.close();
    }

    public static String createSNSTopic(SnsClient snsClient, String topicName) {
        CreateTopicResponse result;
        try {
            CreateTopicRequest request = CreateTopicRequest.builder()
                    .name(topicName)
                    .build();

            result = snsClient.createTopic(request);
            return result.topicArn();

        } catch (SnsException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
        return "";
    }
}
```
トピックへのエンドポイントのサブスクライブ。  

```
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.sns.SnsClient;
import software.amazon.awssdk.services.sns.model.SnsException;
import software.amazon.awssdk.services.sns.model.SubscribeRequest;
import software.amazon.awssdk.services.sns.model.SubscribeResponse;

/**
 * Before running this Java V2 code example, set up your development
 * environment, including your credentials.
 *
 * For more information, see the following documentation topic:
 *
 * https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html
 */
public class SubscribeTextSMS {
    public static void main(String[] args) {
        final String usage = """

                Usage:    <topicArn> <phoneNumber>

                Where:
                   topicArn - The ARN of the topic to subscribe.
                   phoneNumber - A mobile phone number that receives notifications (for example, +1XXX5550100).
                """;

        if (args.length < 2) {
            System.out.println(usage);
            System.exit(1);
        }

        String topicArn = args[0];
        String phoneNumber = args[1];
        SnsClient snsClient = SnsClient.builder()
                .region(Region.US_EAST_1)
                .build();

        subTextSNS(snsClient, topicArn, phoneNumber);
        snsClient.close();
    }

    public static void subTextSNS(SnsClient snsClient, String topicArn, String phoneNumber) {
        try {
            SubscribeRequest request = SubscribeRequest.builder()
                    .protocol("sms")
                    .endpoint(phoneNumber)
                    .returnSubscriptionArn(true)
                    .topicArn(topicArn)
                    .build();

            SubscribeResponse result = snsClient.subscribe(request);
            System.out.println("Subscription ARN: " + result.subscriptionArn() + "\n\n Status is "
                    + result.sdkHttpResponse().statusCode());

        } catch (SnsException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
    }
}
```
送信者の ID、上限価格、タイプなど、メッセージ上の属性を設定します。メッセージ属性はオプションです。  

```
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.sns.SnsClient;
import software.amazon.awssdk.services.sns.model.SetSmsAttributesRequest;
import software.amazon.awssdk.services.sns.model.SetSmsAttributesResponse;
import software.amazon.awssdk.services.sns.model.SnsException;
import java.util.HashMap;

/**
 * Before running this Java V2 code example, set up your development
 * environment, including your credentials.
 *
 * For more information, see the following documentation topic:
 *
 * https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html
 */
public class SetSMSAttributes {
    public static void main(String[] args) {
        HashMap<String, String> attributes = new HashMap<>(1);
        attributes.put("DefaultSMSType", "Transactional");
        attributes.put("UsageReportS3Bucket", "janbucket");

        SnsClient snsClient = SnsClient.builder()
                .region(Region.US_EAST_1)
                .build();
        setSNSAttributes(snsClient, attributes);
        snsClient.close();
    }

    public static void setSNSAttributes(SnsClient snsClient, HashMap<String, String> attributes) {
        try {
            SetSmsAttributesRequest request = SetSmsAttributesRequest.builder()
                    .attributes(attributes)
                    .build();

            SetSmsAttributesResponse result = snsClient.setSMSAttributes(request);
            System.out.println("Set default Attributes to " + attributes + ". Status was "
                    + result.sdkHttpResponse().statusCode());

        } catch (SnsException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
    }
}
```
トピックへのメッセージの発行 メッセージは、すべての受信者に送信されます。  

```
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.sns.SnsClient;
import software.amazon.awssdk.services.sns.model.PublishRequest;
import software.amazon.awssdk.services.sns.model.PublishResponse;
import software.amazon.awssdk.services.sns.model.SnsException;

/**
 * Before running this Java V2 code example, set up your development
 * environment, including your credentials.
 *
 * For more information, see the following documentation topic:
 *
 * https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html
 */
public class PublishTextSMS {
    public static void main(String[] args) {
        final String usage = """

                Usage:    <message> <phoneNumber>

                Where:
                   message - The message text to send.
                   phoneNumber - The mobile phone number to which a message is sent (for example, +1XXX5550100).\s
                """;

        if (args.length != 2) {
            System.out.println(usage);
            System.exit(1);
        }

        String message = args[0];
        String phoneNumber = args[1];
        SnsClient snsClient = SnsClient.builder()
                .region(Region.US_EAST_1)
                .build();
        pubTextSMS(snsClient, message, phoneNumber);
        snsClient.close();
    }

    public static void pubTextSMS(SnsClient snsClient, String message, String phoneNumber) {
        try {
            PublishRequest request = PublishRequest.builder()
                    .message(message)
                    .phoneNumber(phoneNumber)
                    .build();

            PublishResponse result = snsClient.publish(request);
            System.out
                    .println(result.messageId() + " Message sent. Status was " + result.sdkHttpResponse().statusCode());

        } catch (SnsException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
    }
}
```

------

## Amazon SNS を使用して SMS メッセージを携帯電話に発行する
<a name="sms_publish-to-phone"></a>

Amazon SNS を使用して、Amazon SNS トピックに電話番号を登録せずに、SMS メッセージを携帯電話に直接送信できます。

**注記**  
1 つのメッセージを同時に複数の電話番号に送信する場合、電話番号をトピックにサブスクライブすると便利です。SMS メッセージをトピックに発行する方法については、「[SMS メッセージを Amazon SNS トピックに発行する](#sms_publish-to-topic)」を参照してください。

メッセージを送信するとき、メッセージがコストまたは信頼性に対して最適化されているかどうかを制御できます。[送信者 ID または発信番号](channels-sms-originating-identities.md)を指定することもできます。Amazon SNS API または AWS SDKs を使用してプログラムでメッセージを送信する場合は、メッセージ配信の上限価格を指定できます。

各 SMS メッセージは最大 140 バイトまで含めることができ、文字限度はエンコーディングスキームによって異なります。例えば、SMS メッセージには以下を含めることができます。
+ 160 GSM 文字
+ 140 ASCII 文字
+ 70 UCS-2 文字

サイズ限度を超えてメッセージを発行する場合は、Amazon SNS により、複数のメッセージとして送信され、それぞれが文字数の限度以内に収められます。メッセージは単語の途中ではなく、単語の境目で切り離されます。1 回の SMS 発行アクションの合計サイズ限度は、1,600 バイトです。

SMS メッセージを送信するときは、E.164 形式を使用して電話番号を指定します。E.164 形式は国際電気通信に使用される標準電話番号付与構造です。この形式に従う電話番号は最大 15 桁を設定でき、プラス記号 (\$1) および国コードのプレフィックスが付いています。例えば、E.164 形式の米国の電話番号は \$11XXX5550100 と表示されます。

### メッセージの送信 (コンソール)
<a name="sms_publish_console"></a>

1. [Amazon SNS コンソール](https://console.aws.amazon.com/sns/home)にサインインします。

1. コンソールメニューで、[[SMS メッセージングをサポートしているリージョン]](https://docs.aws.amazon.com/general/latest/gr/end-user-messaging.html) を選択します。

1. ナビゲーションペインで、[**テキストメッセージング (SMS)**] を選択します。

1. リポジトリの [**モバイルテキストメッセージング (SMS)**] ページで、[**テキストメッセージの発行**]。

1. リポジトリの [**SMS メッセージを発行する**] ページ、[**メッセージの種類]** で、次のいずれかを選択します。
   + **プロモーション** - マーケティングメッセージなどの非クリティカルなメッセージ。
   + [**トランザクション**] - 多要素認証のワンタイムパスコードなど、顧客のトランザクションをサポートするクリティカルメッセージ。
**注記**  
このメッセージレベルの設定をすると、アカウントレベルのデフォルトメッセージタイプは上書きされます。アカウントレベルのデフォルトのメッセージタイプは、[**モバイルテキストメッセージング (SMS)**] ページの [**テキストメッセージングの優先設定**] のセクションで設定できます。

   プロモーションおよびトランザクションメッセージの料金表の詳細については、「[世界各地の SMS 料金表](https://aws.amazon.com/sns/sms-pricing/)」を参照してください。

1. [**送信先電話番号**] に、メッセージを送信する電話番号を入力します。

1. [**メッセージ**] に、送信するメッセージを入力します。

1. (オプション) [**送信元アイデンティティ**] で、受信者を識別する方法を指定します。
   + (オプション) [**送信者 ID**] に、少なくとも 1 つの文字を含み、スペースは含まない、3～11 文字の英数字のカスタム ID を入力します。送信者 ID は、受信側デバイスにメッセージ送信者として表示されます。例えば、メッセージソースを識別しやすいように、ビジネスブランドを使用できます。

     送信者 ID のサポートについては、国、リージョン、またはその両方によって異なります。例えば、米国の電話番号へ配信されるメッセージは、送信者 ID を表示しません。送信者 ID をサポートしている国と地域については、「*AWS End User Messaging SMS ユーザーガイド*」の「[AWS End User Messaging SMSの SMS メッセージングがサポートされている国と地域](https://docs.aws.amazon.com/sms-voice/latest/userguide/phone-numbers-sms-by-country.html)」を参照してください。

     送信者 ID を指定しない場合、次のいずれか 1 つが送信元 ID として表示されます。
     + ロングコードをサポートしている国では、ロングコードが表示されます。
     + 送信者 ID のみがサポートされている国では、「*NOTICE*」が表示されます。

     このメッセージレベルの送信者 ID は、[**テキストメッセージプリファレンス**] ページで設定するデフォルトの送信者 ID を上書きします。
   + [**送信元番号**] を指定するには、受信者のデバイス上で送信者の電話番号として表示する 5～14 の数字の文字列を入力します。この文字列は、 AWS アカウント 送信先の国の で設定されている送信元番号と一致する必要があります。発信番号には、10DLC 番号、通話料無料の番号、個人間のロングコード、またはショートコードを指定できます。詳細については、「[Amazon SNS SMS メッセージの送信元アイデンティティ](channels-sms-originating-identities.md)」を参照してください。

     発信番号を指定しない場合、 AWS アカウント 設定に基づき、Amazon SNS は SMS テキストメッセージに使用する送信元番号を選択します。

1. インドの受取人に SMS メッセージを送信する場合は、[**国固有の属性** を展開し、次の属性を指定します。
   + **エンティティ ID** - インドの受信者に SMS メッセージを送信するためのエンティティ ID または プリンシパルエンティティ (PE) ID。この ID は、1 ～ 50 文字の一意の文字列で、Telecom Regulatory Authority of India (TRAI) が提供する、TRAI に登録したエンティティを識別するものです。
   + **テンプレート ID** - インドの受信者に SMS メッセージを送信するためのテンプレート ID。この ID は、TRAI に登録したテンプレートを識別する 1 ～ 50 文字の一意の文字列です。テンプレート ID は、メッセージに対して指定した送信者 ID に関連付ける必要があります。

   インドの受信者に SMS メッセージを送信する方法の詳細については、「*AWS End User Messaging SMS ユーザーガイド*」の「[インドの送信者 ID 登録プロセス](https://docs.aws.amazon.com/sms-voice/latest/userguide/registrations-sms-senderid-india.html)」を参照してください。

1. [**メッセージの発行**] を選択します。

**ヒント**  
送信元番号から SMS メッセージを送信するには、Amazon SNS コンソールのナビゲーションパネルで**送信元番号**を送信します。[**機能**] 列で [**SMS**] 含む送信元番号を選択し、次に [**テキストメッセージの発行**] を選択します。

### メッセージの送信 (AWS SDKs)
<a name="sms_publish_sdk"></a>

 AWS SDKs のいずれかを使用して SMS メッセージを送信するには、Amazon SNS API の`Publish`リクエストに対応する SDK の API オペレーションを使用します。このリクエストでは、電話番号に SMS メッセージを直接送信できます。次の属性名の値を設定する場合、`MessageAttributes` パラメータも使用できます。

**`AWS.SNS.SMS.SenderID`**  
少なくとも 1 つの文字を含み、スペースは含まない、3 ～ 11 文字の英数字のカスタム ID。送信者 ID は、受信デバイスにメッセージ送信者として表示されます。例えば、メッセージ ソースを識別しやすいように、ビジネスブランドを使用できます。  
送信者 ID のサポートについては、国またはリージョンによって異なります。例えば、米国の電話番号へ配信されるメッセージは、送信者 ID を表示しません。送信者 ID をサポートする国または地域のリストについては、「*AWS End User Messaging SMS ユーザーガイド*」での「[AWS End User Messaging SMSの SMS メッセージングがサポートされている国と地域](https://docs.aws.amazon.com/sms-voice/latest/userguide/phone-numbers-sms-by-country.html)」を参照してください。  
送信者 ID を指定しない場合、サポートされている国またはリージョンでは、メッセージは送信者 ID として[ロングコード](https://docs.aws.amazon.com/sms-voice/latest/userguide/phone-numbers-request-long-code.html)を表示します。アルファベットの送信者 ID を必要とする国またはリージョンでは、送信者 ID は「*NOTICE*」と表示されます。  
このメッセージレベルの属性は、`SetSMSAttributes` リクエストを使用して設定する、アカウントレベルの属性 `DefaultSenderID` を上書きします。

**`AWS.MM.SMS.OriginationNumber`**  
5～14 個の数値のカスタム文字列で、オプションの先頭にプラス記号 (`+`) を付けられます。この番号文字列は、受信側のデバイスの送信者の電話番号として表示されます。文字列は、送信先の国の AWS アカウントで設定された送信元番号と一致する必要があります。発信番号には、10DLC 番号、通話料無料の番号、Person-to-Person (P2P) のロングコード、またはショートコードを指定できます。詳細については、「*AWS End User Messaging SMS ユーザーガイド*」の「[電話番号](https://docs.aws.amazon.com/sms-voice/latest/userguide/phone-numbers.html)」を参照してください。  
発信元番号を指定しない場合、Amazon SNS は AWS アカウント設定に基づいて発信元番号を選択します。

**`AWS.SNS.SMS.MaxPrice`**  
SMS メッセージの送信に使用できる上限価格 (USD)。Amazon SNS がメッセージの送信により上限価格を超えるコストが発生すると判断した場合、Amazon SNS はメッセージを送信しません。  
過去 1 か月の SMS コストが既に `MonthlySpendLimit` 属性の限度を超えた場合、この属性は何も実行しません。`SetSMSAttributes` リクエストを使用して `MonthlySpendLimit` 属性を設定できます。  
Amazon SNS トピックにメッセージを送信する場合、トピックにサブスクライブされている各電話番号への各メッセージの配信に上限価格が適用されます。

**`AWS.SNS.SMS.SMSType`**  
送信するメッセージのタイプ。  
+ **`Promotional`** (デフォルト) - マーケティングメッセージなどの非クリティカルなメッセージ。
+ **`Transactional`** - 多要素認証のワンタイムパスコードなど、顧客のトランザクションをサポートするクリティカルメッセージ。
このメッセージレベルの属性は、`SetSMSAttributes` リクエストを使用して設定する、アカウントレベルの属性 `DefaultSMSType` を上書きします。

**`AWS.MM.SMS.EntityId`**  
この属性は、インドの受信者に SMS メッセージを送信するときにのみ必要です。  
これは、インドの受信者に SMS メッセージを送信するためのエンティティ ID またはプリンシパルエンティティ (PE) ID です。この ID は、1 ～ 50 文字の一意の文字列で、Telecom Regulatory Authority of India (TRAI) が提供する、TRAI に登録したエンティティを識別するものです。

**`AWS.MM.SMS.TemplateId`**  
この属性は、インドの受信者に SMS メッセージを送信するときにのみ必要です。  
これは、インドの受信者に SMS メッセージを送信するためのテンプレートです。この ID は、TRAI に登録したテンプレートを識別する 1 ～ 50 文字の一意の文字列です。テンプレート ID は、メッセージに対して指定した送信者 ID に関連付ける必要があります。

#### メッセージを送信する
<a name="sms_publish_sdks"></a>

次のコード例は、Amazon SNS を使用して SMS メッセージを発行する方法を示しています。

------
#### [ .NET ]

**SDK for .NET**  
 GitHub には、その他のリソースもあります。用例一覧を検索し、[AWS コード例リポジトリ](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/dotnetv3/SNS#code-examples)での設定と実行の方法を確認してください。

```
namespace SNSMessageExample
{
    using System;
    using System.Threading.Tasks;
    using Amazon;
    using Amazon.SimpleNotificationService;
    using Amazon.SimpleNotificationService.Model;

    public class SNSMessage
    {
        private AmazonSimpleNotificationServiceClient snsClient;

        /// <summary>
        /// Initializes a new instance of the <see cref="SNSMessage"/> class.
        /// Constructs a new SNSMessage object initializing the Amazon Simple
        /// Notification Service (Amazon SNS) client using the supplied
        /// Region endpoint.
        /// </summary>
        /// <param name="regionEndpoint">The Amazon Region endpoint to use in
        /// sending test messages with this object.</param>
        public SNSMessage(RegionEndpoint regionEndpoint)
        {
            snsClient = new AmazonSimpleNotificationServiceClient(regionEndpoint);
        }

        /// <summary>
        /// Sends the SMS message passed in the text parameter to the phone number
        /// in phoneNum.
        /// </summary>
        /// <param name="phoneNum">The ten-digit phone number to which the text
        /// message will be sent.</param>
        /// <param name="text">The text of the message to send.</param>
        /// <returns>Async task.</returns>
        public async Task SendTextMessageAsync(string phoneNum, string text)
        {
            if (string.IsNullOrEmpty(phoneNum) || string.IsNullOrEmpty(text))
            {
                return;
            }

            // Now actually send the message.
            var request = new PublishRequest
            {
                Message = text,
                PhoneNumber = phoneNum,
            };

            try
            {
                var response = await snsClient.PublishAsync(request);
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Error sending message: {ex}");
            }
        }
    }
}
```
+  API の詳細については、*AWS SDK for .NET API リファレンス*の「[Publish](https://docs.aws.amazon.com/goto/DotNetSDKV3/sns-2010-03-31/Publish)」を参照してください。

------
#### [ C\$1\$1 ]

**SDK for C\$1\$1**  
 GitHub には、その他のリソースもあります。用例一覧を検索し、[AWS コード例リポジトリ](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/cpp/example_code/sns#code-examples)での設定と実行の方法を確認してください。

```
/**
 * Publish SMS: use Amazon Simple Notification Service (Amazon SNS) to send an SMS text message to a phone number.
 * Note: This requires additional AWS configuration prior to running example. 
 * 
 *  NOTE: When you start using Amazon SNS to send SMS messages, your AWS account is in the SMS sandbox and you can only
 *  use verified destination phone numbers. See https://docs.aws.amazon.com/sns/latest/dg/sns-sms-sandbox.html.
 *  NOTE: If destination is in the US, you also have an additional restriction that you have use a dedicated
 *  origination ID (phone number). You can request an origination number using Amazon Pinpoint for a fee.
 *  See https://aws.amazon.com/blogs/compute/provisioning-and-using-10dlc-origination-numbers-with-amazon-sns/ 
 *  for more information. 
 * 
 *  <phone_number_value> input parameter uses E.164 format. 
 *  For example, in United States, this input value should be of the form: +12223334444
 */

//! Send an SMS text message to a phone number.
/*!
  \param message: The message to publish.
  \param phoneNumber: The phone number of the recipient in E.164 format.
  \param clientConfiguration: AWS client configuration.
  \return bool: Function succeeded.
 */
bool AwsDoc::SNS::publishSms(const Aws::String &message,
                             const Aws::String &phoneNumber,
                             const Aws::Client::ClientConfiguration &clientConfiguration) {
    Aws::SNS::SNSClient snsClient(clientConfiguration);

    Aws::SNS::Model::PublishRequest request;
    request.SetMessage(message);
    request.SetPhoneNumber(phoneNumber);

    const Aws::SNS::Model::PublishOutcome outcome = snsClient.Publish(request);

    if (outcome.IsSuccess()) {
        std::cout << "Message published successfully with message id, '"
                  << outcome.GetResult().GetMessageId() << "'."
                  << std::endl;
    }
    else {
        std::cerr << "Error while publishing message "
                  << outcome.GetError().GetMessage()
                  << std::endl;
    }

    return outcome.IsSuccess();
}
```
+  API の詳細については、*AWS SDK for C\$1\$1 API リファレンス*の「[Publish](https://docs.aws.amazon.com/goto/SdkForCpp/sns-2010-03-31/Publish)」を参照してください。

------
#### [ Java ]

**SDK for Java 2.x**  
 GitHub には、その他のリソースもあります。用例一覧を検索し、[AWS コード例リポジトリ](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javav2/example_code/sns#code-examples)での設定と実行の方法を確認してください。

```
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.sns.SnsClient;
import software.amazon.awssdk.services.sns.model.PublishRequest;
import software.amazon.awssdk.services.sns.model.PublishResponse;
import software.amazon.awssdk.services.sns.model.SnsException;

/**
 * Before running this Java V2 code example, set up your development
 * environment, including your credentials.
 *
 * For more information, see the following documentation topic:
 *
 * https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html
 */
public class PublishTextSMS {
    public static void main(String[] args) {
        final String usage = """

                Usage:    <message> <phoneNumber>

                Where:
                   message - The message text to send.
                   phoneNumber - The mobile phone number to which a message is sent (for example, +1XXX5550100).\s
                """;

        if (args.length != 2) {
            System.out.println(usage);
            System.exit(1);
        }

        String message = args[0];
        String phoneNumber = args[1];
        SnsClient snsClient = SnsClient.builder()
                .region(Region.US_EAST_1)
                .build();
        pubTextSMS(snsClient, message, phoneNumber);
        snsClient.close();
    }

    public static void pubTextSMS(SnsClient snsClient, String message, String phoneNumber) {
        try {
            PublishRequest request = PublishRequest.builder()
                    .message(message)
                    .phoneNumber(phoneNumber)
                    .build();

            PublishResponse result = snsClient.publish(request);
            System.out
                    .println(result.messageId() + " Message sent. Status was " + result.sdkHttpResponse().statusCode());

        } catch (SnsException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
    }
}
```
+  API の詳細については、*AWS SDK for Java 2.x API リファレンス*の「[Publish](https://docs.aws.amazon.com/goto/SdkForJavaV2/sns-2010-03-31/Publish)」を参照してください。

------
#### [ Kotlin ]

**SDK for Kotlin**  
 GitHub には、その他のリソースもあります。用例一覧を検索し、[AWS コード例リポジトリ](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/kotlin/services/sns#code-examples)での設定と実行の方法を確認してください。

```
suspend fun pubTextSMS(
    messageVal: String?,
    phoneNumberVal: String?,
) {
    val request =
        PublishRequest {
            message = messageVal
            phoneNumber = phoneNumberVal
        }

    SnsClient.fromEnvironment { region = "us-east-1" }.use { snsClient ->
        val result = snsClient.publish(request)
        println("${result.messageId} message sent.")
    }
}
```
+  API の詳細については、*AWS SDK for Kotlin API リファレンス*の「[Publish](https://sdk.amazonaws.com/kotlin/api/latest/index.html)」を参照してください。

------
#### [ PHP ]

**SDK for PHP**  
 GitHub には、その他のリソースもあります。用例一覧を検索し、[AWS コード例リポジトリ](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code/sns#code-examples)での設定と実行の方法を確認してください。

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;


/**
 * Sends a text message (SMS message) directly to a phone number using Amazon SNS.
 *
 * This code expects that you have AWS credentials set up per:
 * https://docs.aws.amazon.com/sdk-for-php/v3/developer-guide/guide_credentials.html
 */

$SnSclient = new SnsClient([
    'profile' => 'default',
    'region' => 'us-east-1',
    'version' => '2010-03-31'
]);

$message = 'This message is sent from a Amazon SNS code sample.';
$phone = '+1XXX5550100';

try {
    $result = $SnSclient->publish([
        'Message' => $message,
        'PhoneNumber' => $phone,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```
+  詳細については、「[AWS SDK for PHP デベロッパーガイド](https://docs.aws.amazon.com/sdk-for-php/v3/developer-guide/sns-examples-sending-sms.html#publish-to-a-text-message-sms-message)」を参照してください。
+  API の詳細については、*AWS SDK for PHP API リファレンス*の「[発行](https://docs.aws.amazon.com/goto/SdkForPHPV3/sns-2010-03-31/Publish)」を参照してください。

------
#### [ Python ]

**SDK for Python (Boto3)**  
 GitHub には、その他のリソースもあります。用例一覧を検索し、[AWS コード例リポジトリ](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/python/example_code/sns#code-examples)での設定と実行の方法を確認してください。

```
class SnsWrapper:
    """Encapsulates Amazon SNS topic and subscription functions."""

    def __init__(self, sns_resource):
        """
        :param sns_resource: A Boto3 Amazon SNS resource.
        """
        self.sns_resource = sns_resource


    def publish_text_message(self, phone_number, message):
        """
        Publishes a text message directly to a phone number without need for a
        subscription.

        :param phone_number: The phone number that receives the message. This must be
                             in E.164 format. For example, a United States phone
                             number might be +12065550101.
        :param message: The message to send.
        :return: The ID of the message.
        """
        try:
            response = self.sns_resource.meta.client.publish(
                PhoneNumber=phone_number, Message=message
            )
            message_id = response["MessageId"]
            logger.info("Published message to %s.", phone_number)
        except ClientError:
            logger.exception("Couldn't publish message to %s.", phone_number)
            raise
        else:
            return message_id
```
+  API の詳細については、**「AWS SDK for Python (Boto3) API リファレンス」の「[Publish](https://docs.aws.amazon.com/goto/boto3/sns-2010-03-31/Publish)」を参照してください。

------
#### [ SAP ABAP ]

**SDK for SAP ABAP**  
 GitHub には、その他のリソースもあります。用例一覧を検索し、[AWS コード例リポジトリ](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/sap-abap/services/sns#code-examples)での設定と実行の方法を確認してください。

```
    " iv_phone_number = '+12065550101' - Phone number in E.164 format
    TRY.
        oo_result = lo_sns->publish(              " oo_result is returned for testing purposes. "
          iv_phonenumber = iv_phone_number
          iv_message = iv_message ).
        MESSAGE 'Message published to phone number.' TYPE 'I'.
      CATCH /aws1/cx_snsnotfoundexception.
        MESSAGE 'Phone number does not exist.' TYPE 'E'.
    ENDTRY.
```
+  API の詳細については、*AWS SDK for SAP ABAP API リファレンス*の「[Publish](https://docs.aws.amazon.com/sdk-for-sap-abap/v1/api/latest/index.html)」(発行) を参照してください。

------

# Amazon SNS の SMS メッセージプリファレンスを設定する
<a name="sms_preferences"></a>

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

これらの設定は、アカウントから送信するすべての SMS メッセージに対して有効になりますが、個々のメッセージの送信時に上書きすることができます。詳細については、「[Amazon SNS を使用して SMS メッセージを携帯電話に発行する](sms_sending-overview.md#sms_publish-to-phone)」を参照してください。

## を使用した SMS メッセージングの設定 AWS マネジメントコンソール
<a name="sms_preferences_console"></a>

1. [Amazon SNS コンソール](https://console.aws.amazon.com/sns/home)にサインインします。

1. [SMS メッセージングをサポートしているリージョン](https://docs.aws.amazon.com/general/latest/gr/end-user-messaging.html)を選択します。

1. ナビゲーションパネルで、**[モバイル]**、**[テキストメッセージング (SMS)]** の順に選択します。

1. [**モバイルテキストメッセージング (SMS)**] ページの [**テキストメッセージプリファレンス**] セクションで、[**編集**] を選択します。

1. [**テキストメッセージングの優先設定の編集**] ページの [**詳細**] セクションで、以下の操作を実行します。

   1. [**デフォルトメッセージタイプ**] で、次のいずれかを選択します。
      + **[プロモーション]** — 重要度が低いメッセージ (広告など)。Amazon SNS は、最も低いコストが発生するようにメッセージ配信を最適化します。
      + **[トランザクション]** - 多要素認証のワンタイムパスコードなど、お客様のトランザクションをサポートするクリティカルメッセージ。Amazon SNS は、メッセージ配信を最も高い信頼性の実現のために最適化します。

      プロモーションおよびトランザクションメッセージの料金表の詳細については、「[グローバル SMS 料金表](https://aws.amazon.com/sns/sms-pricing/)」を参照してください。

   1. [**アカウントの使用料制限**] に、各暦月で SMS メッセージに使用する額 (USD) を入力します。
**重要**  
デフォルトでは、使用限度は 1.00 USD に設定されます。サービス限度を引き上げるには、[リクエストを送信](https://console.aws.amazon.com/support/home#/case/create?issueType=service-limit-increase&limitType=service-code-sns)します。
コンソールに設定した量がサービス限度を超える場合、Amazon SNS は SMS メッセージの発行を停止します。
Amazon SNS は分散システムであるため、使用クォータを超えると数分以内に SMS メッセージの送信を停止します。その間に SMS メッセージを送信し続けると、クォータを超えるコストが発生する可能性があります。

1. (オプション) [**デフォルトの送信者 ID**] にカスタム ID (ビジネスブランドなど) を入力します。これは、受信デバイスに送信者として表示されます。
**注記**  
送信者 ID のサポートについては、国によって異なります。

1. (オプション) **使用状況レポート用の Amazon S3 バケット名**の名前を入力します。
**注記**  
Amazon S3 バケットポリシーによって Amazon SNS への書き込みアクセスが付与される必要があります。

1. **[Save changes]** (変更の保存) をクリックします。

## 設定 (AWS SDKsの設定
<a name="sms_preferences_sdk"></a>

 AWS SDKs のいずれかを使用して SMS 設定を設定するには、Amazon SNS API の`SetSMSAttributes`リクエストに対応する SDK の アクションを使用します。 Amazon SNS このリクエストによって、月ごとの使用限度およびデフォルトの SMS タイプ (プロモーションまたはトランザクション) などの、異なる SMS の属性に値を割り当てます。利用可能な SMS 属性の詳細については、『*Amazon Simple Notification Service API リファレンス*』の「[SetSMSAttributes](https://docs.aws.amazon.com/sns/latest/api/API_SetSMSAttributes.html)」を参照してください。

次のサンプルコードは、`SetSMSAttributes` を使用する方法を説明しています。

------
#### [ C\$1\$1 ]

**SDK for C\$1\$1**  
 GitHub には、その他のリソースもあります。用例一覧を検索し、[AWS コード例リポジトリ](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/cpp/example_code/sns#code-examples)での設定と実行の方法を確認してください。
Amazon SNS を使用して DefaultSMSType 属性を設定する方法。  

```
//! Set the default settings for sending SMS messages.
/*!
  \param smsType: The type of SMS message that you will send by default.
  \param clientConfiguration: AWS client configuration.
  \return bool: Function succeeded.
 */
bool AwsDoc::SNS::setSMSType(const Aws::String &smsType,
                             const Aws::Client::ClientConfiguration &clientConfiguration) {
    Aws::SNS::SNSClient snsClient(clientConfiguration);

    Aws::SNS::Model::SetSMSAttributesRequest request;
    request.AddAttributes("DefaultSMSType", smsType);

    const Aws::SNS::Model::SetSMSAttributesOutcome outcome = snsClient.SetSMSAttributes(
            request);

    if (outcome.IsSuccess()) {
        std::cout << "SMS Type set successfully " << std::endl;
    }
    else {
        std::cerr << "Error while setting SMS Type: '"
                  << outcome.GetError().GetMessage()
                  << "'" << std::endl;
    }

    return outcome.IsSuccess();
}
```
+  API の詳細については、**「AWS SDK for C\$1\$1 API リファレンス」の「[SetSMSAttributes](https://docs.aws.amazon.com/goto/SdkForCpp/sns-2010-03-31/SetSMSAttributes)」を参照してください。

------
#### [ CLI ]

**AWS CLI**  
**SMS メッセージ属性を設定するには**  
次の `set-sms-attributes` の例では、SMS メッセージのデフォルトの送信者 ID を `MyName` に設定します。  

```
aws sns set-sms-attributes \
    --attributes DefaultSenderID=MyName
```
このコマンドでは何も出力されません。  
+  API の詳細については、「*AWS CLI コマンドリファレンス*」の「[SetSMSAttributes](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sns/set-sms-attributes.html)」を参照してください。

------
#### [ Java ]

**SDK for Java 2.x**  
 GitHub には、その他のリソースもあります。用例一覧を検索し、[AWS コード例リポジトリ](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javav2/example_code/sns#code-examples)での設定と実行の方法を確認してください。

```
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.sns.SnsClient;
import software.amazon.awssdk.services.sns.model.SetSmsAttributesRequest;
import software.amazon.awssdk.services.sns.model.SetSmsAttributesResponse;
import software.amazon.awssdk.services.sns.model.SnsException;
import java.util.HashMap;

/**
 * Before running this Java V2 code example, set up your development
 * environment, including your credentials.
 *
 * For more information, see the following documentation topic:
 *
 * https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html
 */
public class SetSMSAttributes {
    public static void main(String[] args) {
        HashMap<String, String> attributes = new HashMap<>(1);
        attributes.put("DefaultSMSType", "Transactional");
        attributes.put("UsageReportS3Bucket", "janbucket");

        SnsClient snsClient = SnsClient.builder()
                .region(Region.US_EAST_1)
                .build();
        setSNSAttributes(snsClient, attributes);
        snsClient.close();
    }

    public static void setSNSAttributes(SnsClient snsClient, HashMap<String, String> attributes) {
        try {
            SetSmsAttributesRequest request = SetSmsAttributesRequest.builder()
                    .attributes(attributes)
                    .build();

            SetSmsAttributesResponse result = snsClient.setSMSAttributes(request);
            System.out.println("Set default Attributes to " + attributes + ". Status was "
                    + result.sdkHttpResponse().statusCode());

        } catch (SnsException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
    }
}
```
+  API の詳細については、*AWS SDK for Java 2.x API リファレンス*の「[SetSMSAttributes](https://docs.aws.amazon.com/goto/SdkForJavaV2/sns-2010-03-31/SetSMSAttributes)」を参照してください。

------
#### [ JavaScript ]

**SDK for JavaScript (v3)**  
 GitHub には、その他のリソースもあります。用例一覧を検索し、[AWS コード例リポジトリ](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javascriptv3/example_code/sns#code-examples)での設定と実行の方法を確認してください。
別のモジュールでクライアントを作成し、エクスポートします。  

```
import { SNSClient } from "@aws-sdk/client-sns";

// The AWS Region can be provided here using the `region` property. If you leave it blank
// the SDK will default to the region set in your AWS config.
export const snsClient = new SNSClient({});
```
SDK モジュールとクライアントモジュールをインポートし、API を呼び出します。  

```
import { SetSMSAttributesCommand } from "@aws-sdk/client-sns";
import { snsClient } from "../libs/snsClient.js";

/**
 * @param {"Transactional" | "Promotional"} defaultSmsType
 */
export const setSmsType = async (defaultSmsType = "Transactional") => {
  const response = await snsClient.send(
    new SetSMSAttributesCommand({
      attributes: {
        // Promotional – (Default) Noncritical messages, such as marketing messages.
        // Transactional – Critical messages that support customer transactions,
        // such as one-time passcodes for multi-factor authentication.
        DefaultSMSType: defaultSmsType,
      },
    }),
  );
  console.log(response);
  // {
  //   '$metadata': {
  //     httpStatusCode: 200,
  //     requestId: '1885b977-2d7e-535e-8214-e44be727e265',
  //     extendedRequestId: undefined,
  //     cfId: undefined,
  //     attempts: 1,
  //     totalRetryDelay: 0
  //   }
  // }
  return response;
};
```
+  詳細については、「[AWS SDK for JavaScript デベロッパーガイド](https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/sns-examples-sending-sms.html#sending-sms-setattributes)」を参照してください。
+  API の詳細については、*AWS SDK for JavaScript API リファレンス*の「[SetSMSAttributes](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/sns/command/SetSMSAttributesCommand)」を参照してください。

------
#### [ PHP ]

**SDK for PHP**  
 GitHub には、その他のリソースもあります。用例一覧を検索し、[AWS コード例リポジトリ](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code/sns#code-examples)での設定と実行の方法を確認してください。

```
$SnSclient = new SnsClient([
    'profile' => 'default',
    'region' => 'us-east-1',
    'version' => '2010-03-31'
]);

try {
    $result = $SnSclient->SetSMSAttributes([
        'attributes' => [
            'DefaultSMSType' => 'Transactional',
        ],
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```
+  詳細については、「[AWS SDK for PHP デベロッパーガイド](https://docs.aws.amazon.com/sdk-for-php/v3/developer-guide/sns-examples-sending-sms.html#set-sms-attributes)」を参照してください。
+  API の詳細については、*AWS SDK for PHP API リファレンス*の「[SetSMSAttributes](https://docs.aws.amazon.com/goto/SdkForPHPV3/sns-2010-03-31/SetSMSAttributes)」を参照してください。

------

## 国に固有の配信のための SMS メッセージプリファレンスの設定
<a name="sms_preferences_country_specific"></a>

特定の国の送信先にのみメッセージを送信して、SMS トラフィックを管理および制御できます。これにより、メッセージは承認された国にのみ送信され、不要な SMS 料金を回避できます。次の手順により、Amazon Pinpoint の Protect 設定を使用して、許可またはブロックする国を指定します。

1. [https://console.aws.amazon.com/sms-voice/](https://console.aws.amazon.com/sms-voice/) で AWS SMS コンソールを開きます。

1. ナビゲーションペインの **[概要]** の **[クイックスタート]** セクションで、**[保護設定の作成]** を選択します。

1. **[保護設定の詳細]** で、保護設定の**わかりやすい名前**を入力します (例えば、「オーストラリアのみを許可」など）。

1. **[SMS に関する国ルール]** で、**[地域/国]** のチェックボックスをオンにして、サポートされているすべての国へのメッセージの送信をブロックします。

1. メッセージを送信する国のチェックボックスをオフにします。例えば、オーストラリアへのメッセージのみを許可するには、**[オーストラリア]** のチェックボックスをオフにします。

1. **[保護設定の関連付け]** セクションの **[関連付けタイプ]** で、**[アカウントのデフォルト]** を選択します。これにより、Protect AWS End User Messaging SMS 設定が Amazon SNS、[Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-identity-pools.html)、Amazon Pinpoint [https://docs.aws.amazon.com/pinpoint/latest/developerguide/send-messages-sms.html](https://docs.aws.amazon.com/pinpoint/latest/developerguide/send-messages-sms.html) API コールを介して送信されるすべてのメッセージに影響するようになります。

1. **[保護設定を作成]** を選択して、設定を保存します。

   次の確認メッセージが表示されます。

   ```
   Success Protect configuration protect-abc0123456789 has been created.
   ```

1. [Amazon SNS コンソール](https://console.aws.amazon.com/sns/home)にサインインします。

1. [**メッセージを発行**](sns-publishing.md)して、例えばインドなど、ブロックされている国のいずれかに送信します。

   メッセージが配信されないことを確認します。これは、[CloudWatch](sms_stats_cloudwatch.md) を使用して、配信失敗ログで確認できます。ロググループ **sns/region/AccountID/DirectPublishToPhoneNumber/Failure** で、次の例のようなレスポンスを検索します。

   ```
   {
   "notification": {
   "messageId": "bd59a509-XXXX-XXXX-82f8-fbdb8cb68217",
   "timestamp": "YYYY-MM-DD XX:XX:XX.XXXX“
   },
   "delivery": {
   "destination": "+91XXXXXXXXXX",
   "smsType": "Transactional",
   "providerResponse": "Cannot deliver message to the specified destination country",
   "dwellTimeMs": 85
   },
   "status": "FAILURE"
   }
   ```

# Amazon SNS 電話番号およびサブスクリプションを管理する
<a name="sms_manage"></a>

Amazon SNS には、アカウントから SMS メッセージを受信するユーザーを管理するためのオプションが複数用意されています。制限された頻度で、アカウントからの SMS メッセージの受信をオプトアウトした電話番号をオプトインできます。SMS サブスクリプションへのメッセージの送信を停止するために、それらに発行されるサブスクリプションやトピックを削除できます。

## SMS メッセージの受信をオプトアウトする
<a name="sms_manage_optout"></a>

現地の法律および規制により義務付けられている場合 (米国およびカナダなど)、SMS の受信者は、デバイスを利用して以下のいずれかのメッセージに返信することによって、オプトアウトできます。
+ ARRET (フランス語)
+ CANCEL
+ END
+ OPT-OUT
+ OPTOUT
+ QUIT
+ REMOVE
+ STOP
+ TD
+ UNSUBSCRIBE

オプトアウトするには、受信者は Amazon SNS がメッセージの配信に使用したものと同じ[送信元番号](https://docs.aws.amazon.com/sms-voice/latest/userguide/phone-numbers.html)に返信する必要があります。オプトアウトすると、電話番号をオプトイン AWS アカウント しない限り、受信者は から配信された SMS メッセージを受信しなくなります。

電話番号が Amazon SNS トピックにサブスクライブされると、オプトアウトはサブスクリプションを削除しませんが、電話番号をオプトインしない限り、SMS メッセージは、サブスクリプションへ送信できません。

## Amazon SNS コンソールを使用した電話番号とサブスクリプションの管理
<a name="sms_manage_console"></a>

Amazon SNS コンソールを使用して、アカウントで SMS メッセージを受信する電話番号を管理できます。

### Amazon SNS コンソールをオプトアウトした電話番号をオプトインする
<a name="sms_manage_optout_console"></a>

ユーザーのアカウントから SMS メッセージの受信をオプトアウトした電話番号を表示できます。これらの電話番号をオプトインして、メッセージの送信を再開することができます。

30 日に 1 回のみ、電話番号をオプトインできます。

1. [Amazon SNS コンソール](https://console.aws.amazon.com/sns/home)にサインインします。

1. コンソールメニューで、[SMS メッセージングをサポートしているリージョン](https://docs.aws.amazon.com/general/latest/gr/end-user-messaging.html)にリージョンセレクタを設定します。

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

1. **モバイルテキストメッセージ (SMS)** ページの**オプトアウト電話番号**セクションに、オプトアウトされた電話番号が表示されます。

1. オプトインする電話番号のチェックボックスをオンにして、**[オプトイン]** を選択します。電話番号はオプトアウトではなくなり、送信した SMS メッセージを受信します。

#### Amazon SNS コンソール SMS サブスクリプション削除
<a name="sms_manage_subscriptions_console"></a>

トピックにパブリッシュするときに、その電話番号への SMS メッセージの送信を停止するように SMS サブスクリプションを削除します。

1. ナビゲーションパネルで、[**サブスクリプション**] を選択します。

1. 削除するサブスクリプションのチェックボックスをオンにします。それから、[**アクション**] を選択して、[**アプリケーションの削除**] を選択します。

1. [**削除**] ウィンドウで、[**削除**] を選択します。Amazon SNS はサブスクリプションを削除し、成功のメッセージを表示します。

#### トピック削除 Amazon SNS コンソール
<a name="sms_manage_topic_console"></a>

サブスクライブしたエンドポイントにメッセージを発行しない場合トピックを削除します。

1. ナビゲーションパネルで、[**トピック**] を選択します。

1. 削除するトピックのチェックボックスをオンにします。[**アクション**] を選択してから、[**トピックの削除**] を選択します。

1. [**削除**] ウィンドウで、[**削除**] を選択します。Amazon SNS はトピックを削除し、成功のメッセージを表示します。

### AWS SDK を使用した電話番号とサブスクリプションの管理
<a name="sms_manage_sdk"></a>

 AWS SDKs を使用して Amazon SNS にプログラムでリクエストを行い、アカウントから SMS メッセージを受信できる電話番号を管理できます。

 AWS SDK を使用するには、認証情報を使用して設定する必要があります。詳細については、「*AWS SDK とツールのリファレンスガイド*」の「[共有ファイル config と credentials](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html)」を参照してください。

#### AWS SDK を使用してオプトアウトしたすべての電話番号を表示する
<a name="sms_view_optout_sdk"></a>

すべてのオプトアウトした電話番号を表示するには、Amazon SNS API を使用して、`ListPhoneNumbersOptedOut` リクエストを送信します。

次のサンプルコードは、`ListPhoneNumbersOptedOut` を使用する方法を説明しています。

------
#### [ CLI ]

**AWS CLI**  
**SMS メッセージのオプトアウトを一覧表示するには**  
次の `list-phone-numbers-opted-out` の例では、SMS メッセージの受信をオプトアウトした電話番号を一覧表示しています。  

```
aws sns list-phone-numbers-opted-out
```
出力:  

```
{
    "phoneNumbers": [
        "+15555550100"
    ]
}
```
+  API の詳細については、「*AWS CLI コマンドリファレンス*」の「[ListPhoneNumbersOptedOut](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sns/list-phone-numbers-opted-out.html)」を参照してください。

------
#### [ Java ]

**SDK for Java 2.x**  
 GitHub には、その他のリソースもあります。用例一覧を検索し、[AWS コード例リポジトリ](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javav2/example_code/sns#code-examples)での設定と実行の方法を確認してください。

```
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.sns.SnsClient;
import software.amazon.awssdk.services.sns.model.ListPhoneNumbersOptedOutRequest;
import software.amazon.awssdk.services.sns.model.ListPhoneNumbersOptedOutResponse;
import software.amazon.awssdk.services.sns.model.SnsException;

/**
 * Before running this Java V2 code example, set up your development
 * environment, including your credentials.
 *
 * For more information, see the following documentation topic:
 *
 * https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html
 */
public class ListOptOut {
    public static void main(String[] args) {
        SnsClient snsClient = SnsClient.builder()
                .region(Region.US_EAST_1)
                .build();

        listOpts(snsClient);
        snsClient.close();
    }

    public static void listOpts(SnsClient snsClient) {
        try {
            ListPhoneNumbersOptedOutRequest request = ListPhoneNumbersOptedOutRequest.builder().build();
            ListPhoneNumbersOptedOutResponse result = snsClient.listPhoneNumbersOptedOut(request);
            System.out.println("Status is " + result.sdkHttpResponse().statusCode() + "\n\nPhone Numbers: \n\n"
                    + result.phoneNumbers());

        } catch (SnsException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
    }
}
```
+  API の詳細については、*AWS SDK for Java 2.x API リファレンス*の「[ListPhoneNumbersOptedOut](https://docs.aws.amazon.com/goto/SdkForJavaV2/sns-2010-03-31/ListPhoneNumbersOptedOut)」を参照してください。

------
#### [ PHP ]

**SDK for PHP**  
 GitHub には、その他のリソースもあります。用例一覧を検索し、[AWS コード例リポジトリ](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code/sns#code-examples)での設定と実行の方法を確認してください。

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;


/**
 * Returns a list of phone numbers that are opted out of receiving SMS messages from your AWS SNS account.
 *
 * This code expects that you have AWS credentials set up per:
 * https://docs.aws.amazon.com/sdk-for-php/v3/developer-guide/guide_credentials.html
 */

$SnSclient = new SnsClient([
    'profile' => 'default',
    'region' => 'us-east-1',
    'version' => '2010-03-31'
]);

try {
    $result = $SnSclient->listPhoneNumbersOptedOut();
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```
+  詳細については、「[AWS SDK for PHP デベロッパーガイド](https://docs.aws.amazon.com/sdk-for-php/v3/developer-guide/sns-examples-sending-sms.html#list-opted-out-phone-numbers)」を参照してください。
+  API の詳細については、*AWS SDK for PHP API リファレンス*の「[ListPhoneNumbersOptedOut](https://docs.aws.amazon.com/goto/SdkForPHPV3/sns-2010-03-31/ListPhoneNumbersOptedOut)」を参照してください。

------

#### AWS SDK を使用して電話番号がオプトアウトされているかどうかを確認する
<a name="sms_check_optout_sdk"></a>

電話番号がオプトアウトしているかどうかを確認するには、Amazon SNS API を使用して、`CheckIfPhoneNumberIsOptedOut` リクエストを送信します。

次のサンプルコードは、`CheckIfPhoneNumberIsOptedOut` を使用する方法を説明しています。

------
#### [ .NET ]

**SDK for .NET**  
 GitHub には、その他のリソースもあります。用例一覧を検索し、[AWS コード例リポジトリ](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/dotnetv3/SNS#code-examples)での設定と実行の方法を確認してください。

```
    using System;
    using System.Threading.Tasks;
    using Amazon.SimpleNotificationService;
    using Amazon.SimpleNotificationService.Model;

    /// <summary>
    /// This example shows how to use the Amazon Simple Notification Service
    /// (Amazon SNS) to check whether a phone number has been opted out.
    /// </summary>
    public class IsPhoneNumOptedOut
    {
        public static async Task Main()
        {
            string phoneNumber = "+15551112222";

            IAmazonSimpleNotificationService client = new AmazonSimpleNotificationServiceClient();

            await CheckIfOptedOutAsync(client, phoneNumber);
        }

        /// <summary>
        /// Checks to see if the supplied phone number has been opted out.
        /// </summary>
        /// <param name="client">The initialized Amazon SNS Client object used
        /// to check if the phone number has been opted out.</param>
        /// <param name="phoneNumber">A string representing the phone number
        /// to check.</param>
        public static async Task CheckIfOptedOutAsync(IAmazonSimpleNotificationService client, string phoneNumber)
        {
            var request = new CheckIfPhoneNumberIsOptedOutRequest
            {
                PhoneNumber = phoneNumber,
            };

            try
            {
                var response = await client.CheckIfPhoneNumberIsOptedOutAsync(request);

                if (response.HttpStatusCode == System.Net.HttpStatusCode.OK)
                {
                    string optOutStatus = response.IsOptedOut ? "opted out" : "not opted out.";
                    Console.WriteLine($"The phone number: {phoneNumber} is {optOutStatus}");
                }
            }
            catch (AuthorizationErrorException ex)
            {
                Console.WriteLine($"{ex.Message}");
            }
        }
    }
```
+  API の詳細については、*AWS SDK for .NET API リファレンス*の 「[CheckIfPhoneNumberIsOptedOut](https://docs.aws.amazon.com/goto/DotNetSDKV3/sns-2010-03-31/CheckIfPhoneNumberIsOptedOut)」を参照してください。

------
#### [ CLI ]

**AWS CLI**  
**電話番号での SMS メッセージのオプトアウトを確認するには**  
次の の`check-if-phone-number-is-opted-out`例では、指定された電話番号が現在の AWS アカウントからの SMS メッセージの受信をオプトアウトされているかどうかを確認します。  

```
aws sns check-if-phone-number-is-opted-out \
    --phone-number +1555550100
```
出力:  

```
{
    "isOptedOut": false
}
```
+  API の詳細については、「*AWS CLI コマンドリファレンス*」の「[CheckIfPhoneNumberIsOptedOut](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sns/check-if-phone-number-is-opted-out.html)」を参照してください。

------
#### [ Java ]

**SDK for Java 2.x**  
 GitHub には、その他のリソースもあります。用例一覧を検索し、[AWS コード例リポジトリ](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javav2/example_code/sns#code-examples)での設定と実行の方法を確認してください。

```
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.sns.SnsClient;
import software.amazon.awssdk.services.sns.model.CheckIfPhoneNumberIsOptedOutRequest;
import software.amazon.awssdk.services.sns.model.CheckIfPhoneNumberIsOptedOutResponse;
import software.amazon.awssdk.services.sns.model.SnsException;

/**
 * Before running this Java V2 code example, set up your development
 * environment, including your credentials.
 *
 * For more information, see the following documentation topic:
 *
 * https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html
 */
public class CheckOptOut {
    public static void main(String[] args) {

        final String usage = """

                Usage:    <phoneNumber>

                Where:
                   phoneNumber - The mobile phone number to look up (for example, +1XXX5550100).

                """;

        if (args.length != 1) {
            System.out.println(usage);
            System.exit(1);
        }

        String phoneNumber = args[0];
        SnsClient snsClient = SnsClient.builder()
                .region(Region.US_EAST_1)
                .build();

        checkPhone(snsClient, phoneNumber);
        snsClient.close();
    }

    public static void checkPhone(SnsClient snsClient, String phoneNumber) {
        try {
            CheckIfPhoneNumberIsOptedOutRequest request = CheckIfPhoneNumberIsOptedOutRequest.builder()
                    .phoneNumber(phoneNumber)
                    .build();

            CheckIfPhoneNumberIsOptedOutResponse result = snsClient.checkIfPhoneNumberIsOptedOut(request);
            System.out.println(
                    result.isOptedOut() + "Phone Number " + phoneNumber + " has Opted Out of receiving sns messages." +
                            "\n\nStatus was " + result.sdkHttpResponse().statusCode());

        } catch (SnsException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
    }
}
```
+  API の詳細については、*AWS SDK for Java 2.x API リファレンス*の「[CheckIfPhoneNumberIsOptedOut](https://docs.aws.amazon.com/goto/SdkForJavaV2/sns-2010-03-31/CheckIfPhoneNumberIsOptedOut)」を参照してください。

------
#### [ JavaScript ]

**SDK for JavaScript (v3)**  
 GitHub には、その他のリソースもあります。用例一覧を検索し、[AWS コード例リポジトリ](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javascriptv3/example_code/sns#code-examples)での設定と実行の方法を確認してください。
別のモジュールでクライアントを作成し、エクスポートします。  

```
import { SNSClient } from "@aws-sdk/client-sns";

// The AWS Region can be provided here using the `region` property. If you leave it blank
// the SDK will default to the region set in your AWS config.
export const snsClient = new SNSClient({});
```
SDK モジュールとクライアントモジュールをインポートし、API を呼び出します。  

```
import { CheckIfPhoneNumberIsOptedOutCommand } from "@aws-sdk/client-sns";

import { snsClient } from "../libs/snsClient.js";

export const checkIfPhoneNumberIsOptedOut = async (
  phoneNumber = "5555555555",
) => {
  const command = new CheckIfPhoneNumberIsOptedOutCommand({
    phoneNumber,
  });

  const response = await snsClient.send(command);
  console.log(response);
  // {
  //   '$metadata': {
  //     httpStatusCode: 200,
  //     requestId: '3341c28a-cdc8-5b39-a3ee-9fb0ee125732',
  //     extendedRequestId: undefined,
  //     cfId: undefined,
  //     attempts: 1,
  //     totalRetryDelay: 0
  //   },
  //   isOptedOut: false
  // }
  return response;
};
```
+  詳細については、「[AWS SDK for JavaScript デベロッパーガイド](https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/sns-examples-sending-sms.html#sending-sms-checkifphonenumberisoptedout)」を参照してください。
+  API の詳細については、*AWS SDK for JavaScript API リファレンス*の [CheckIfPhoneNumberIsOptedOut](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/sns/command/CheckIfPhoneNumberIsOptedOutCommand) を参照してください。

------
#### [ PHP ]

**SDK for PHP**  
 GitHub には、その他のリソースもあります。用例一覧を検索し、[AWS コード例リポジトリ](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code/sns#code-examples)での設定と実行の方法を確認してください。

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;


/**
 * Indicates whether the phone number owner has opted out of receiving SMS messages from your AWS SNS account.
 *
 * This code expects that you have AWS credentials set up per:
 * https://docs.aws.amazon.com/sdk-for-php/v3/developer-guide/guide_credentials.html
 */

$SnSclient = new SnsClient([
    'profile' => 'default',
    'region' => 'us-east-1',
    'version' => '2010-03-31'
]);

$phone = '+1XXX5550100';

try {
    $result = $SnSclient->checkIfPhoneNumberIsOptedOut([
        'phoneNumber' => $phone,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```
+  詳細については、「[AWS SDK for PHP デベロッパーガイド](https://docs.aws.amazon.com/sdk-for-php/v3/developer-guide/sns-examples-sending-sms.html#check-if-a-phone-number-has-opted-out)」を参照してください。
+  API の詳細については、*AWS SDK for PHP API リファレンス*の [CheckIfPhoneNumberIsOptedOut](https://docs.aws.amazon.com/goto/SdkForPHPV3/sns-2010-03-31/CheckIfPhoneNumberIsOptedOut) を参照してください。

------

#### Amazon SNS API を使用してオプトアウトされた電話番号をオプトインする
<a name="sms_manage_optin_sdk"></a>

電話番号をオプトインするには、Amazon SNS API を使用して、`OptInPhoneNumber` リクエストを送信します。

30 日に 1 回のみ、電話番号をオプトインできます。

#### AWS SDK を使用した SMS サブスクリプションの削除
<a name="sms_manage_subscriptions_sdk"></a>

Amazon SNS トピックからの SMS サブスクリプションを削除するには、Amazon SNS API を使用して `ListSubscriptions` リクエストを送信することにより、サブスクリプション ARN を取得し、次に、その ARN を `Unsubscribe` リクエストに渡します。

次のサンプルコードは、`Unsubscribe` を使用する方法を説明しています。

------
#### [ .NET ]

**SDK for .NET**  
 GitHub には、その他のリソースもあります。用例一覧を検索し、[AWS コード例リポジトリ](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/dotnetv3/cross-service/TopicsAndQueues#code-examples)での設定と実行の方法を確認してください。
サブスクリプション ARN でトピックからサブスクライブを解除します。  

```
    /// <summary>
    /// Unsubscribe from a topic by a subscription ARN.
    /// </summary>
    /// <param name="subscriptionArn">The ARN of the subscription.</param>
    /// <returns>True if successful.</returns>
    public async Task<bool> UnsubscribeByArn(string subscriptionArn)
    {
        var unsubscribeResponse = await _amazonSNSClient.UnsubscribeAsync(
            new UnsubscribeRequest()
            {
                SubscriptionArn = subscriptionArn
            });
        return unsubscribeResponse.HttpStatusCode == HttpStatusCode.OK;
    }
```
+  API の詳細については、「*AWS SDK for .NET API リファレンス*」の「[Unsubscribe](https://docs.aws.amazon.com/goto/DotNetSDKV3/sns-2010-03-31/Unsubscribe)」を参照してください。

------
#### [ C\$1\$1 ]

**SDK for C\$1\$1**  
 GitHub には、その他のリソースもあります。用例一覧を検索し、[AWS コード例リポジトリ](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/cpp/example_code/sns#code-examples)での設定と実行の方法を確認してください。

```
//! Delete a subscription to an Amazon Simple Notification Service (Amazon SNS) topic.
/*!
  \param subscriptionARN: The Amazon Resource Name (ARN) for an Amazon SNS topic subscription.
  \param clientConfiguration: AWS client configuration.
  \return bool: Function succeeded.
 */
bool AwsDoc::SNS::unsubscribe(const Aws::String &subscriptionARN,
                              const Aws::Client::ClientConfiguration &clientConfiguration) {
    Aws::SNS::SNSClient snsClient(clientConfiguration);

    Aws::SNS::Model::UnsubscribeRequest request;
    request.SetSubscriptionArn(subscriptionARN);

    const Aws::SNS::Model::UnsubscribeOutcome outcome = snsClient.Unsubscribe(request);

    if (outcome.IsSuccess()) {
        std::cout << "Unsubscribed successfully " << std::endl;
    }
    else {
        std::cerr << "Error while unsubscribing " << outcome.GetError().GetMessage()
                  << std::endl;
    }

    return outcome.IsSuccess();
}
```
+  API の詳細については、*AWS SDK for C\$1\$1 API リファレンス*の「[Unsubscribe](https://docs.aws.amazon.com/goto/SdkForCpp/sns-2010-03-31/Unsubscribe)」を参照してください。

------
#### [ CLI ]

**AWS CLI**  
**トピックからサブスクライブを解除するには**  
次の `unsubscribe` の例では、指定したサブスクリプションをトピックから削除します。  

```
aws sns unsubscribe \
    --subscription-arn arn:aws:sns:us-west-2:0123456789012:my-topic:8a21d249-4329-4871-acc6-7be709c6ea7f
```
このコマンドでは何も出力されません。  
+  API の詳細については、「*AWS CLI コマンドリファレンス*」の「[Unsubscribe](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sns/unsubscribe.html)」を参照してください。

------
#### [ Java ]

**SDK for Java 2.x**  
 GitHub には、その他のリソースもあります。用例一覧を検索し、[AWS コード例リポジトリ](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javav2/example_code/sns#code-examples)での設定と実行の方法を確認してください。

```
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.sns.SnsClient;
import software.amazon.awssdk.services.sns.model.SnsException;
import software.amazon.awssdk.services.sns.model.UnsubscribeRequest;
import software.amazon.awssdk.services.sns.model.UnsubscribeResponse;

/**
 * Before running this Java V2 code example, set up your development
 * environment, including your credentials.
 *
 * For more information, see the following documentation topic:
 *
 * https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html
 */
public class Unsubscribe {
    public static void main(String[] args) {
        final String usage = """

                Usage:    <subscriptionArn>

                Where:
                   subscriptionArn - The ARN of the subscription to delete.
                """;

        if (args.length < 1) {
            System.out.println(usage);
            System.exit(1);
        }

        String subscriptionArn = args[0];
        SnsClient snsClient = SnsClient.builder()
                .region(Region.US_EAST_1)
                .build();

        unSub(snsClient, subscriptionArn);
        snsClient.close();
    }

    public static void unSub(SnsClient snsClient, String subscriptionArn) {
        try {
            UnsubscribeRequest request = UnsubscribeRequest.builder()
                    .subscriptionArn(subscriptionArn)
                    .build();

            UnsubscribeResponse result = snsClient.unsubscribe(request);
            System.out.println("\n\nStatus was " + result.sdkHttpResponse().statusCode()
                    + "\n\nSubscription was removed for " + request.subscriptionArn());

        } catch (SnsException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
    }
}
```
+  API の詳細については、*AWS SDK for Java 2.x API リファレンス*の「[Unsubscribe](https://docs.aws.amazon.com/goto/SdkForJavaV2/sns-2010-03-31/Unsubscribe)」を参照してください。

------
#### [ JavaScript ]

**SDK for JavaScript (v3)**  
 GitHub には、その他のリソースもあります。用例一覧を検索し、[AWS コード例リポジトリ](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javascriptv3/example_code/sns#code-examples)での設定と実行の方法を確認してください。
別のモジュールでクライアントを作成し、エクスポートします。  

```
import { SNSClient } from "@aws-sdk/client-sns";

// The AWS Region can be provided here using the `region` property. If you leave it blank
// the SDK will default to the region set in your AWS config.
export const snsClient = new SNSClient({});
```
SDK モジュールとクライアントモジュールをインポートし、API を呼び出します。  

```
import { UnsubscribeCommand } from "@aws-sdk/client-sns";
import { snsClient } from "../libs/snsClient.js";

/**
 * @param {string} subscriptionArn - The ARN of the subscription to cancel.
 */
const unsubscribe = async (
  subscriptionArn = "arn:aws:sns:us-east-1:xxxxxxxxxxxx:mytopic:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
) => {
  const response = await snsClient.send(
    new UnsubscribeCommand({
      SubscriptionArn: subscriptionArn,
    }),
  );
  console.log(response);
  // {
  //   '$metadata': {
  //     httpStatusCode: 200,
  //     requestId: '0178259a-9204-507c-b620-78a7570a44c6',
  //     extendedRequestId: undefined,
  //     cfId: undefined,
  //     attempts: 1,
  //     totalRetryDelay: 0
  //   }
  // }
  return response;
};
```
+  詳細については、「[AWS SDK for JavaScript デベロッパーガイド](https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/sns-examples-managing-topics.html#sns-examples-unsubscribing)」を参照してください。
+  API の詳細については、*AWS SDK for JavaScript API リファレンス*の「[Unsubscribe](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/sns/command/UnsubscribeCommand)」を参照してください。

------
#### [ Kotlin ]

**SDK for Kotlin**  
 GitHub には、その他のリソースもあります。用例一覧を検索し、[AWS コード例リポジトリ](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/kotlin/services/sns#code-examples)での設定と実行の方法を確認してください。

```
suspend fun unSub(subscriptionArnVal: String) {
    val request =
        UnsubscribeRequest {
            subscriptionArn = subscriptionArnVal
        }

    SnsClient.fromEnvironment { region = "us-east-1" }.use { snsClient ->
        snsClient.unsubscribe(request)
        println("Subscription was removed for ${request.subscriptionArn}")
    }
}
```
+  API の詳細については、*AWS SDK for Kotlin API リファレンス*の「[Unsubscribe](https://sdk.amazonaws.com/kotlin/api/latest/index.html)」を参照してください。

------
#### [ PHP ]

**SDK for PHP**  
 GitHub には、その他のリソースもあります。用例一覧を検索し、[AWS コード例リポジトリ](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code/sns#code-examples)での設定と実行の方法を確認してください。

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;


/**
 * Deletes a subscription to an Amazon SNS topic.
 *
 * This code expects that you have AWS credentials set up per:
 * https://docs.aws.amazon.com/sdk-for-php/v3/developer-guide/guide_credentials.html
 */

$SnSclient = new SnsClient([
    'profile' => 'default',
    'region' => 'us-east-1',
    'version' => '2010-03-31'
]);

$subscription = 'arn:aws:sns:us-east-1:111122223333:MySubscription';

try {
    $result = $SnSclient->unsubscribe([
        'SubscriptionArn' => $subscription,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```
+  詳細については、「[AWS SDK for PHP デベロッパーガイド](https://docs.aws.amazon.com/sdk-for-php/v3/developer-guide/sns-examples-subscribing-unsubscribing-topics.html#unsubscribe-from-a-topic)」を参照してください。
+  API の詳細については、*AWS SDK for PHP API リファレンス*の「[Unsubscribe](https://docs.aws.amazon.com/goto/SdkForPHPV3/sns-2010-03-31/Unsubscribe)」を参照してください。

------
#### [ Python ]

**SDK for Python (Boto3)**  
 GitHub には、その他のリソースもあります。用例一覧を検索し、[AWS コード例リポジトリ](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/python/example_code/sns#code-examples)での設定と実行の方法を確認してください。

```
class SnsWrapper:
    """Encapsulates Amazon SNS topic and subscription functions."""

    def __init__(self, sns_resource):
        """
        :param sns_resource: A Boto3 Amazon SNS resource.
        """
        self.sns_resource = sns_resource


    @staticmethod
    def delete_subscription(subscription):
        """
        Unsubscribes and deletes a subscription.
        """
        try:
            subscription.delete()
            logger.info("Deleted subscription %s.", subscription.arn)
        except ClientError:
            logger.exception("Couldn't delete subscription %s.", subscription.arn)
            raise
```

```
class SnsWrapper:
    """Wrapper class for managing Amazon SNS operations."""

    def __init__(self, sns_client: Any) -> None:
        """
        Initialize the SnsWrapper.

        :param sns_client: A Boto3 Amazon SNS client.
        """
        self.sns_client = sns_client

    @classmethod
    def from_client(cls) -> 'SnsWrapper':
        """
        Create an SnsWrapper instance using a default boto3 client.

        :return: An instance of this class.
        """
        sns_client = boto3.client('sns')
        return cls(sns_client)


    def unsubscribe(self, subscription_arn: str) -> bool:
        """
        Unsubscribe from an SNS topic.

        :param subscription_arn: The ARN of the subscription to remove.
        :return: True if successful.
        :raises ClientError: If the unsubscribe operation fails.
        """
        try:
            self.sns_client.unsubscribe(SubscriptionArn=subscription_arn)
            
            logger.info(f"Unsubscribed: {subscription_arn}")
            return True

        except ClientError as e:
            error_code = e.response.get('Error', {}).get('Code', 'Unknown')
            
            if error_code == 'NotFound':
                logger.warning(f"Subscription not found: {subscription_arn}")
                return True  # Already unsubscribed
            else:
                logger.error(f"Error unsubscribing: {error_code} - {e}")
                raise
```
+  API の詳細については、*AWS SDK for Python (Boto3) API リファレンス*の「[Unsubscribe](https://docs.aws.amazon.com/goto/boto3/sns-2010-03-31/Unsubscribe)」を参照してください。

------
#### [ SAP ABAP ]

**SDK for SAP ABAP**  
 GitHub には、その他のリソースもあります。用例一覧を検索し、[AWS コード例リポジトリ](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/sap-abap/services/sns#code-examples)での設定と実行の方法を確認してください。

```
    TRY.
        lo_sns->unsubscribe( iv_subscriptionarn = iv_subscription_arn ).
        MESSAGE 'Subscription deleted.' TYPE 'I'.
      CATCH /aws1/cx_snsnotfoundexception.
        MESSAGE 'Subscription does not exist.' TYPE 'E'.
      CATCH /aws1/cx_snsinvalidparameterex.
        MESSAGE 'Subscription with "PendingConfirmation" status cannot be deleted/unsubscribed. Confirm subscription before performing unsubscribe operation.' TYPE 'E'.
    ENDTRY.
```
+  API の詳細については、**「AWS SDK for SAP ABAP API リファレンス」の「[Unsubscribe](https://docs.aws.amazon.com/sdk-for-sap-abap/v1/api/latest/index.html)」を参照してください。

------
#### [ Swift ]

**SDK for Swift**  
 GitHub には、その他のリソースもあります。用例一覧を検索し、[AWS コード例リポジトリ](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/swift/example_code/sns#code-examples)での設定と実行の方法を確認してください。

```
import AWSSNS

        let config = try await SNSClient.SNSClientConfiguration(region: region)
        let snsClient = SNSClient(config: config)

        _ = try await snsClient.unsubscribe(
            input: UnsubscribeInput(
                subscriptionArn: arn
            )
        )

        print("Unsubscribed.")
```
+  API の詳細については、「*AWS SDK for Swift API リファレンス*」の「[Unsubscribe](https://sdk.amazonaws.com/swift/api/awssns/latest/documentation/awssns/snsclient/unsubscribe(input:))」を参照してください。

------

#### AWS SDK を使用してトピックを削除する
<a name="sms_manage_topic_sdk"></a>

トピックとサブスクリプションすべてを削除するには、Amazon SNS API を使用して `ListTopics` リクエストを送信することでトピック ARN を取得し、次に、その ARN を `DeleteTopic` リクエストに渡します。

次のサンプルコードは、`DeleteTopic` を使用する方法を説明しています。

------
#### [ .NET ]

**SDK for .NET**  
 GitHub には、その他のリソースもあります。用例一覧を検索し、[AWS コード例リポジトリ](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/dotnetv3/cross-service/TopicsAndQueues#code-examples)での設定と実行の方法を確認してください。
トピック ARN でトピックを削除します。  

```
    /// <summary>
    /// Delete a topic by its topic ARN.
    /// </summary>
    /// <param name="topicArn">The ARN of the topic.</param>
    /// <returns>True if successful.</returns>
    public async Task<bool> DeleteTopicByArn(string topicArn)
    {
        var deleteResponse = await _amazonSNSClient.DeleteTopicAsync(
            new DeleteTopicRequest()
            {
                TopicArn = topicArn
            });
        return deleteResponse.HttpStatusCode == HttpStatusCode.OK;
    }
```
+  API の詳細については、「*AWS SDK for .NET API リファレンス*」の「[DeleteTopic](https://docs.aws.amazon.com/goto/DotNetSDKV3/sns-2010-03-31/DeleteTopic)」を参照してください。

------
#### [ C\$1\$1 ]

**SDK for C\$1\$1**  
 GitHub には、その他のリソースもあります。用例一覧を検索し、[AWS コード例リポジトリ](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/cpp/example_code/sns#code-examples)での設定と実行の方法を確認してください。

```
//! Delete an Amazon Simple Notification Service (Amazon SNS) topic.
/*!
  \param topicARN: The Amazon Resource Name (ARN) for an Amazon SNS topic.
  \param clientConfiguration: AWS client configuration.
  \return bool: Function succeeded.
 */
bool AwsDoc::SNS::deleteTopic(const Aws::String &topicARN,
                              const Aws::Client::ClientConfiguration &clientConfiguration) {
    Aws::SNS::SNSClient snsClient(clientConfiguration);

    Aws::SNS::Model::DeleteTopicRequest request;
    request.SetTopicArn(topicARN);

    const Aws::SNS::Model::DeleteTopicOutcome outcome = snsClient.DeleteTopic(request);

    if (outcome.IsSuccess()) {
        std::cout << "Successfully deleted the Amazon SNS topic " << topicARN << std::endl;
    }
    else {
        std::cerr << "Error deleting topic " << topicARN << ":" <<
                  outcome.GetError().GetMessage() << std::endl;
    }

    return outcome.IsSuccess();
}
```
+  API の詳細については、*AWS SDK for C\$1\$1 API リファレンス*の「[DeleteTopic](https://docs.aws.amazon.com/goto/SdkForCpp/sns-2010-03-31/DeleteTopic)」を参照してください。

------
#### [ CLI ]

**AWS CLI**  
**SNS トピックを削除するには**  
次の `delete-topic` の例では、指定した SNS トピックを削除します。  

```
aws sns delete-topic \
    --topic-arn "arn:aws:sns:us-west-2:123456789012:my-topic"
```
このコマンドでは何も出力されません。  
+  API の詳細については、「*AWS CLI コマンドリファレンス*」の「[DeleteTopic](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sns/delete-topic.html)」を参照してください。

------
#### [ Go ]

**SDK for Go V2**  
 GitHub には、その他のリソースもあります。用例一覧を検索し、[AWS コード例リポジトリ](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/gov2/workflows/topics_and_queues#code-examples)での設定と実行の方法を確認してください。

```
import (
	"context"
	"encoding/json"
	"log"

	"github.com/aws/aws-sdk-go-v2/aws"
	"github.com/aws/aws-sdk-go-v2/service/sns"
	"github.com/aws/aws-sdk-go-v2/service/sns/types"
)

// SnsActions encapsulates the Amazon Simple Notification Service (Amazon SNS) actions
// used in the examples.
type SnsActions struct {
	SnsClient *sns.Client
}



// DeleteTopic delete an Amazon SNS topic.
func (actor SnsActions) DeleteTopic(ctx context.Context, topicArn string) error {
	_, err := actor.SnsClient.DeleteTopic(ctx, &sns.DeleteTopicInput{
		TopicArn: aws.String(topicArn)})
	if err != nil {
		log.Printf("Couldn't delete topic %v. Here's why: %v\n", topicArn, err)
	}
	return err
}
```
+  API の詳細については、*AWS SDK for Go API リファレンス*の「[DeleteTopic](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/sns#Client.DeleteTopic)」を参照してください。

------
#### [ Java ]

**SDK for Java 2.x**  
 GitHub には、その他のリソースもあります。用例一覧を検索し、[AWS コード例リポジトリ](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javav2/example_code/sns#code-examples)での設定と実行の方法を確認してください。

```
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.sns.SnsClient;
import software.amazon.awssdk.services.sns.model.DeleteTopicRequest;
import software.amazon.awssdk.services.sns.model.DeleteTopicResponse;
import software.amazon.awssdk.services.sns.model.SnsException;

/**
 * Before running this Java V2 code example, set up your development
 * environment, including your credentials.
 *
 * For more information, see the following documentation topic:
 *
 * https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html
 */
public class DeleteTopic {
    public static void main(String[] args) {
        final String usage = """

                Usage:     <topicArn>

                Where:
                   topicArn - The ARN of the topic to delete.
                """;

        if (args.length != 1) {
            System.out.println(usage);
            System.exit(1);
        }

        String topicArn = args[0];
        SnsClient snsClient = SnsClient.builder()
                .region(Region.US_EAST_1)
                .build();

        System.out.println("Deleting a topic with name: " + topicArn);
        deleteSNSTopic(snsClient, topicArn);
        snsClient.close();
    }

    public static void deleteSNSTopic(SnsClient snsClient, String topicArn) {
        try {
            DeleteTopicRequest request = DeleteTopicRequest.builder()
                    .topicArn(topicArn)
                    .build();

            DeleteTopicResponse result = snsClient.deleteTopic(request);
            System.out.println("\n\nStatus was " + result.sdkHttpResponse().statusCode());

        } catch (SnsException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
    }
}
```
+  API の詳細については、*AWS SDK for Java 2.x API リファレンス*の「[DeleteTopic](https://docs.aws.amazon.com/goto/SdkForJavaV2/sns-2010-03-31/DeleteTopic)」を参照してください。

------
#### [ JavaScript ]

**SDK for JavaScript (v3)**  
 GitHub には、その他のリソースもあります。用例一覧を検索し、[AWS コード例リポジトリ](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javascriptv3/example_code/sns#code-examples)での設定と実行の方法を確認してください。
別のモジュールでクライアントを作成し、エクスポートします。  

```
import { SNSClient } from "@aws-sdk/client-sns";

// The AWS Region can be provided here using the `region` property. If you leave it blank
// the SDK will default to the region set in your AWS config.
export const snsClient = new SNSClient({});
```
SDK モジュールとクライアントモジュールをインポートし、API を呼び出します。  

```
import { DeleteTopicCommand } from "@aws-sdk/client-sns";
import { snsClient } from "../libs/snsClient.js";

/**
 * @param {string} topicArn - The ARN of the topic to delete.
 */
export const deleteTopic = async (topicArn = "TOPIC_ARN") => {
  const response = await snsClient.send(
    new DeleteTopicCommand({ TopicArn: topicArn }),
  );
  console.log(response);
  // {
  //   '$metadata': {
  //     httpStatusCode: 200,
  //     requestId: 'a10e2886-5a8f-5114-af36-75bd39498332',
  //     extendedRequestId: undefined,
  //     cfId: undefined,
  //     attempts: 1,
  //     totalRetryDelay: 0
  //   }
  // }
};
```
+  詳細については、「[AWS SDK for JavaScript デベロッパーガイド](https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/sns-examples-managing-topics.html#sns-examples-managing-topics-deletetopic)」を参照してください。
+  API の詳細については、*AWS SDK for JavaScript API リファレンス*の「[DeleteTopic](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/sns/command/DeleteTopicCommand)」を参照してください。

------
#### [ Kotlin ]

**SDK for Kotlin**  
 GitHub には、その他のリソースもあります。用例一覧を検索し、[AWS コード例リポジトリ](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/kotlin/services/sns#code-examples)での設定と実行の方法を確認してください。

```
suspend fun deleteSNSTopic(topicArnVal: String) {
    val request =
        DeleteTopicRequest {
            topicArn = topicArnVal
        }

    SnsClient.fromEnvironment { region = "us-east-1" }.use { snsClient ->
        snsClient.deleteTopic(request)
        println("$topicArnVal was successfully deleted.")
    }
}
```
+  API の詳細については、*AWS SDK for Kotlin API リファレンス*の「[DeleteTopic](https://sdk.amazonaws.com/kotlin/api/latest/index.html)」を参照してください。

------
#### [ PHP ]

**SDK for PHP**  
 GitHub には、その他のリソースもあります。用例一覧を検索し、[AWS コード例リポジトリ](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code/sns#code-examples)での設定と実行の方法を確認してください。

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;


/**
 * Deletes an SNS topic and all its subscriptions.
 *
 * This code expects that you have AWS credentials set up per:
 * https://docs.aws.amazon.com/sdk-for-php/v3/developer-guide/guide_credentials.html
 */

$SnSclient = new SnsClient([
    'profile' => 'default',
    'region' => 'us-east-1',
    'version' => '2010-03-31'
]);

$topic = 'arn:aws:sns:us-east-1:111122223333:MyTopic';

try {
    $result = $SnSclient->deleteTopic([
        'TopicArn' => $topic,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```
+  API の詳細については、*AWS SDK for PHP API リファレンス*の「[DeleteTopic](https://docs.aws.amazon.com/goto/SdkForPHPV3/sns-2010-03-31/DeleteTopic)」を参照してください。

------
#### [ Python ]

**SDK for Python (Boto3)**  
 GitHub には、その他のリソースもあります。用例一覧を検索し、[AWS コード例リポジトリ](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/python/example_code/sns#code-examples)での設定と実行の方法を確認してください。

```
class SnsWrapper:
    """Encapsulates Amazon SNS topic and subscription functions."""

    def __init__(self, sns_resource):
        """
        :param sns_resource: A Boto3 Amazon SNS resource.
        """
        self.sns_resource = sns_resource


    @staticmethod
    def delete_topic(topic):
        """
        Deletes a topic. All subscriptions to the topic are also deleted.
        """
        try:
            topic.delete()
            logger.info("Deleted topic %s.", topic.arn)
        except ClientError:
            logger.exception("Couldn't delete topic %s.", topic.arn)
            raise
```

```
class SnsWrapper:
    """Wrapper class for managing Amazon SNS operations."""

    def __init__(self, sns_client: Any) -> None:
        """
        Initialize the SnsWrapper.

        :param sns_client: A Boto3 Amazon SNS client.
        """
        self.sns_client = sns_client

    @classmethod
    def from_client(cls) -> 'SnsWrapper':
        """
        Create an SnsWrapper instance using a default boto3 client.

        :return: An instance of this class.
        """
        sns_client = boto3.client('sns')
        return cls(sns_client)


    def delete_topic(self, topic_arn: str) -> bool:
        """
        Delete an SNS topic.

        :param topic_arn: The ARN of the topic to delete.
        :return: True if successful.
        :raises ClientError: If the topic deletion fails.
        """
        try:
            self.sns_client.delete_topic(TopicArn=topic_arn)
            
            logger.info(f"Deleted topic: {topic_arn}")
            return True

        except ClientError as e:
            error_code = e.response.get('Error', {}).get('Code', 'Unknown')
            
            if error_code == 'NotFound':
                logger.warning(f"Topic not found: {topic_arn}")
                return True  # Already deleted
            else:
                logger.error(f"Error deleting topic: {error_code} - {e}")
                raise
```
+  API の詳細については、*AWS SDK for Python (Boto3) API リファレンス*の「[DeleteTopic](https://docs.aws.amazon.com/goto/boto3/sns-2010-03-31/DeleteTopic)」を参照してください。

------
#### [ SAP ABAP ]

**SDK for SAP ABAP**  
 GitHub には、その他のリソースもあります。用例一覧を検索し、[AWS コード例リポジトリ](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/sap-abap/services/sns#code-examples)での設定と実行の方法を確認してください。

```
    TRY.
        lo_sns->deletetopic( iv_topicarn = iv_topic_arn ).
        MESSAGE 'SNS topic deleted.' TYPE 'I'.
      CATCH /aws1/cx_snsnotfoundexception.
        MESSAGE 'Topic does not exist.' TYPE 'E'.
    ENDTRY.
```
+  API の詳細については、*AWS SDK for SAP ABAP API リファレンス*の「[DeleteTopic](https://docs.aws.amazon.com/sdk-for-sap-abap/v1/api/latest/index.html)」を参照してください。

------
#### [ Swift ]

**SDK for Swift**  
 GitHub には、その他のリソースもあります。用例一覧を検索し、[AWS コード例リポジトリ](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/swift/example_code/sns#code-examples)での設定と実行の方法を確認してください。

```
import AWSSNS

        let config = try await SNSClient.SNSClientConfiguration(region: region)
        let snsClient = SNSClient(config: config)

        _ = try await snsClient.deleteTopic(
            input: DeleteTopicInput(topicArn: arn)
        )
```
+  API の詳細については、「*AWS SDK for Swift API リファレンス*」の「[DeleteTopic](https://sdk.amazonaws.com/swift/api/awssns/latest/documentation/awssns/snsclient/deletetopic(input:))」を参照してください。

------

# Amazon SNS SMS アクティビティモニタリング
<a name="sms_stats"></a>

SMS をモニタリングすることによって、送信先の電話番号、正常または失敗した配信、失敗の原因、コスト、およびその他の情報を追跡できます。Amazon SNS は、コンソールで統計をまとめ、Amazon CloudWatch に情報を送信し、指定した Amazon S3 バケットに SMS の毎日の使用状況レポートを送信します。

# Amazon SNS SMS 配信統計を表示する
<a name="sms_stats_console"></a>

最新の SMS 配信に関する統計を表示するために Amazon SNS コンソールを使用できます。

1. [Amazon SNS コンソール](https://console.aws.amazon.com/sns/home)にサインインします。

1. コンソールメニューで、[SMS メッセージングをサポートしているリージョン](https://docs.aws.amazon.com/sms-voice/latest/userguide/phone-numbers-sms-by-country.html)にリージョンセレクタを設定します。

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

1. [**テキストメッセージ (SMS)**] ページの、[**Account stats**] セクションで、トランザクションおよびプロモーション SMS メッセージ配信のグラフを表示します。各グラフは、前述の 15 日間の次のデータを表示します。
   + 配信成功率 (正常な配信の割合)
   + 送信 (配信試行数)
   + 失敗 (配信の失敗数)

このページで、[**使用状況**]ボタンを選択して、毎日の使用状況レポートを保存する Amazon S3 バケットに移動することもできます。詳細については、「[Amazon SNS の毎日の SMS 使用状況レポートにサブスクライブする](sms_stats_usage.md)」を参照してください。

# Amazon CloudWatch メトリクスとログを使用した Amazon SNS SMS 配信モニタリング
<a name="sms_stats_cloudwatch"></a>

Amazon CloudWatch および Amazon CloudWatch Logs を使用して、SMS のメッセージ配信をモニタリングできます。

## Amazon CloudWatch メトリクスを表示する
<a name="sms_stats_cloudwatch_metrics"></a>

Amazon SNS は、自動的に SMS メッセージ配信に関するメトリクスを収集し、これらを Amazon CloudWatch にプッシュします。CloudWatch を使用してこれらのメトリクスをモニタリングし、そのメトリクスがしきい値を超えたときに警告するようにアラームを作成できます。例えば、CloudWatch メトリクスをモニタリングして、SMS 配信率と今月の始めから今日までの SMS 料金を知ることができます。

CloudWatch メトリクスのモニタリング、 アラームの設定、利用可能なメトリクスの種類の詳細については、「[CloudWatch を使用した Amazon SNS のモニタリング](sns-monitoring-using-cloudwatch.md)」を参照してください。

## CloudWatch Logs を表示する
<a name="sns-viewing-cloudwatch-logs"></a>

Amazon SNS による Amazon CloudWatch Logs への書き込みを有効化することにより、正常および失敗した SMS メッセージ配信の情報を収集できます。送信した各 SMS メッセージに対して、Amazon SNS は、メッセージの価格、成功または失敗のステータス、失敗の理由 (メッセージが失敗した場合)、メッセージのドウェル時間、その他の情報を含むログを書き込みます。

**SMS メッセージに対して CloudWatch Logs を有効にして表示するには**

1. [Amazon SNS コンソール](https://console.aws.amazon.com/sns/home)にサインインします。

1. コンソールメニューで、[SMS メッセージングをサポートしているリージョン](https://docs.aws.amazon.com/general/latest/gr/end-user-messaging.html)にリージョンセレクタを設定します。

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

1. [**モバイルテキストメッセージング (SMS)**] ページの [**テキストメッセージプリファレンス**] セクションで、[**編集**] を選択します。

1. 次のページで、[**Delivery status logging**] セクションに追加します。

1. [**成功サンプルの割合**] で、Amazon SNS が CloudWatch Logs でログを書き込む正常な SMS 配信の割合を指定します。例:
   + 失敗した配信のみをログを書き込むには、この値を 0 に設定します。
   + 正常な配信の 10% に対してログを書き込むには、10 に設定します。

   割合を指定しないなら、Amazon SNS は、すべての正常配信に対してログを書き込みます。

1. 必要なアクセス権限を提供するには、次のいずれかを行います。
   + 新しいサービスロールを作成するには、[**新しいサービスロールの作成**]を選択 し、[**新しいロールの作成**] を選択します。次のページで、[**許可**] を使用して、Amazon SNS にアカウントのリソースへの書き込みアクセス許可を付与します。
   + 既存のサービスロールを使用するには、[**既存のサービスロールを使用する**] を選択し、ARN 名を [**成功した配信および失敗した配信用の IAM ロール**] ボックスにペーストします。

     指定するサービスロールは、アカウントのリソースへの書き込みアクセスを許可する必要があります。IAM ロールの作成の詳細については、IAM [ユーザーガイドの「 AWS サービスのロールの作成](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html#roles-creatingrole-service-console)」を参照してください。 **

1. **[Save changes]** (変更の保存) をクリックします。

1. [**モバイルテキストメッセージング (SMS)**] ページに戻り、[**配信ステータスログ**] セクションに移動し、使用可能なログを表示します。
**注記**  
送信先の電話番号のキャリアによっては、Amazon SNS コンソールに配信ログが表示されるまでに最大 72 時間かかる場合があります。

## 正常な SMS 配信のログの例
<a name="example-log-successful-sms-delivery"></a>

正常な SMS 配信の配信ステータスのログは次の例のようになります。

```
{
    "notification": {
        "messageId": "34d9b400-c6dd-5444-820d-fbeb0f1f54cf",
        "timestamp": "2016-06-28 00:40:34.558"
    },
    "delivery": {
        "phoneCarrier": "My Phone Carrier",
        "mnc": 270,
        "numberOfMessageParts": 1,
        "destination": "+1XXX5550100",
        "priceInUSD": 0.00645,
        "smsType": "Transactional",
        "mcc": 310,
        "providerResponse": "Message has been accepted by phone carrier",
        "dwellTimeMs": 599,
        "dwellTimeMsUntilDeviceAck": 1344
    },
    "status": "SUCCESS"
}
```

## 失敗した SMS 配信のログの例
<a name="example-log-failed-sms-delivery"></a>

失敗した SMS 配信の配信ステータスのログは次の例のようになります。

```
{
    "notification": {
        "messageId": "1077257a-92f3-5ca3-bc97-6a915b310625",
        "timestamp": "2016-06-28 00:40:34.559"
    },
    "delivery": {
        "mnc": 0,
        "numberOfMessageParts": 1,
        "destination": "+1XXX5550100",
        "priceInUSD": 0.00645,
        "smsType": "Transactional",
        "mcc": 0,
        "providerResponse": "Unknown error attempting to reach phone",
        "dwellTimeMs": 1420,
        "dwellTimeMsUntilDeviceAck": 1692
    },
    "status": "FAILURE"
}
```

## SMS 配信の失敗の原因
<a name="sms_stats_delivery_fail_reasons"></a>

失敗の理由は、`providerResponse` 属性で提供されます。SMS メッセージは以下の理由で送信に失敗することがあります。
+ 電話業者がスパムとしてブロック
+ 送信先がブロックリストにある
+ 無効な電話番号
+ メッセージ本文が無効
+ 電話業者がこのメッセージをブロック
+ 電話業者が現在、到達不可能/使用不可能
+ 電話が SMS をブロック
+ 電話がブロックリストにある
+ 電話が現在、到達不可能/使用不可能
+ 電話番号はオプトアウトしている
+ この配信が上限価格を超えている
+ 電話に達する際の原因不明なエラー

# Amazon SNS の毎日の SMS 使用状況レポートにサブスクライブする
<a name="sms_stats_usage"></a>

Amazon SNS から毎日の使用状況レポートにサブスクライブすることによって、SMS 配信をモニタリングできます。1 つ以上の SMS メッセージを送信する日ごとに、Amazon SNS は、指定した Amazon S3 バケットに CSV ファイルとして使用状況レポートを配信します。SMS 使用状況レポートが Amazon S3 バケットで利用可能になるまでに、24 時間かかります。

## 毎日の使用状況レポートの情報
<a name="daily_usage_info"></a>

使用状況レポートには、アカウントから正常に配信した各 SMS メッセージに関する以下の情報が含まれています。

 このレポートには、オプトアウトした受取人に送信されるメッセージは含まれない点に注意してください。
+ メッセージの発行時間 (UTC)
+ メッセージ ID
+ 送信先電話番号
+ メッセージタイプ
+ 配信ステータス
+ メッセージの価格 (USD)
+ パート番号 (1 通のメッセージとして長すぎる場合、メッセージは複数のパートに分割されます)
+ パートの総数

**注記**  
Amazon SNS がパート番号を受け取らなかった場合は、その値をゼロに設定します。

## 毎日の使用状況レポートにサブスクライブする
<a name="subscribe-to-daily-usage-reports"></a>

毎日の使用状況レポートにサブスクライブするには、適切なアクセス権限を持つ Amazon S3 バケットを作成する必要があります。

**毎日の使用状況レポート用の Amazon S3 バケットを作成するには**

1. SMS メッセージを送信 AWS アカウント する から、[Amazon S3 コンソール](https://console.aws.amazon.com/s3/)にサインインします。

1. [**バケットの作成**] を選択します。

1. [**バケット名**] には、アカウントと組織で一意の名前を入力することをお勧めします。例えば、パターン `<my-bucket-prefix>-<account_id>-<org-id>` を使用します。

   バケット名に関する規則と制限については、『*Amazon Simple Storage Service ユーザーガイド*』の「[バケットの命名規則](https://docs.aws.amazon.com/AmazonS3/latest/userguide/BucketRestrictions.html#bucketnamingrules)」を参照してください。

1. **[作成]** を選択します。

1. [**すべてのバケット**]テーブルでバケットを選択します。

1. [**Permissions**] セクションで、[**バケットポリシー**] を選択します。

1. [**バケットポリシーエディター**] ウィンドウで、Amazon SNS サービスプリンシパルをバケットに書き込むことを許可するポリシーを指定します。例については、[バケットポリシーの例](#example_bucket_policy)を参照してください。

   サンプルポリシーを使用する場合は、*my-s3-bucket* をステップ 3 で選択したバケット名に置き換えてください。

1. [**保存**] を選択します。

**毎日の使用状況レポートにサブスクライブするには**

1. [Amazon SNS コンソール](https://console.aws.amazon.com/sns/)にサインインします。

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

1. [**テキストメッセージング (SMS)**] ページの [**テキストメッセージングの設定**] セクションで、[**編集**] を選択します。  
![\[Amazon SNS コンソールのテキストメッセージングの優先設定セクション\]](http://docs.aws.amazon.com/ja_jp/sns/latest/dg/images/daily-usage-report1.png)

1. [**テキストメッセージングの設定の編集**] ページの [**詳細**] セクションで、[**使用状況レポートに使用する Amazon S3 バケット名**] を指定します。  
![\[Amazon SNS コンソールの [テキストメッセージングの優先設定の編集] ページの [詳細] セクション\]](http://docs.aws.amazon.com/ja_jp/sns/latest/dg/images/daily-usage-report2.png)

1. **[Save changes]** (変更の保存) をクリックします。

### バケットポリシーの例
<a name="example_bucket_policy"></a>

以下のポリシーは、Amazon SNS サービスプリンシパルに`s3:PutObject`、`s3:GetBucketLocation` および `s3:ListBucket` アクションの実行を許可します。

AWS は、アカウント内のリソースへのアクセス権が付与されたサービスプリンシパルを持つすべてのサービス用のツールを提供します。Amazon S3 バケットポリシーステートメントのプリンシパルが[混乱した代理攻撃の問題](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html)にある場合。バケットが毎日の使用状況レポートを受信できるリージョンとアカウントを制限するには、以下の例のように `aws:SourceArn` を使用します。これらのレポートを生成できるリージョンを制限したくない場合は、`aws:SourceAccount` を使用して、レポートを生成しているアカウントに基づいて制限します。リソースの ARN が不明の場合は、`aws:SourceAccount` を使用してください。

Amazon S3 バケットを作成して、Amazon SNS から毎日の SMS 使用状況レポートを受信する際に、混乱した代理保護を含む次の例を使用します。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowPutObject",
            "Effect": "Allow",
            "Principal": {
                "Service": "sns.amazonaws.com"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "account_id"
                },
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:sns:us-west-1:123456789012:*"
                }
            }
        },
        {
            "Sid": "AllowGetBucketLocation",
            "Effect": "Allow",
            "Principal": {
                "Service": "sns.amazonaws.com"
            },
            "Action": "s3:GetBucketLocation",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "account_id"
                },
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:sns:us-west-1:123456789012:*"
                }
            }
        },
        {
            "Sid": "AllowListBucket",
            "Effect": "Allow",
            "Principal": {
                "Service": "sns.amazonaws.com"
            },
            "Action": "s3:ListBucket",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "account_id"
                },
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:sns:us-west-1:123456789012:*"
                }
            }
        }
    ]
}
```

------

**注記**  
Amazon S3 ポリシーの `Condition` エレメントで指定される AWS アカウント に所有される Amazon S3 バケットに使用状況レポートを発行できます。別の AWS アカウント が所有する Amazon S3 バケットに使用状況レポートを発行するには、[「別の から Amazon S3 オブジェクトをコピーするにはどうすればよいですか AWS アカウント?](https://aws.amazon.com/premiumsupport/knowledge-center/copy-s3-objects-account/)」を参照してください。

### 毎日の使用状況レポートの例
<a name="example_report"></a>

毎日の使用状況レポートにサブスクライブすると、Amazon SNS は毎日、以下の場所に使用状況データを使用して CSV ファイルを配置します。

```
<my-s3-bucket>/SMSUsageReports/<region>/YYYY/MM/DD/00x.csv.gz
```

各ファイルには、最大 50,000 のレコードを含めることができます。1 日のレコードがこの限度を超えると、Amazon SNS は複数のファイルを追加します。レポートの例を以下に示します。

```
PublishTimeUTC,MessageId,DestinationPhoneNumber,MessageType,DeliveryStatus,PriceInUSD,PartNumber,TotalParts
2016-05-10T03:00:29.476Z,96a298ac-1458-4825-a7eb-7330e0720b72,1XXX5550100,Promotional,Message has been accepted by phone carrier,0.90084,0,1
2016-05-10T03:00:29.561Z,1e29d394-d7f4-4dc9-996e-26412032c344,1XXX5550100,Promotional,Message has been accepted by phone carrier,0.34322,0,1
2016-05-10T03:00:30.769Z,98ba941c-afc7-4c51-ba2c-56c6570a6c08,1XXX5550100,Transactional,Message has been accepted by phone carrier,0.27815,0,1
```

# Amazon SNS SMS メッセージングのサポートをリクエストする
<a name="channels-sms-awssupport"></a>

**重要**  
Amazon SNS SMS デベロッパーガイドが更新されました。Amazon SNS は、SMS メッセージの配信のために [AWS End User Messaging SMS](https://docs.aws.amazon.com/sms-voice/latest/userguide/what-is-service.html) と統合されています。このガイドには、Amazon SNS SMS メッセージを作成、設定、管理する方法に関する最新情報が含まれています。

Amazon SNS での特定の SMS オプションは、サポート に問い合わせるまで AWS アカウント でご利用いただけます。[[AWS サポート センター](https://console.aws.amazon.com/support/home#/)] でケースを開き、以下のいずれかをリクエストします。
+ 毎月の SMS 利用額しきい値の増加

  デフォルトでは、毎月の利用額しきい値は 1.00 USD です。利用額しきい値により、Amazon SNS で送信できるメッセージのボリュームが決まります。SMS ユースケースで予想される毎月のメッセージ量に合う利用額しきい値をリクエストします。
+ [[SMS サンドボックス](sns-sms-sandbox.md)] からの削除すると、制限なくSMSメッセージを送信できます。詳細については、「[Amazon SNS SMS サンドボックス外への移動](sns-sms-sandbox-moving-to-production.md)」を参照してください。
+ 専有の[発信元番号](https://docs.aws.amazon.com/sms-voice/latest/userguide/phone-numbers.html)
+ 専用[送信者 ID](https://docs.aws.amazon.com/sms-voice/latest/userguide/sender-id.html)。送信者 ID は、受信者のデバイスで送信者として表示されるカスタム ID です。例えば、メッセージソースを識別しやすいように、ビジネスブランドを使用できます。送信者 ID のサポートについては、国またはリージョンによって異なります。詳細については、「*AWS End User Messaging SMS ユーザーガイド*」の「[SMS メッセージングがサポートされている国とリージョンAWS End User Messaging SMS](https://docs.aws.amazon.com/sms-voice/latest/userguide/phone-numbers-sms-by-country.html)」を参照してください。

# Amazon SNS の毎月の SMS 使用クォータの引き上げをリクエストする
<a name="channels-sms-awssupport-spend-threshold"></a>

Amazon SNS では、アカウントを使用して SMS を送信することで発生する月あたりの最大コストを管理するのに役立つ使用クォータを提供しています。使用クォータは、悪意のある攻撃を受けた場合にリスクを抑え、アップストリームアプリケーションが想定外に多くのメッセージを送信することを防ぎます。Amazon SNS が SMS メッセージの送信により、当月の使用クォータを超えるコストが発生すると判断した場合、SMS メッセージの発行を停止するよう設定できます。

運用に影響が及ばないように、使用クォータが本番用ワークロードをカバーできるよう十分高いクォータをリクエストすることをお勧めします。詳細については、「[ステップ 1: Amazon SNS SMS ケースを開く](#channels-sms-awssupport-spend-threshold-open)」を参照してください。クォータを受け取った後、「[ステップ 2: SMS 設定を更新する](#channels-sms-awssupport-spend-threshold-settings)」の説明に従って、フルクォータまたはより小さい値を適用して、リスクを管理できます。より小さい値を適用することで、毎月のコストを制御できます。そのためには、必要に応じてスケールアップするオプションを使用します。

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

すべての新しいアカウントに対して 1 か月あたり 1.00 USD で使用クォータを設定します。このクォータは、Amazon SNS のメッセージ送信機能をテストできるようにすることを目的としています。アカウントの SMS 使用クォータの引き上げをリクエストするには、 AWS サポートセンターでクォータ引き上げケースを開きます。

**Topics**
+ [ステップ 1: Amazon SNS SMS ケースを開く](#channels-sms-awssupport-spend-threshold-open)
+ [ステップ 2: Amazon SNS コンソールで SMS 設定を更新する](#channels-sms-awssupport-spend-threshold-settings)

## ステップ 1: Amazon SNS SMS ケースを開く
<a name="channels-sms-awssupport-spend-threshold-open"></a>

 AWS サポートセンターでクォータ引き上げケースを開くことで、毎月の支出クォータの引き上げをリクエストできます。

**注記**  
リクエストフォームの一部のフィールドは「オプション」としてマークされています。ただし、 サポート では、リクエストを処理するために次のステップで説明されているすべての情報が必要です。必要な情報をすべて入力しないと、リクエストの処理に遅延が発生する場合があります。

1. [https://console.aws.amazon.com/](https://console.aws.amazon.com/) AWS マネジメントコンソール で にサインインします。

1. [**サポート**] メニューで [**サポートセンター**] を選択します。

1. **[お客様のサポートケース]** ペインで、**[ケースを作成]** を選択します。

1. **[サービス制限の引き上げをご希望ですか?]** リンクを選択して、以下を完了します。
   + **[制限タイプ]** で、**[SNS テキストメッセージング]** を選択します。
   + (オプション) [**Provide a link to the site or app which will be sending SMS messages (SMS メッセージを送信するサイトまたはアプリケーションへのリンクを指定する)**] で、SMS メッセージを送信する Web サイト、アプリケーション、またはサービスに関する情報を入力します。
   + (オプション) [**What type of messages do you plan to send (送信するメッセージのタイプ)**] で、ロングコードを使用して送信する予定のメッセージのタイプを選択します。
     + [**ワンタイムパスワード**] - ウェブサイトまたはアプリケーションを認証するために顧客が使用するパスワードを提供するメッセージ。
     + **[プロモーション]** - 特価販売やお知らせなど、ビジネスやサービスを宣伝する非クリティカルなメッセージ。
     + [**トランザクション**]- 注文確認やアカウントアラートなど、顧客のトランザクションをサポートする重要な情報メッセージ。トランザクションメッセージにプロモーションコンテンツまたはマーケティングコンテンツを含めることはできません。
   + (オプション) **メッセージを送信する AWS リージョン**で、メッセージを送信するリージョンを選択します。
   + (オプション) [**Which countries do you plan to send messages to**] で、ショートコードを購入する国または地域を入力します。
   + (オプション) [**How do your customers opt to receive messages from you**] で、オプトインプロセスの詳細を入力します。
   + (オプション) [How do your customers opt to receive messages from you] で、オプトインプロセスの詳細を入力します。[**Please provide the message template that you plan to use to send messages to your customers**] の項目に使用するテンプレートを入力します。

1. [**Requests**] で、以下のセクションに入力します。
   + [**Region**] で、メッセージの送信元となるリージョンを選択します。
**注記**  
[**Requests**] セクションには、リージョンが必要です。また、[**Case details**] フィールドに入力した場合でも、ここで入力する必要があります。
   + [**リソースタイプ**] で、[**一般的な制限**] を選択します。
   + [**制限**] で、[**Account Spend Threshold Increase**] を選択します。

1. [New limit value] に、毎月の SMS メッセージに使用する上限額を USD で入力します。

1. [**Case description**] の [**Use case description**] で、次の詳細を入力します。
   + SMS メッセージを送信する会社またはサービスのウェブサイトやアプリ。
   + ウェブサイトやアプリによって提供されるサービスと、SMS メッセージがそのサービスにどのように貢献するか。
   + ユーザーがウェブサイト、アプリ、他の場所で任意の SMS メッセージ受信にサインアップする方法。

   リクエストした使用クォータ（[**New quota value**] で指定した値）が 10,000 USD を超えた場合、メッセージを送信する国ごとに以下の追加の詳細を指定します。
   + 送信者 ID とショートコードのどちらを使用しているか。送信者 ID を使用している場合は、次の情報を指定します。
     + 送信者 ID。
     + 送信者 ID がその国の携帯電話キャリアに登録されているかどうか。
   + メッセージングの予想される 1 秒あたりの最大トランザクション数 (TPS)。
   + 平均メッセージサイズ。
   + 国に送信するメッセージのテンプレート。
   + (オプション) 文字エンコードのニーズ (ある場合)。

1. (オプション) さらにリクエストを送信したい場合は、[**Add another request**] を選択します。複数のリクエストを含める場合は、それぞれ必要な情報を指定します。必要な情報については、「[Amazon SNS SMS メッセージングのサポートをリクエストする](channels-sms-awssupport.md)」の他のセクションを参照してください。

1. **[連絡先オプション]** の **[連絡する際の希望言語]** で、このケースに関する連絡を受け取る言語を選択します。

1. 完了したら、**送信** を選択します。

 サポート チームは 24 時間以内にリクエストに最初の応答を提供します。

迷惑なコンテンツや悪意のあるコンテンツを送信するためにシステムが悪用されないように、私たちは各リクエストを慎重に検討しています。可能であれば、24 時間以内にリクエストを承認します。ただし、追加情報が必要な場合は、お客様のリクエストの解決に時間がかかる場合があります。

お客様のユースケースが私たちのポリシーに一致しない場合は、リクエストを承認できない場合があります。

## ステップ 2: Amazon SNS コンソールで SMS 設定を更新する
<a name="channels-sms-awssupport-spend-threshold-settings"></a>

毎月の使用クォータの引き上げが通知された後、Amazon SNS コンソールのアカウントで使用クォータを調整する必要があります。

**重要**  
次のステップを完了する必要があります。完了しない場合、SMS の利用限度額は増えません。

**コンソールで使用クォータを調整するには**

1. [Amazon SNS コンソール](https://console.aws.amazon.com/sns/home)にサインインします。

1. 左側のナビゲーションメニューを開き、**[モバイル]** を展開し、**[テキストメッセージング (SMS)]** を選択します。

1. [**モバイルテキストメッセージング (SMS)**] ページの [**テキストメッセージプリファレンス**] セクションで、[**編集**] を選択します。

1. **[テキストメッセージングの優先設定の編集]** ページの **[詳細]** で、**[アカウントの使用制限]** に新しい SMS 使用限度額を入力します。
**注記**  
デフォルトの使用制限より高い値を入力すると、警告が表示される場合があります。このテキストは無視して構いません。

1. **[Save changes]** (変更の保存) をクリックします。
**注記**  
「Invalid Parameter」というエラーが表示された場合は、 AWS サポートの連絡先を確認し、新しい SMS 使用制限が正しく入力されていることを確認します。それでも問題が解決しない場合は、 AWS サポートセンターでケースを開きます。

サポート センターでケースを作成するときは、送信するリクエストのタイプに必要なすべての情報を含めてください。含めない場合、続行する前に サポート がお客様に連絡してこの情報を取得します。詳細なケースを送信することにより、ケースが遅れなく処理されます。特定のタイプの SMS リクエストに必要な詳細については、以下のトピックを参照してください。

 送信者 ID の詳細については、「*AWS End User Messaging SMS ユーザーガイド*」の以下のドキュメントを参照してください。


| AWS End User Messaging SMS トピック | 説明 | 
| --- | --- | 
|  [使用クォータの引き上げのリクエスト](https://docs.aws.amazon.com/sms-voice/latest/userguide/awssupport-spend-threshold.html)  |  使用クォータにより、毎月 AWS End User Messaging SMS を介した SMS メッセージの送信に使用できる金額が設定されます。  | 
|  [サポートセンターで送信者 ID のケースを開く](https://docs.aws.amazon.com/sms-voice/latest/userguide/awssupport-sender-id.html)  |  送信者 ID が必要な国の受信者にメッセージを送信する予定の場合は、サポート センターで新しいケースを作成して送信者 ID をリクエストできます。  | 

# Amazon SNS SMS メッセージングのベストプラクティス
<a name="channels-sms-best-practices"></a>

**重要**  
Amazon SNS SMS デベロッパーガイドが更新されました。Amazon SNS は、SMS メッセージの配信のために [AWS End User Messaging SMS](https://docs.aws.amazon.com/sms-voice/latest/userguide/what-is-service.html) と統合されています。このガイドには、Amazon SNS SMS メッセージを作成、設定、管理する方法に関する最新情報が含まれています。

携帯電話ユーザーは、未承諾 SMS メッセージに対する許容度が極めて低い傾向があります。未承諾 SMS キャンペーンの反応率はほぼ常に低くなるため、投資効果は低くなります。

さらに、携帯電話キャリアは大量 SMS の送信者を継続的に監査しています。未承諾メッセージを送信していると判断した番号からのメッセージは、調整されたりブロックされたりします。

未承諾コンテンツの送信は、[AWS の適正利用規約](https://aws.amazon.com/aup/#No_E-Mail_or_Other_Message_Abuse)にも違反します。Amazon SNS チームは、SMS キャンペーンを定期的に監査しており、未承諾メッセージを送信していると思われる場合はメッセージの送信能力を調整したりブロックしたりすることがあります。

最後に、多くの国、リージョン、管轄区域では、未承諾 SMS メッセージの送信に多額の罰金を科しています。例えば、米国の Telephone Consumer Protection Act (TCPA) には、消費者が未承諾メッセージを 1 通受け取るたびに 500～1,500 USD の損害賠償を受け取ることができる (送信者が支払う) と規定されています。

このセクションでは、顧客エンゲージメントを高め、罰金を回避するために役立つ可能性があるいくつかのベストプラクティスについて説明します。ただし、このセクションには法的なアドバイスは含まれていないことに注意してください。法的なアドバイスを受けるには、弁護士に相談してください。

## 法律、規制、および通信事業者の要件の遵守
<a name="channels-sms-best-practices-understand-laws"></a>

あなたの顧客が所在する地域の法および規制に違反すると、高額な罰金と罰が課されます。このためにも、事業を展開する各国や各地域の SMS メッセージングに関する法律を理解することは非常に重要です。

次のリストには、世界中の主要なマーケットにおける SMS コミュニケーションに適用される重要な法律のリンクが含まれています。
+ **米国**: 1991 年の電話利用者保護法 (TCPA) は、特定の種類の SMS メッセージに適用されます。詳細については、[規則および規制](https://www.fcc.gov/document/telephone-consumer-protection-act-1991)を連邦通信委員会のウェブサイトで参照してください。
+ **英国 **: 2003 年のプライバシーおよび電子通信に関する規制(EC 指令) (PECR) は、 特定の種類の SMS メッセージに適用されます。詳細については、英国情報コミッショナーオフィスのウェブサイトで「[What are PECR?](https://ico.org.uk/for-organisations/direct-marketing-and-privacy-and-electronic-communications/guide-to-pecr/what-are-pecr/)」を参照してください。
+ **EU**: 2002 年のプライバシーおよび電子通信に関する規則指令 (ePrivacy 指令と呼ばれることもある) は、特定の種類の SMS メッセージに適用されます。詳細については、[法律全文](http://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32002L0058) を Europa.eu ウェブサイトで参照してください。
+ **カナダ**: インターネットおよび無線スパム対策法 (カナダのアンチスパム法あるいは CASL) は、特定の種類の SMS メッセージに適用されます。詳細については、[法律全文](http://www.parl.ca/DocumentViewer/en/40-3/bill/C-28/first-reading) をカナダ議会のウェブサイトで参照してください。
+ **日本**: 特定電子メールの送信の適正化等に関する法律は、特定の種類の SMS メッセージに適用される場合があります。詳細については、[日本の迷惑メール対策](https://www.japaneselawtranslation.go.jp/en/laws/view/3767/en)を総務省のウェブサイトで参照してください。

送信者として、会社または組織がこれらの国のいずれかに拠点を置いていない場合でも、これらの法律が適用される場合があります。このリストの一部の法規制は迷惑 E メールあるいは電話を対象に元々制定されたものもありますが、SMS メッセージにも同様に適用するとの見解や拡張解釈が行われています。その他の国々や地域では、SMS メッセージの送信に関する独自の法規制を設けています。顧客が所在する各国や各地域の弁護士に相談して、法的なアドバイスを受けてください。

多くの国では、現地の通信事業者がネットワーク上を流れるトラフィックの種類を決定する最終権限を保有しています。つまり、通信事業者は、現地の法律の最低要件より厳しい制限を SMS コンテンツに課す可能性があります。

## 許可を取得する
<a name="channels-sms-best-practices-obtain-permission"></a>

送信する予定のメッセージについて特定のタイプの受信を明示的に要求していない受信者には、決してメッセージを送信しないでください。同じ会社内の組織間であっても、オプトインリストを共有しないでください。

受信者がオンラインフォームを使用してメッセージの受信にサインアップできる場合、本人が気づかずに自動スクリプトがサブスクライブすることを防止するシステムを追加してください。また、1 回のセッションでユーザーが電話番号を送信できる回数を制限する必要があります。

SMS オプトインリクエストを受け取ったら、メッセージの受信を希望することを確認するメッセージを受信者に送信します。受信者がサブスクリプションを確認するまで、追加のメッセージを受信者に送信しないでください。サブスクリプション確認メッセージの例は次のとおりです。

`Text YES to join ExampleCorp alerts. 2 msgs/month. Msg & data rates may apply. Reply HELP for help, STOP to cancel.`

日付、時刻、各オプトインリクエストおよび確認のソースが含まれる記録を保持してください。これは、通信事業者または規制機関から依頼された場合に役立つことがあり、顧客リストの定期的な監査の実施にも役立つことがあります。

### オプトインワークフロー
<a name="channels-sms-best-practices-obtain-permission-optin"></a>

場合によっては (米国の通話料無料やショートコード登録など)、モバイル通信事業者からオプトインワークフロー全体のモックアップまたはスクリーンショットの提供が求められます。モックアップまたはスクリーンショットは、受信者が完了するオプトインワークフローによく似ている必要があります。

モックアップまたはスクリーンショットには、最高レベルのコンプライアンスを維持するために必要な以下の開示事項をすべて含める必要があります。

**必要な開示**
+ プログラムを通じて送信するメッセージングユースケースの説明。
+ 「メッセージ料金とデータ料金が適用される場合があります」というフレーズ。
+ 受信者がメッセージを受け取る頻度の提示。例えば、定期的なメッセージングプログラムでは、「週に 1 通のメッセージ」と表示される場合があります。ワンタイムパスワードまたは多要素認証のユースケースでは、「メッセージの頻度は異なる」または「ログイン試行ごとに 1 通のメッセージ」と表示される場合があります。
+ 利用規約とプライバシーポリシー文書へのリンク。

**コンプライアンス違反オプトインの一般的な拒否理由**
+ 提供された会社名がモックアップまたはスクリーンショットに記載されているものと一致しない場合。明確ではない関係については、オプトインワークフローの説明で説明する必要があります。
+ メッセージが受信者に送信されるように見えても、送信前に明示的に同意が得られない場合。すべてのメッセージには、明示的な同意が必要です。
+ サービスにサインアップするためにテキストメッセージの受信が必要と思われる場合。ワークフローが、電子メールや音声通話などの別の形式でオプトインメッセージを受信する代替手段を提供していない場合、これは準拠しません。
+ オプトイン言語がすべて利用規約に記載されている場合。開示内容は、リンク先のポリシー文書の中に入れるのではなく、オプトイン時に必ず受信者に提示する必要があります。
+ 顧客があるタイプのメッセージを受信することに同意し、他のタイプのテキストメッセージを送信する場合。例えば、顧客はワンタイムパスワードの受信には同意しましたが、投票メッセージやアンケートメッセージも送信されます。
+ 必要な開示 (上記) が受信者に提示されない場合。

次の例は、多要素認証のユースケースに関する携帯端末通信業者の要件に準拠しています。

![\[ExampleCorp のユーザーアカウントで多要素認証 (MFA) を有効にするためのオプトインワークフローのステップバイステップのモックアップ。このプロセスでは、まずユーザーが名前や E メールなどの基本的なアカウント情報を提供します。次に、セキュリティ強化のために MFA を有効にするかどうかを決定します。MFA が有効になっている場合、ユーザーはテキストメッセージや電話などのオプションを使用して、MFA トークンの受信方法を選択します。テキストメッセージを選択すると、検証コードを含む SMS を受信します。最後のステップでは、ユーザーは受信したコードを入力して電話番号を確認し、オプトインプロセスを完了する必要があります。このモックアップにより、SMS コンプライアンスに必要なすべての開示が提供されます。\]](http://docs.aws.amazon.com/ja_jp/sns/latest/dg/images/best-practices-usecase.png)


完成したテキストと画像が含まれ、オプトインフロー全体が注釈付きで表示されます。オプトインフローでは、顧客はテキストメッセージの受信に同意するために、明確な意図的行動をとり、必要な開示事項をすべて含める必要があります。

### その他のオプトインワークフロータイプ
<a name="channels-sms-best-practices-obtain-permission-other"></a>

携帯端末通信業者は、上記の規定に準拠している場合、口頭または書面によるオプトインなど、アプリケーションやウェブサイト以外のオプトインワークフローも受け入れます。コンプライアンスに準拠したオプトインワークフローと、口頭または書面によるスクリプトは、特定のメッセージタイプを受信することについて、受信者から明示的な同意を得ます。例としては、サービスデータベースに記録する前にサポートエージェントが同意を得るために使用する口頭スクリプトや、販促用チラシに記載されている電話番号などがあります。これらのオプトインワークフロータイプのモックアップには、オプトインスクリプト、マーケティング資料、または数字が収集されているデータベースのスクリーンショットを提供できます。オプトインが明確ではない場合やユースケースが一定量を超える場合、携帯端末通信業者はこれらのユースケースに関して追加の質問をすることがあります。

## 古いリストには送信しないでください
<a name="channels-sms-best-practices-old-lists"></a>

人は電話番号を頻繁に変更します。2 年前に連絡先として同意を得た電話番号は、今では他の誰かが使用しているかもしれません。新しいメッセージングプログラムに古い電話番号リストを使用しないでください。使用した場合、電話番号がすでに使用されていないため、メッセージが送信されない場合や、そもそも同意したことを忘れてオプトアウトする人がいる可能性があります。

## 顧客リストを監査する
<a name="channels-sms-best-practices-audit-lists"></a>

定期的な SMS キャンペーンを送信している場合、顧客リストを定期的に監査してください。顧客リストを監査すると、メッセージを受信したい顧客だけがメッセージを確実に受信するようになります。

リストを監査するときは、オプトインしている各顧客に、サブスクライブしていることを再確認するメッセージを送信し、サブスクライブ解除に関する情報を提供します。再確認メッセージの例は次のとおりです。

`You're subscribed to ExampleCorp alerts. Msg & data rates may apply. Reply HELP for help, STOP to unsubscribe.`

## レコードを保持する
<a name="channels-sms-best-practices-keep-records"></a>

SMS メッセージを送信するよう各顧客よりリクエストされた日時と、各顧客に送信したメッセージを示すレコードを保持します。世界の多くの国や地域では、SMS の送信者がこれらのレコードを簡単に取り出せるように維持する必要があります。また、この情報は、携帯端末通信事業者より随時リクエストされる場合があります。提供する情報は、国または地域によって異なります。レコード維持の要件の詳細は、顧客が所在する国または地域ごとの商用 SMS メッセージングの規制を確認します。

場合によっては、キャリアや規制機関より、顧客がメッセージの受け取りを選択した事実の提供を求められることがあります。このような状況では、 から通信事業者または機関が必要とする情報のリストが サポート 届きます。必要な情報を提供しない場合は、以降の SMS メッセージを送信する機能が一時停止される場合があります。

## メッセージは明確、正直、簡潔にしてください
<a name="channels-sms-best-practices-appropriate-content"></a>

SMS はユニークなメディアです。メッセージあたり 160 文字という制限があるため、メッセージは簡潔にする必要があります。電子メールなど、他の通信チャネルで使用する手法が SMS チャネルでは適用できない場合があり、SMS メッセージで使用すると不正または詐欺的に思われる場合もあります。メッセージの内容がベストプラクティスと一致しない場合、受信者はメッセージを無視する可能性があります。最悪の場合、携帯電話通信業者がメッセージをスパムと見なし、その電話番号からのメッセージを今後ブロックする可能性があります。

このセクションでは、効果的な SMS メッセージ本文を作成するためのヒントやアイデアをいくつか紹介します。

### 自分が送信者であることを明記してください
<a name="channels-sms-best-practices-appropriate-content-identify"></a>

受信者は、メッセージがあなたから送信されたものであることをすぐに理解できる必要があります。このベストプラクティスに従って、送信者は各メッセージの最初に識別名 (「プログラム名」) を含めます。

**この操作はしないでください。**  
`Your account has been accessed from a new device. Reply Y to confirm.`

**代わりにこれを試してください:**  
`ExampleCorp Financial Alerts: You have logged in to your account from a new device. Reply Y to confirm, or STOP to opt-out.`

### メッセージを個人から個人へのメッセージのように記載しない
<a name="channels-sms-best-practices-appropriate-content-p2p"></a>

マーケティング担当者の中には、メッセージを個人から送信されたように見せて、SMS メッセージに個人的なタッチを加えたいと思う人もいます。ただし、この手法を使用すると、メッセージがフィッシング詐欺のように受け取られる場合があります。

**この操作はしないでください。**  
`Hi, this is Jane. Did you know that you can save up to 50% at Example.com? Click here for more info: https://www.example.com.`

**代わりにこれを試してください:**  
`ExampleCorp Offers: Save 25-50% on sale items at Example.com. Click here to browse the sale: https://www.example.com. Text STOP to opt-out.`

### お金の話には注意する
<a name="channels-sms-best-practices-appropriate-content-money"></a>

詐欺師は、お金を貯めたり、受け取りたいという人の欲求につけ込むことがよくあります。「話がうますぎる」と思わせるようなオファーを記載してはいけません。人を欺くためにお金の誘惑を使用してはいけません。通貨記号を使ってお金を示してはいけません。

**この操作はしないでください。**  
`Save big $$$ on your next car repair by going to https://www.example.com.`

**代わりにこれを試してください:**  
`ExampleCorp Offers: Your ExampleCorp insurance policy gets you discounts at 2300+ repair shops nationwide. More info at https://www.example.com. Text STOP to opt-out.`

### 必要な文字のみを使用する
<a name="channels-sms-best-practices-appropriate-content-characters"></a>

ブランドは、多くの場合において、メッセージに ™ や® などの商標記号を含めることで商標を保護する傾向があります。しかし、これらの記号は、160 文字の SMS メッセージに含めることができる (GSM アルファベットと呼ばれる) 標準文字セットには含まれていません。これらの文字のいずれかを含むメッセージを送信すると、メッセージは別の文字エンコーディングシステムを使用して自動送信されます。このシステムでは、メッセージパートごとに 70 文字までしかサポートされません。その結果、メッセージが複数に分割される可能性があります。送信するメッセージパーツごとに料金が請求されるため、メッセージ全体の送信にかかる費用が予想よりも高くなる可能性があります。さらに、受信者は 1 つのメッセージではなく、複数の連続したメッセージを受信する場合があります。SMS の文字エンコーディングの詳細については、「[Amazon SNS の SMS の文字数制限について](#channels-sms-limitations-characters)」を参照してください。

**この操作はしないでください。**  
`ExampleCorp Alerts: Save 20% when you buy a new ExampleCorp Widget® at example.com and use the promo code WIDGET.`

**代わりにこれを試してください:**  
`ExampleCorp Alerts: Save 20% when you buy a new ExampleCorp Widget(R) at example.com and use the promo code WIDGET.`

**注記**  
上記の 2 つの例はほとんど同じですが、最初の例には GSM アルファベットではない登録商標記号 (®) が含まれています。その結果、最初の例は 2 つのメッセージパーツとして送信され、2 番目の例は 1 つのメッセージパーツとして送信されます。

### 有効で安全なリンクを使用する
<a name="channels-sms-best-practices-appropriate-content-links"></a>

メッセージにリンクが含まれている場合は、そのリンクが機能することを再確認してください。企業ネットワーク外のデバイスでリンクをテストして、リンクが正しく解決されることを確認します。SMS メッセージは 160 文字に制限されているため、URL が非常に長いと複数のメッセージに分割される可能性があります。短縮 URL を指定するには、リダイレクトドメインを使用する必要があります。ただし、tinyurl.com や bitly.com などの無料のリンク短縮サービスを使用しないでください。通信事業者は、そのドメイン上のリンクを含むメッセージをフィルタリングする傾向があります。リンクが会社または組織の排他的使用専用のドメインを指している限り、有料のリンク短縮サービスを使用できます。

**この操作はしないでください。**  
`Go to https://tinyurl.com/4585y8mr today for a special offer!`

**代わりにこれを試してください:**  
`ExampleCorp Offers: Today only, get an exclusive deal on an ExampleCorp Widget. See https://a.co/cFKmaRG for more info. Text STOP to opt-out.`

### 使用する略語数を制限する
<a name="channels-sms-best-practices-appropriate-content-abbrev"></a>

SMS チャネルには 160 文字の制限があるため、一部の送信者は、メッセージに略語を多用する必要があると考えます。しかし、略語を使いすぎると、多くの読者は企業からのものではないと受け止められ、一部のユーザーがメッセージをスパムとして報告する可能性があります。略語を多用せずに、首尾一貫したメッセージを書くことは至って可能です。

**この操作はしないでください。**  
`Get a gr8 deal on ExampleCorp widgets when u buy a 4-pack 2day.`

**代わりにこれを試してください:**  
`ExampleCorp Alerts: Today only—an exclusive deal on ExampleCorp Widgets at example.com. Text STOP to opt-out.`

## 適切に応答する
<a name="channels-sms-best-practices-respond-appropriately"></a>

受信者がメッセージに返信したときは、有用な情報で応答するようにしてください。例えば、顧客がメッセージの 1 つにキーワード「HELP」で反応した場合、サブスクライブしているプログラム、毎月送信されるメッセージの数、詳細情報が必要な場合の連絡方法に関する情報を送信します。HELP レスポンスメッセージの例は次のとおりです。

`HELP: ExampleCorp alerts: email help@example.com or call 425-555-0199. 2 msgs/month. Msg & data rates may apply. Reply STOP to cancel.`

顧客がキーワード「STOP」で返信した場合、今後はメッセージが送信されないことを知らせます。STOP レスポンスメッセージの例は次のとおりです。

`You're unsubscribed from ExampleCorp alerts. No more messages will be sent. Reply HELP, email help@example.com, or call 425-555-0199 for more info.`

## エンゲージメントに基づく送信を調整する
<a name="channels-sms-best-practices-adjust-engagement"></a>

顧客の優先順位は時間の経過とともに変わる可能性があります。顧客がメッセージを必要としなくなった場合、メッセージを完全にオプトアウトしたり、メッセージを未承諾として報告したり可能性すらあります。このため、顧客とのエンゲージメントに基づいて送信手続きを調整することは重要です。

メッセージにめったに反応しない顧客の場合、メッセージの頻度を調整する必要があります。例えば、反応の多い顧客にメッセージを毎週送信している場合、反応の少ない顧客用に別の毎月のダイジェストを作成できます。

最後に、まったく反応のない顧客を顧客リストから削除します。このステップにより、顧客がメッセージを不満に感じることがなくなります。また、コストを削減し、送信者としての評判を維持することもできます。

## 適切な時間に送信する
<a name="channels-sms-best-practices-appropriate-times"></a>

通常の営業時間中にのみメッセージを送信します。メッセージを夕食や深夜の時間帯に送信している場合、顧客が邪魔をされないようにリストからサブスクリプション解除する可能性が高くなります。さらに、顧客がすぐに反応できないときに SMS メッセージを送信しても意味がありません。

キャンペーンやジャーニーを多くの受信者に送信する場合は、発信元番号のスループットレートを再確認してください。受信者数をスループットレートで割ると、すべての受信者にメッセージを送信するのにかかる時間が分かります。

## 複数チャンネルでの重複を回避する
<a name="channels-sms-best-practices-cross-channel-fatigue"></a>

キャンペーンで、複数の通信チャンネル (E メール、SMS、プッシュメッセージ) を使用している場合、各チャンネルで同じメッセージを送信しないでください。同じメッセージを複数のチャンネルで同時に送信すると、顧客は送信動作を有用ではなく迷惑だと受け取る可能性が高くなります。

## 専用ショートコードを使用する
<a name="channels-sms-best-practices-dedicated-short-codes"></a>

ショートコードを使用している場合、ブランドおよびメッセージタイプごとに別個のショートコードを維持します。例えば、会社に 2 つのブランドがある場合、それぞれ別のショートコードを使用します。同様に、トランザクションメッセージとプロモーションメッセージの両方を送信している場合、メッセージタイプごとに別のショートコードを使用します。ショートコードのリクエストの詳細については、「*AWS End User Messaging SMS ユーザーガイド*」の「[AWS End User Messaging SMSでの SMS メッセージングのショートコードのリクエスト](https://docs.aws.amazon.com/sms-voice/latest/userguide/phone-numbers-request-short-code.html)」を参照してください。

## 送信先の電話番号を確認する
<a name="channels-sms-best-practices-verify-destination-numbers"></a>

Amazon Pinpoint を通じて SMS メッセージを送信すると、送信したメッセージパートごとに課金されます。メッセージパーツごとに支払う料金は、受信者の国や地域によって異なります。SMS の料金の詳細については、「[AWS 世界各国の SMS 料金表](https://aws.amazon.com/sns/sms-pricing)」を参照してください。

Amazon SMS が SMS メッセージを送信するリクエストを受け入れた場合 ([SendMessages](https://docs.aws.amazon.com/pinpoint/latest/apireference/apps-application-id-messages.html#SendMessages) API、またはキャンペーンまたはジャーニーが開始された結果)、そのメッセージの送信に対して課金されます。このステートメントは、たとえ意図した受信者が実際にメッセージを受け取らなかったとしても有効です。例えば、相手の電話番号が使われていなかったり、送信先の電話番号が有効な携帯電話番号でなかったとしても、メッセージの送信は課金対象となります。

Amazon SNS は、SMS メッセージの有効な送信リクエストを受け付け、配信を試みます。このため、メッセージを送信する電話番号が有効な携帯電話番号であることを検証する必要があります。 AWS End User Messaging SMS を使用してテストメッセージを送信し、電話番号が有効かどうか、電話番号のタイプ (携帯電話、固定電話、VoIP など) を判断できます。詳細については、「*AWS End User Messaging SMS ユーザーガイド*」の「[SMS シミュレータを使用してテストメッセージを送信する](https://docs.aws.amazon.com/sms-voice/latest/userguide/getting-started-tutorial.html#getting-started-tutorial-step3)」を参照してください。

## 冗長性を考慮した設計
<a name="channels-sms-best-practices-redundancy"></a>

ミッションクリティカルなメッセージングプログラムでは、Amazon SNS を複数の AWS リージョンで設定することをお勧めします。Amazon SNS にはいくつかの があります AWS リージョン。Amazon SNS を使用できるリージョンの一覧については、「[AWS 全般のリファレンス](https://docs.aws.amazon.com/general/latest/gr/sns.html)」を参照してください。

ショートコード、ロングコード、通話料無料、10DLC 番号など、SMS メッセージに使用する電話番号は AWS リージョンで複製することはできません。そのため、Amazon SNS を複数のリージョンで使用するには、Amazon SNS を使用するリージョンごとに個別の電話番号をリクエストする必要があります。たとえば、ショートコードを使用して米国の受信者にテキストメッセージを送信する場合は、 AWS リージョン 使用する各 で個別のショートコードをリクエストする必要があります。

一部の国では、冗長性を高めるために複数のタイプの電話番号を使用することもできます。例えば、米国では、ショートコード、10DLC 番号、通話料無料の番号をリクエストすることができます。これらの電話番号タイプはそれぞれ、受信者へのルートが異なります。同じ または複数の に AWS リージョン またがる複数の電話番号タイプを使用できる AWS リージョンと、冗長性がさらに強化され、耐障害性の向上に役立ちます。

## SMS の制限と規制
<a name="channels-sms-best-practices-limits"></a>

SMS の制限と規制については、「*AWS End User Messaging SMS ユーザーガイド*」の「[SMS および MMS の制限と規制](https://docs.aws.amazon.com/sms-voice/latest/userguide/sms-limitations.html)」を参照してください。

## オプトアウトキーワードの管理
<a name="channels-sms-best-practices-optout-keywords"></a>

SMS 受信者は、各自のデバイスを使用して、キーワードで返信することでメッセージをオプトアウトできます。詳細については、「[SMS メッセージの受信をオプトアウトする](sms_manage.md#sms_manage_optout)」を参照してください。

## CreatePool
<a name="channels-sms-best-practices-createpool"></a>

`CreatePool` API アクションを使用して新しいプールを作成し、そのプールと指定した送信元アイデンティティとを関連付けます。詳細については、「*AWS End User Messaging SMS API リファレンス*」の「[CreatePool](https://docs.aws.amazon.com/pinpoint/latest/apireference_smsvoicev2/API_CreatePool.html)」を参照してください。

## PutKeyword
<a name="channels-sms-best-practices-putkeyword"></a>

`PutKeyword` API アクションを使用して、送信元の電話番号またはプールのキーワード設定を作成または更新します。詳細については、「*AWS End User Messaging SMS API リファレンス*」の「[PutKeyword](https://docs.aws.amazon.com/pinpoint/latest/apireference_smsvoicev2/API_PutKeyword.html)」を参照してください。

## 番号設定の管理
<a name="channels-sms-best-practices-number-settings"></a>

 AWS サポートにリクエストし、アカウントに割り当てた専用のショートコードとロングコードの設定を管理するには、「」の[「 で電話番号の機能を変更する AWS CLI](https://docs.aws.amazon.com/sms-voice/latest/userguide/phone-numbers-change-capabilitiy.html)」を参照してください*AWS End User Messaging SMS*。

## Amazon SNS の SMS の文字数制限について
<a name="channels-sms-limitations-characters"></a>

1 回の SMS メッセージには、最大 140 バイトの情報を含めることができます。1 回の SMS メッセージに使用できる文字数は、メッセージに含む文字の種類によって異なります。

GSM 7-bit アルファベットとしても知られる「[GSM 03.38 文字セット](#channels-sms-limitations-characters-gsm-alphabet)」のみメッセージに使用されている場合は、最大 160 文字含めることができます。メッセージに GSM 03.38 文字セット以外の文字を使用する場合は、最大 70 文字を含めることができます。SMS メッセージを送信する場合は、Amazon SNS によって最も効率的なエンコードが自動的に判断されます。

メッセージに最大文字数を超える文字を含めると、メッセージは複数のパートに分割されます。メッセージが複数のパートに分割されると、各パートには、その前のメッセージパートに関する追加情報が含まれます。受取人のデバイスは、このように分割されたメッセージパートを受信すると、この追加情報を使用して、すべてのメッセージパートを正しい順で表示します。受取人の携帯通信事業者やデバイスによっては、複数のメッセージが、1 つのメッセージとして表示されたり、個別のメッセージのシーケンスとして表示されたりする場合があります。その結果として、各メッセージパートの文字数は 153 (GSM 03.38 文字のみを含むメッセージの場合) または 67 (他の文字を含むメッセージの場合) に減少します。SMS の長さ計算ツールを使用すると、メッセージを送信する前にメッセージに含まれるメッセージパートの数を推定できます。これらのツールのいくつかはオンラインで入手できます。メッセージの最大サイズは、GSM 1600 文字または非 GSM 630 文字です。スループットとメッセージサイズの詳細については、*Amazon Pinpoint ユーザーガイド*の「[SMS character limits in Amazon Pinpoint](https://docs.aws.amazon.com/pinpoint/latest/userguide/channels-sms-limitations-mps.html)」(Amazon Pinpoint の SMS の文字数制限について) を参照してください。

送信する各メッセージのメッセージパート数を確認するには、まず[イベントストリーム設定](https://docs.aws.amazon.com/pinpoint/latest/userguide/settings-event-streams.html)を有効にする必要があります。有効にすると、メッセージが受取人の携帯電話会社に配信されたときに、Amazon SNS によって `_SMS.SUCCESS` イベントが生成されます。`_SMS.SUCCESS` イベントレコードには、`attributes.number_of_message_parts` という属性が含まれています。この属性は、メッセージ内のメッセージパート数を指定します。

**重要**  
複数のメッセージパートを含むメッセージを送信すると、メッセージ内のメッセージパート数に応じて課金されます。

### GSM 03.38 文字セット
<a name="channels-sms-limitations-characters-gsm-alphabet"></a>

GSM 03.38 文字セットに含まれるすべての文字を次のテーブルに示します。次のテーブルに示す文字のみを含むメッセージを送信する場合、そのメッセージには最大 160 文字までを含めることができます。


| GSM 03.38 標準文字 | 
| --- | 
| A | B | C | D | E | F | G | H | I | J | K | L | M | 
| N | O | P | Q | R | S | T | U | V | W | X | Y | Z | 
| ある | b | c | d | e | f | g | h | i | j | k | I | m | 
| n | o | p | q | r | s | t | u | v | w | x | y | z | 
| à | Å | å | Ä | ä | Ç | É | é | è | ì | Ñ | ñ | ò | 
| Ø | ø | Ö | ö | ù | Ü | ü | Æ | æ | ß | 0 | 1 | 2 | 
| 3 | 4 | 5 | 6 | 7 | 8 | 9 | & | \$1 | @ | : | , | ¤ | 
| \$1 | = | \$1 | > | \$1 | - | ¡ | ¿ | ( | < | % | . | \$1 | 
| £ | ? | " | ) | § | ; | ' | / | \$1 | ¥ | Δ | Φ | Γ | 
| Λ | Ω | Π | Ψ | Σ | Θ | Ξ |  |  |  |  |  |  | 

GSM 03.38 文字セットには、前述のテーブルに示す記号に加えて、複数の記号が含まれています。ただし、これらの文字には、表示されないエスケープ文字も含まれているため、それぞれ 2 文字としてカウントされます。
+ ^
+ \$1
+ \$1
+ \$1
+ [
+ ]
+ \$1
+ \$1
+ €

最後に、GSM 03.38 文字セットには、次の非表示の文字も含まれています。
+ 空白文字。
+ 改行制御。テキストのある行の行末であるとともに、次の行の先頭であることを示します。
+ キャリッジリターン制御。テキストの行の先頭に移動します (通常は次の改行文字)。
+ エスケープ制御。前述のリストの文字に自動的に追加されます。

### メッセージの例
<a name="channels-sms-limitations-characters-example-messages"></a>

このセクションでは、SMS メッセージの例をいくつか示します。例ごとに、メッセージのメッセージパート数と合計文字数を示します。

**例 1: GSM 03.38 アルファベットの文字のみを含む長いメッセージ**  
次のメッセージには、GSM 03.38 アルファベットの文字のみが含まれています。

`Hello Carlos. Your Example Corp. bill of $100 is now available. Autopay is scheduled for next Thursday, April 9. To view the details of your bill, go to https://example.com/bill1.`

上のメッセージには 180 文字が含まれているため、複数のメッセージパートに分割する必要があります。メッセージを複数のメッセージパートに分割した場合、各パートには 153 文字の GSM 03.38 を含めることができます。その結果、このメッセージは 2 つのメッセージパートとして送信されます。

**例 2: マルチバイト文字を含むメッセージ**  
次のメッセージには、GSM 03.38 アルファベットではない、複数の中国語の文字が含まれています。

`亚马逊公司是一家总部位于美国西雅图的跨国电子商务企业，业务起始于线上书店，不久之后商品走向多元化。杰夫·贝佐斯于1994年7月创建了这家公司。`

上のメッセージには 71 文字が含まれています。ただし、メッセージ内のほとんどすべての文字は GSM 03.38 アルファベットではないため、2 つのメッセージパートとして送信されます。メッセージパートごとに最大 67 文字を含めることができます。

**例 3: GSM 以外の文字を 1 つ含むメッセージ**  
次のメッセージには、GSM 03.38 アルファベットに属さない文字が 1 つ含まれています。この例で、その文字は閉じる単一引用符 (') であり、通常のアポストロフィ (') とは別の文字です。Microsoft Word などのワープロアプリケーションは、アポストロフィを、閉じる単一引用符に自動的に置き換える場合があります。SMS メッセージの下書きを Microsoft Word で作成して Amazon SNS に貼り付ける場合は、これらの特殊文字を削除して、アポストロフィに置き換えてください。

`John: Your appointment with Dr. Salazar’s office is scheduled for next Thursday at 4:30pm. Reply YES to confirm, NO to reschedule.`

上のメッセージには 130 文字が含まれています。ただし、GSM 03.38 アルファベットに属さない閉じる単一引用符文字が含まれているため、メッセージは 2 つのメッセージパートとして送信されます。

このメッセージの閉じる単一引用符をアポストロフィ (GSM 03.38 アルファベットの一部) に置き換えると、メッセージは単一のメッセージパートとして送信されます。