

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

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