トピックへ発行する - Amazon Simple Notification Service

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

トピックへ発行する

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

トピックへメッセージを送信する (コンソール)

トピックを作成する

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

  1. Amazon SNS コンソールにサインインします。

  2. コンソールメニューで、AWS SMS メッセージングをサポートしているリージョン を選択します。

  3. ナビゲーションペインで、[トピック] を選択します。

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

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

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

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

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

      MYTOPIC> Hello World!
  6. [Create topic] (トピックの作成) を選択します。トピックの名前と Amazon リソースネーム (ARN) が、[トピック] ページに表示されます。

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

トピックに 1 回だけメッセージを発行することによって、サブスクリプションを使用して SMS メッセージを複数の受信者に送信できます。

注記

Amazon SNS を使用して SMS メッセージを送信し始めると、AWS アカウントの所在地は SMS サンドボックス内になります。SMS サンドボックスは、SMS 送信者としての評判を損なうことなく、Amazon SNS 機能を試すための安全な環境を提供します。アカウントが SMS サンドボックスにあり、Amazon SNS のすべての機能を使用できますが、SMS メッセージを送信できるのは、確認済みの送信先の電話番号だけです。詳細については、「SMS サンドボックス」を参照してください。

  1. Amazon SNS コンソールにサインインします。

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

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

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

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

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

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

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

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

メッセージを送信するには

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

  1. [Amazon SNS コンソール] の [トピック] ページで、SMS メッセージを送信するトピックの名前を選択します。

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

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

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

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

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

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

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

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

      SMS メッセージのサイズ限度の詳細については、「携帯電話に発行する」を参照してください。

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

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

トピックへメッセージを送信する (AWS SDK)

AWS SDK を使用するには、認証情報を使用して設定する必要があります。詳細については、『AWS SDK とツールのリファレンスガイド』の「共有設定ファイルおよび認証情報ファイル」を参照してください。

次のコードの例は以下の方法を示しています。

  • Amazon SNS トピックを作成します。

  • 携帯電話番号をトピックにサブスクライブする。

  • SMS メッセージをトピックに発行して、登録されているすべての電話番号がメッセージを一度に受信できるようにします。

Java
SDK for Java 2.x
注記

GitHub には、その他のリソースもあります。用例一覧を検索し、AWS コード例リポジトリでの設定と実行の方法を確認してください。

トピックを作成し、その 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); } } }