

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

# AWS SDK for PHP バージョン 3 を使用した Amazon SNS の例
<a name="sns-examples"></a>

Amazon Simple Notification Service (Amazon SNS) は、サブスクライブしているエンドポイントまたはクライアントへのメッセージの配信または送信を調整して管理するウェブサービスです。

Amazon SNS には、発行者 (生産者とも呼ばれます) とサブスクライバー (消費者とも呼ばれます) という 2 種類のクライアントが存在します。発行者は、論理アクセスポイントおよび通信チャネルであるトピックにメッセージを作成して送信することで、受信者と非同期的に通信します。サブスクライバー (ウェブサーバー、E メールアドレス、Amazon SQS キュー、 AWS Lambda 関数) は、トピックにサブスクライブするときに、サポートされているプロトコル (Amazon SQS、HTTP/HTTPS URLs、E メール AWS SMS、Lambda) のいずれかを介してメッセージまたは通知を消費または受信します。

 AWS SDK for PHP バージョン 3 のすべてのサンプルコードは[GitHub で入手できます](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code)。

**Topics**
+ [トピックを管理する](sns-examples-managing-topics.md)
+ [サブスクリプションの管理](sns-examples-subscribing-unsubscribing-topics.md)
+ [Amazon SMS メッセージを送信する](sns-examples-sending-sms.md)

# AWS SDK for PHP バージョン 3 を使用した Amazon SNS でのトピックの管理
<a name="sns-examples-managing-topics"></a>

Amazon Simple Queue Service (Amazon SQS)、HTTP/HTTPS URL、E メール、AWS SMS または AWS Lambda に通知を送信するには、まずそのトピックのサブスクライバへのメッセージ配信を管理するトピックを管理する必要があります。

オブザーバー設計パターンの観点で言うと、トピックは件名と同様です。トピックが作成されたら、メッセージがトピックに発行されたときに自動的に通知を受け取るサブスクライバを追加します。

トピックへのサブスクライブの詳細については、「[AWS SDK for PHP バージョン 3 を使用した Amazon SNS でのサブスクリプションの管理](sns-examples-subscribing-unsubscribing-topics.md)」を参照してください。

