

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# AWS SDK for PHP 버전 3을 사용한 Amazon SNS에서의 주제 관리
<a name="sns-examples-managing-topics"></a>

Amazon Simple Queue Service (Amazon SQS), HTTP/HTTPS URL, 이메일, 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 SDK for PHP 버전 3을 AWS 사용하여 로 인증](credentials.md)에 설명된 대로 AWS 보안 인증을 구성합니다. 그 다음 [AWS SDK for PHP 버전 3 설치](getting-started_installation.md)에 설명된 AWS SDK for PHP를 가져옵니다.

## 주제 생성
<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>

단일 기존 주제의 속성을 가져오려면 [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>

단일 기존 주제의 속성을 업데이트하려면 [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());
}
```