AWS SDK for PHP 버전 3을 사용한 Amazon SNS에서의 구독 관리 - AWS SDK for PHP

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

AWS SDK for PHP 버전 3을 사용한 Amazon SNS에서의 구독 관리

Amazon Simple Notification Service (Amazon SNS) 주제를 사용하여 Amazon Simple Queue Service (Amazon SQS), HTTP/HTTPS, 이메일 주소, AWS Server Migration Service(AWS SMS) 또는 AWS Lambda로 알림을 보낼 수 있습니다.

구독은 구독자에 대한 메시지 전송을 관리하는 주제에 연결되어 있습니다. 주제 생성에 대한 자세한 내용은 AWS SDK for PHP 버전 3으로 Amazon SNS 주제 관리 단원을 참조하세요.

다음 예제에서는 다음과 같은 작업을 하는 방법을 보여줍니다.

Amazon SNS 사용에 대한 자세한 내용은 System-to-System Messaging을 위해 Amazon SNS 사용하기 단원을 참조하세요.

의 모든 예제 코드는 여기에서 확인할 GitHub 수 있습니다. AWS SDK for PHP

보안 인증 정보

예제 코드를 실행하기 전에 보안 인증에 설명된 대로 AWS 보안 인증을 구성합니다. 그 다음 기본 사용법에 설명된 대로 AWS SDK for PHP를 가져옵니다.

이메일 주소로 주제 구독

이메일 주소의 구독을 시작하려면 Subscribe 작업을 사용합니다.

전달되는 파라미터에 사용되는 값에 따라 subscribe 메서드를 사용하여 서로 다른 여러 엔드포인트가 Amazon SNS 주제를 구독하게 할 수 있습니다. 이는 이 주제의 다른 예제에서 볼 수 있습니다.

다음 예제에서는 엔드포인트가 이메일 주소입니다. 확인 토큰이 이 이메일로 전송됩니다. 수신한 후 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()); }

애플리케이션 엔드포인트가 주제를 구독하도록 등록

웹 앱의 구독을 시작하려면 Subscribe 작업을 사용합니다.

전달되는 파라미터에 사용되는 값에 따라 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 함수로 주제 구독

Lambda 함수의 구독을 시작하려면 Subscribe 작업을 사용합니다.

전달되는 파라미터에 사용되는 값에 따라 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가 주제를 구독하도록 등록

동시에 여러 전화 번호로 SMS 메시지를 전송하려면 각 번호가 주제를 구독하게 합니다.

전화 번호의 구독을 시작하려면 Subscribe 작업을 사용합니다.

전달되는 파라미터에 사용되는 값에 따라 subscribe 메서드를 사용하여 서로 다른 여러 엔드포인트가 Amazon SNS 주제를 구독하게 할 수 있습니다. 이는 이 주제의 다른 예제에서 볼 수 있습니다.

다음 예제에서는 엔드포인트가 국제 통신의 표준인 E.164 형식의 전화 번호입니다.

확인 토큰이 이 전화 번호로 전송됩니다. 수신한 후 3일 이내에 이 확인 토큰을 사용하여 구독을 확인합니다.

Amazon SNS로 SMS 메시지를 전송하는 다른 방법은 AWS SDK for PHP 버전 3으로 Amazon SNS에서 SMS 메시지 전송을 참조하세요.

가져오기

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

주제 구독 확인

구독을 실제로 생성하려면 앞에서 설명했듯이 엔드포인트 소유자가 구독이 처음 설정되었을 때 전송된 토큰을 사용하여 주제로부터 메시지를 수신할 의도를 확인해야 합니다. 확인 토큰은 3일간 유효합니다. 3일 후 새 구독을 생성하여 토큰을 재전송할 수 있습니다.

구독을 확인하려면 ConfirmSubscription작업을 사용하십시오.

가져오기

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

주제 구독 나열

특정 AWS 지역의 기존 구독을 최대 100개까지 나열하려면 ListSubscriptions작업을 사용하십시오.

가져오기

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

주제에서 구독 취소

주제를 구독하는 엔드포인트를 제거하려면 Unsubscribe 작업을 사용합니다.

구독에 삭제 인증이 필요한 경우 구독 또는 주제의 소유자만 구독 해지가 가능하고 AWS 서명이 필요합니다. unsubscribe 호출에 인증이 필요하지 않고 요청자가 구독 소유자가 아닌 경우, 최종 취소 메시지가 해당 엔드포인트로 전송됩니다.

가져오기

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 주제에 메시지 게시

Amazon SNS 주제를 구독하는 각 엔드포인트에 메시지를 전송하려면 Publish 작업을 사용합니다.

메시지 텍스트 및 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()); }