以下の例では、次の方法を示しています。
+ [CreateTopic](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#createtopic) を使用して通知を発行するトピックを作成する。
+ [ListTopics](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#listtopic) を使用してリクエスタのトピックのリストを返す。
+ [DeleteTopic](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#deletetopic) を使用してトピックとそのすべてのサブスクリプションを削除する。
+ [GetTopicAttributes](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#gettopicattributes) を使用してトピックのすべてのプロパティを返す。
+ [SetTopicAttributes](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#settopicattributes) を使用して、トピックの所有者がトピックの属性を新しい値に設定できるようにする。

Amazon SNS の使用の詳細については、「[メッセージの配信ステータスの Amazon SNS トピック属性を使用する](https://docs.aws.amazon.com/sns/latest/dg/sns-topic-attributes.html)を」参照してください。

AWS SDK for PHP 用のすべてのサンプルコードは [GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code) で入手できます。

## 認証情報
<a name="examplecredentials"></a>

サンプルコードを実行する前に、AWS の認証情報を設定します ([AWS SDK for PHP バージョン 3 AWS を使用した での認証](credentials.md) を参照)。AWS SDK for PHP からのインポート ([AWS SDK for PHP バージョン 3 のインストール](getting-started_installation.md) を参照)。

## トピックの作成
<a name="create-a-topic"></a>

トピックを作成するには、[CreateTopic](https://docs.aws.amazon.com/sns/latest/api/API_CreateTopic.html) オペレーションを使用します。

AWS アカウント 内の各トピック名は一意にする必要があります。

 **インポート**。

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

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

 **サンプルコード** 

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

$topicname = 'myTopic';

try {
    $result = $SnSclient->createTopic([
        'Name' => $topicname,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## トピックをリストする
<a name="list-your-topics"></a>

現在の AWS リージョンにおける最大 100 件の既存のトピックをリストするには、[ListTopics](https://docs.aws.amazon.com/sns/latest/api/API_ListTopics.html) オペレーションを使用します。

 **インポート**。

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

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

 **サンプルコード** 

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

try {
    $result = $SnSclient->listTopics();
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## トピックの削除
<a name="delete-a-topic"></a>

既存のトピックとそのすべてのサブスクリプションを削除するには、[DeleteTopic](https://docs.aws.amazon.com/sns/latest/api/API_DeleteTopic.html) オペレーションを使用します。

サブスクライバにまだ配信されていないメッセージもすべて削除されます。

 **インポート**。

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

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

 **サンプルコード** 

```
$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());
}
```

## トピック属性を取得する
<a name="get-topic-attributes"></a>

1 つの既存のトピックのプロパティを取得するには、[GetTopicAttributes](https://docs.aws.amazon.com/sns/latest/api/API_GetTopicAttributes.html) オペレーションを使用します。

 **インポート**。

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

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

 **サンプルコード** 

```
$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->getTopicAttributes([
        'TopicArn' => $topic,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## トピック属性を設定する
<a name="set-topic-attributes"></a>

1 つの既存のトピックのプロパティを更新するには、[SetTopicAttributes](https://docs.aws.amazon.com/sns/latest/api/API_SetTopicAttributes.html) オペレーションを使用します。

`Policy`、`DisplayName`、および `DeliveryPolicy` 属性のみ設定できます。

 **インポート**。

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

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

 **サンプルコード** 

```
$SnSclient = new SnsClient([
    'profile' => 'default',
    'region' => 'us-east-1',
    'version' => '2010-03-31'
]);
$attribute = 'Policy | DisplayName | DeliveryPolicy';
$value = 'First Topic';
$topic = 'arn:aws:sns:us-east-1:111122223333:MyTopic';

try {
    $result = $SnSclient->setTopicAttributes([
        'AttributeName' => $attribute,
        'AttributeValue' => $value,
        'TopicArn' => $topic,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

# AWS SDK for PHP バージョン 3 を使用した Amazon SNS でのサブスクリプションの管理
<a name="sns-examples-subscribing-unsubscribing-topics"></a>

Amazon Simple Notification Service (Amazon SNS) トピックを使用して、Amazon Simple Queue Service (Amazon SQS)、HTTP/HTTPS、E メールアドレス、 AWS Server Migration Service (AWS SMS)、または に通知を送信します AWS Lambda。

サブスクリプションは、サブスクライバへのメッセージの送信を管理するトピックにアタッチされます。トピックの作成の詳細については、[「 AWS SDK for PHP バージョン 3 を使用した Amazon SNS でのトピックの管理](sns-examples-managing-topics.md)」を参照してください。

以下の例では、次の方法を示しています。
+ [Subscribe](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#subscribe) を使用して既存のトピックにサブスクライブする。
+ [ConfirmSubscription](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#confirmsubscription) を使用してサブスクリプションを確認する。
+ [ListSubscriptionsByTopic](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#listsubscriptionsbytopic) を使用して既存のサブスクリプションをリストする。
+ [Unsubscribe](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#unsubscribe) を使用してサブスクリプションを削除する。
+ [Publish](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#publish) を使用してトピックのすべてのサブスクライバにメッセージを送信する。

Amazon SNS の使用の詳細については、「[Amazon SNS を使用したシステム間メッセージング](https://docs.aws.amazon.com/sns/latest/dg/sns-system-to-system-messaging.html)」を参照してください。

のすべてのサンプルコード AWS SDK for PHP は[GitHub で入手できます](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code)。

## 認証情報
<a name="examplecredentials"></a>

サンプルコードを実行する前に、「」の説明に従って AWS 認証情報を設定します[AWS SDK for PHP バージョン 3 AWS を使用した での認証](credentials.md)。次に AWS SDK for PHP、「」の説明に従って をインポートします[AWS SDK for PHP バージョン 3 のインストール](getting-started_installation.md)。

## E メールアドレスを SNS トピックにサブスクライブする
<a name="subscribe-an-email-address-to-a-topic"></a>

E メールアドレスへのサブスクリプションを開始するには、[Subscribe](https://docs.aws.amazon.com/sns/latest/api/API_Subscribe.html) オペレーションを使用します。

subscribe メソッドを使用し、渡されるパラメータに使用する値に応じて Amazon SNS トピックに複数のさまざまなエンドポイントをサブスクライブできます。これは、このトピックの他の例に示されます。

この例では、エンドポイントは E メールアドレスです。確認トークンがこの E メールに送信されます。受け取ってから 3 日以内に、この確認トークンを使用してサブスクリプションを確認します。

 **インポート** 

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

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

 **サンプルコード** 

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

$protocol = 'email';
$endpoint = 'sample@example.com';
$topic = 'arn:aws:sns:us-east-1:111122223333:MyTopic';

try {
    $result = $SnSclient->subscribe([
        'Protocol' => $protocol,
        'Endpoint' => $endpoint,
        'ReturnSubscriptionArn' => true,
        'TopicArn' => $topic,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## アプリケーションエンドポイントをトピックにサブスクライブする
<a name="subscribe-an-application-endpoint-to-a-topic"></a>

ウェブアプリへのサブスクリプションを開始するには、[Subscribe](https://docs.aws.amazon.com/sns/latest/api/API_Subscribe.html) オペレーションを使用します。

subscribe メソッドを使用し、渡されるパラメータに使用する値に応じて Amazon SNS トピックに複数のさまざまなエンドポイントをサブスクライブできます。これは、このトピックの他の例に示されます。

この例では、エンドポイントは URL です。確認トークンがこのウェブアドレスに送信されます。受け取ってから 3 日以内に、この確認トークンを使用してサブスクリプションを確認します。

 **インポート** 

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

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

 **サンプルコード** 

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

$protocol = 'https';
$endpoint = 'https://';
$topic = 'arn:aws:sns:us-east-1:111122223333:MyTopic';

try {
    $result = $SnSclient->subscribe([
        'Protocol' => $protocol,
        'Endpoint' => $endpoint,
        'ReturnSubscriptionArn' => true,
        'TopicArn' => $topic,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Lambda 関数をトピックにサブスクライブする
<a name="subscribe-a-lam-function-to-a-topic"></a>

Lambda 関数へのサブスクリプションを開始するには、[Subscribe](https://docs.aws.amazon.com/sns/latest/api/API_Subscribe.html) オペレーションを使用します。

subscribe メソッドを使用し、渡されるパラメータに使用する値に応じて Amazon SNS トピックに複数のさまざまなエンドポイントをサブスクライブできます。これは、このトピックの他の例に示されます。

この例では、エンドポイントは Lambda 関数です。確認トークンがこの Lambda 関数に送信されます。受け取ってから 3 日以内に、この確認トークンを使用してサブスクリプションを確認します。

 **インポート** 

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

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

 **サンプルコード** 

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

$protocol = 'lambda';
$endpoint = 'arn:aws:lambda:us-east-1:123456789023:function:messageStore';
$topic = 'arn:aws:sns:us-east-1:111122223333:MyTopic';

try {
    $result = $SnSclient->subscribe([
        'Protocol' => $protocol,
        'Endpoint' => $endpoint,
        'ReturnSubscriptionArn' => true,
        'TopicArn' => $topic,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## トピックにテキスト SMS をサブスクライブする
<a name="subscribe-a-text-sms-to-a-topic"></a>

複数の電話番号に SMS メッセージを同時に送信するには、各番号をトピックにサブスクライブします。

電話番号へのサブスクリプションを開始するには、[Subscribe](https://docs.aws.amazon.com/sns/latest/api/API_Subscribe.html) オペレーションを使用します。

subscribe メソッドを使用し、渡されるパラメータに使用する値に応じて Amazon SNS トピックに複数のさまざまなエンドポイントをサブスクライブできます。これは、このトピックの他の例に示されます。

この例では、エンドポイントは E.164 形式 (国際的な音声通信の規格) の電話番号です。

確認トークンがこの電話番号に送信されます。受け取ってから 3 日以内に、この確認トークンを使用してサブスクリプションを確認します。

Amazon SNS を使用して SMS メッセージを送信するもう 1 つの方法については、「[AWS SDK for PHP バージョン 3 を使用した Amazon SNS での SMS メッセージの送信](sns-examples-sending-sms.md)」を参照してください。

 **インポート** 

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

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

 **サンプルコード** 

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

$protocol = 'sms';
$endpoint = '+1XXX5550100';
$topic = 'arn:aws:sns:us-east-1:111122223333:MyTopic';

try {
    $result = $SnSclient->subscribe([
        'Protocol' => $protocol,
        'Endpoint' => $endpoint,
        'ReturnSubscriptionArn' => true,
        'TopicArn' => $topic,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## トピックへのサブスクリプションを確認する
<a name="confirm-subscription-to-a-topic"></a>

実際にサブスクリプションを作成するには、エンドポイントの所有者が、前述のとおりサブスクリプションが最初に確立されたときに送信されるトークンを使用して、トピックからメッセージを受信する意思があることを確認する必要があります。確認トークンの有効期間は 3 日間です。3 日間後、新しいサブスクリプションを作成することでトークンを再送信することができます。

サブスクリプションを確認するには、[ConfirmSubscription](https://docs.aws.amazon.com/sns/latest/api/API_ConfirmSubscription.html) オペレーションを使用します。

 **インポート** 

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

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

 **サンプルコード** 

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

$subscription_token = 'arn:aws:sns:us-east-1:111122223333:MyTopic:123456-abcd-12ab-1234-12ba3dc1234a';
$topic = 'arn:aws:sns:us-east-1:111122223333:MyTopic';

try {
    $result = $SnSclient->confirmSubscription([
        'Token' => $subscription_token,
        'TopicArn' => $topic,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## トピックへのサブスクリプションをリストする
<a name="list-subscriptions-to-a-topic"></a>

特定の AWS リージョンで最大 100 個の既存のサブスクリプションを一覧表示するには、[ListSubscriptions](https://docs.aws.amazon.com/sns/latest/api/API_ListSubscriptions.html) オペレーションを使用します。

 **インポート** 

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

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

 **サンプルコード** 

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

try {
    $result = $SnSclient->listSubscriptions();
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## トピックからサブスクリプションを解除する
<a name="unsubscribe-from-a-topic"></a>

トピックにサブスクライブされたエンドポイントを削除するには、[Unsubscribe](https://docs.aws.amazon.com/sns/latest/api/API_Unsubscribe.html) オペレーションを使用します。

サブスクリプションの削除に認証が必要な場合は、サブスクリプションの所有者またはトピックの所有者のみがサブスクリプションを解除でき、 AWS 署名が必要です。サブスクリプション解除呼び出しに認証が必要なく、リクエスタがサブスクリプション所有者でない場合は、最終的なキャンセル確認メッセージがエンドポイントに配信されます。

 **インポート** 

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

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

 **サンプルコード** 

```
$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());
}
```

## Amazon SNS トピックへのメッセージの発行
<a name="publish-a-message-to-an-sns-topic"></a>

Amazon SNS トピックにサブスクライブされた各エンドポイントにメッセージを配信するには、[Publish](https://docs.aws.amazon.com/sns/latest/api/API_Publish.html) オペレーションを使用します。

Amazon SNS トピックのメッセージテキストと Amazon リソースネーム (ARN) など、メッセージを発行するためのパラメータを含むオブジェクトを作成します。

 **インポート** 

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

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

 **サンプルコード** 

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

$message = 'This message is sent from a Amazon SNS code sample.';
$topic = 'arn:aws:sns:us-east-1:111122223333:MyTopic';

try {
    $result = $SnSclient->publish([
        'Message' => $message,
        'TopicArn' => $topic,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

# AWS SDK for PHP バージョン 3 による Amazon SNS での SMS メッセージの送信
<a name="sns-examples-sending-sms"></a>

Amazon Simple Notification Service (Amazon SNS) を使用して、SMS 対応デバイスにテキストメッセージ (SMS メッセージ) を送信できます。多くの電話番号にトピックを取り上げ、トピックへメッセージを送信することにより、電話番号へメッセージを直接送信または、一度に複数の電話番号にメッセージを送信できます。

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

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

以下の例では、次の方法を示しています。
+ [GetSMSAttributes](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#getsmsattributes) を使用して、アカウントから SMS メッセージを送信するためのデフォルト設定を取得する。
+ [SetSMSAttributes](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#setsmsattributes) を使用して、アカウントから SMS メッセージを送信するためのデフォルト設定を更新する。
+ [CheckIfPhoneNumberISOptedOut](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#checkifphonenumberisoptedout) を使用して、指定された電話番号の所有者がアカウントからの SMS メッセージの受信をオプトアウトしているかどうかを調べる。
+ [CheckIfPhoneNumberISOptedOut](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#listphonenumbersoptedout) を使用して、所有者がアカウントからの SMS メッセージの受信をオプトアウトしている電話番号をリストする。
+ [Publish](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#publish) を使用して、電話番号に直接テキストメッセージ (SMS) を送信する。

Amazon SNS の使用の詳細については、「[受信者が携帯電話番号の場合のユーザー通知に Amazon SNS を使用する (SMS 送信)](https://docs.aws.amazon.com/sns/latest/dg/sns-mobile-phone-number-as-subscriber.html)」を参照してください。

AWS SDK for PHP 用のすべてのサンプルコードは [GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code) で入手できます。

## 認証情報
<a name="examplecredentials"></a>

サンプルコードを実行する前に、AWS の認証情報を設定します ([AWS SDK for PHP バージョン 3 AWS を使用した での認証](credentials.md) を参照)。AWS SDK for PHP からのインポート ([AWS SDK for PHP バージョン 3 のインストール](getting-started_installation.md) を参照)。

## SMS 属性の取得
<a name="get-sms-attributes"></a>

SMS メッセージのデフォルト設定を取得するには、[GetSMSAttributes](https://docs.aws.amazon.com/sns/latest/api/API_GetSMSAttributes.html) オペレーションを使用します。

この例では、`DefaultSMSType` 属性を取得します。この属性は、SMS メッセージが `Promotional` (コストが最も低くなるようにメッセージ配信が最適化されます) として送信されるのか、`Transactional` (信頼性が最も高くなるようにメッセージ配信が最適化されます) として送信されるのかを制御します。

 **インポート**。

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

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

 **サンプルコード** 

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

try {
    $result = $SnSclient->getSMSAttributes([
        'attributes' => ['DefaultSMSType'],
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## SMS 属性の設定
<a name="set-sms-attributes"></a>

SMS メッセージのデフォルト設定を更新するには、[SetSMSAttributes](https://docs.aws.amazon.com/sns/latest/api/API_SetSMSAttributes.html) オペレーションを使用します。

この例では、`DefaultSMSType` 属性を `Transactional` に設定します。これにより、信頼性が最も高くなるようにメッセージ配信が最適化されます。

 **インポート**。

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

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

 **サンプルコード** 

```
$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());
}
```

## 電話番号がオプトアウトしているかどうかを確認する
<a name="check-if-a-phone-number-has-opted-out"></a>

指定された電話番号の所有者がアカウントからの SMS メッセージの受信をオプトアウトしているかどうかを調べるには、[CheckIfPhoneNumberIsOptedOut](https://docs.aws.amazon.com/sns/latest/api/API_CheckIfPhoneNumberIsOptedOut.html) オペレーションを使用します。

この例では、電話番号は E.164 形式 (国際的な音声通信の規格) です。

 **インポート**。

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

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

 **サンプルコード** 

```
$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());
}
```

## オプトアウトした電話番号を一覧表示する
<a name="list-opted-out-phone-numbers"></a>

所有者がアカウントからの SMS メッセージの受信をオプトアウトしている電話番号のリストを取得するには、[ListPhoneNumbersOptedOut](https://docs.aws.amazon.com/sns/latest/api/API_ListPhoneNumbersOptedOut.html) オペレーションを使用します。

 **インポート**。

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

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

 **サンプルコード** 

```
$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());
}
```

## テキストメッセージ (SMS メッセージ) に発行する
<a name="publish-to-a-text-message-sms-message"></a>

電話番号に直接テキストメッセージ (SMS メッセージ) を配信するには、[Publish](https://docs.aws.amazon.com/sns/latest/api/API_Publish.html) オペレーションを使用します。

この例では、電話番号は E.164 形式 (国際的な音声通信の規格) です。

SMS メッセージには最大 140 バイト含めることができます。1 回の SMS 発行アクションのサイズ制限は、1,600 バイトです。

SMS メッセージの送信の詳細については、「[SMS メッセージの送信](https://docs.aws.amazon.com/sns/latest/dg/sms_publish-to-phone.html)」を参照してください。

 **インポート**。

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

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

 **サンプルコード** 

```
$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());
}
```