Amazon SNS에서 주제 관리 - AWS SDK for JavaScript

AWS SDK for JavaScript V3 API 참조 안내서는 AWS SDK for JavaScript 버전 3 (V3) 의 모든 API 작업을 자세히 설명합니다.

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

Amazon SNS에서 주제 관리

JavaScript code example that applies to Node.js execution

이 Node.js 코드 예제는 다음을 보여 줍니다.

  • Amazon SNS에서 알림을 게시할 수 있는 주제를 생성하는 방법

  • Amazon SNS에서 생성된 주제를 삭제하는 방법

  • 사용 가능한 주제 목록을 가져오는 방법.

  • 주제 속성을 가져오고 설정하는 방법.

시나리오

이 예에서는 일련의 Node.js 모듈을 사용하여 Amazon SNS 주제를 생성, 나열 및 삭제하고 주제 속성을 처리합니다. 이 Node.js 모듈은 SDK for JavaScript에서 SNS 클라이언트 클래스의 다음 메서드를 사용하여 주제를 관리합니다.

사전 필수 작업

이 예제를 설정하고 실행하려면 먼저 이러한 작업들을 완료해야 합니다.

  • 이러한 노드 TypeScript 예를 실행하도록 프로젝트 환경을 설정하고 필수 AWS SDK for JavaScript 모듈과 타사 모듈을 설치합니다. GitHub의 지침을 따릅니다.

  • 사용자 자격 증명을 사용하여 공유 구성 파일을 생성합니다. 공유 보안 인증 파일 제공에 관한 자세한 내용은 AWS SDK 및 도구 참조 가이드Shared config and credentials files 단원을 참조하세요.

중요

이 예는 ECMAScript6(ES6)를 사용하여 클라이언트 서비스 객체 및 명령을 가져오거나 내보내는 방법을 보여줍니다.

  • 따라서 Node.js 버전 13.x 이상이 필요합니다. 최신 버전의 Node.js를 다운로드하여 설치하려면 Node.js downloads를 참조하세요.

  • CommonJS 구문을 사용하려는 경우 JavaScript ES6/CommonJS 구문 단원을 참조하세요.

주제 생성

이 예에서는 Node.js 모듈을 사용하여 Amazon SNS 주제를 생성합니다.

libs 디렉터리를 생성하고 파일 이름이 snsClient.js인 Node.js 모듈을 생성합니다. 이 모듈에 아래 코드를 복사하여 붙여 넣으면 Amazon SNS 클라이언트 객체가 생성됩니다. REGION을 AWS 리전으로 바꿉니다.

import { SNSClient } from "@aws-sdk/client-sns"; // The AWS Region can be provided here using the `region` property. If you leave it blank // the SDK will default to the region set in your AWS config. export const snsClient = new SNSClient({});

이 코드 예는 여기 GitHub에서 찾을 수 있습니다.

파일 이름이 create-topic.js인 Node.js 모듈을 생성합니다. 필수 클라이언트 및 패키지 설치를 포함하여 앞서 나와 있는 것처럼 SDK를 구성합니다.

SNS 클라이언트 클래스의 CreateTopicCommand 메서드에 새 주제의 Name을 전달할 객체를 생성합니다. CreateTopicCommand 메서드를 직접적으로 호출하려면 Amazon SNS 서비스 객체를 간접적으로 호출하는 비동기 함수를 생성하여 파라미터 객체를 전달합니다. 반환되는 data에는 주제의 ARN이 포함됩니다.

참고

TOPIC_NAME을 주제 이름으로 바꿉니다.

import { CreateTopicCommand } from "@aws-sdk/client-sns"; import { snsClient } from "../libs/snsClient.js"; /** * @param {string} topicName - The name of the topic to create. */ export const createTopic = async (topicName = "TOPIC_NAME") => { const response = await snsClient.send( new CreateTopicCommand({ Name: topicName }), ); console.log(response); // { // '$metadata': { // httpStatusCode: 200, // requestId: '087b8ad2-4593-50c4-a496-d7e90b82cf3e', // extendedRequestId: undefined, // cfId: undefined, // attempts: 1, // totalRetryDelay: 0 // }, // TopicArn: 'arn:aws:sns:us-east-1:xxxxxxxxxxxx:TOPIC_NAME' // } return response; };

예를 실행하려면 명령 프롬프트에서 다음을 입력합니다.

node create-topic.js

이 코드 예는 여기 GitHub에서 찾을 수 있습니다.

주제 나열

이 예에서는 Node.js 모듈을 사용하여 모든 Amazon SNS 주제를 나열합니다.

libs 디렉터리를 생성하고 파일 이름이 snsClient.js인 Node.js 모듈을 생성합니다. 이 모듈에 아래 코드를 복사하여 붙여 넣으면 Amazon SNS 클라이언트 객체가 생성됩니다. REGION을 AWS 리전으로 바꿉니다.

import { SNSClient } from "@aws-sdk/client-sns"; // The AWS Region can be provided here using the `region` property. If you leave it blank // the SDK will default to the region set in your AWS config. export const snsClient = new SNSClient({});

이 코드 예는 여기 GitHub에서 찾을 수 있습니다.

파일 이름이 list-topics.js인 Node.js 모듈을 생성합니다. 필수 클라이언트 및 패키지 설치를 포함하여 앞서 나와 있는 것처럼 SDK를 구성합니다.

SNS 클라이언트 클래스의 ListTopicsCommand 메서드에 전달할 비어 있는 객체를 생성합니다. ListTopicsCommand 메서드를 직접적으로 호출하려면 Amazon SNS 서비스 객체를 간접적으로 호출하는 비동기 함수를 생성하여 파라미터 객체를 전달합니다. 반환된 data에는 주제 Amazon 리소스 이름(ARN)의 배열이 포함되어 있습니다.

import { ListTopicsCommand } from "@aws-sdk/client-sns"; import { snsClient } from "../libs/snsClient.js"; export const listTopics = async () => { const response = await snsClient.send(new ListTopicsCommand({})); console.log(response); // { // '$metadata': { // httpStatusCode: 200, // requestId: '936bc5ad-83ca-53c2-b0b7-9891167b909e', // extendedRequestId: undefined, // cfId: undefined, // attempts: 1, // totalRetryDelay: 0 // }, // Topics: [ { TopicArn: 'arn:aws:sns:us-east-1:xxxxxxxxxxxx:mytopic' } ] // } return response; };

예를 실행하려면 명령 프롬프트에서 다음을 입력합니다.

node list-topics.js

이 샘플 코드는 GitHub에서 찾을 수 있습니다.

주제 삭제

이 예에서는 Node.js 모듈을 사용하여 Amazon SNS 주제를 삭제합니다.

libs 디렉터리를 생성하고 파일 이름이 snsClient.js인 Node.js 모듈을 생성합니다. 이 모듈에 아래 코드를 복사하여 붙여 넣으면 Amazon SNS 클라이언트 객체가 생성됩니다. REGION을 AWS 리전으로 바꿉니다.

import { SNSClient } from "@aws-sdk/client-sns"; // The AWS Region can be provided here using the `region` property. If you leave it blank // the SDK will default to the region set in your AWS config. export const snsClient = new SNSClient({});

이 코드 예는 여기 GitHub에서 찾을 수 있습니다.

파일 이름이 delete-topic.js인 Node.js 모듈을 생성합니다. 필수 클라이언트 및 패키지 설치를 포함하여 앞서 나와 있는 것처럼 SDK를 구성합니다.

SNS 클라이언트 클래스의 DeleteTopicCommand 메서드에 전달할 삭제할 주제의 TopicArn을 포함하는 객체를 생성합니다. DeleteTopicCommand 메서드를 직접적으로 호출하려면 Amazon SNS 클라이언트 서비스 객체를 간접적으로 호출하는 비동기 함수를 생성하여 파라미터 객체를 전달합니다.

참고

TOPIC_ARN을 삭제하려는 주제의 Amazon 리소스 이름(ARN)으로 바꿉니다.

import { DeleteTopicCommand } from "@aws-sdk/client-sns"; import { snsClient } from "../libs/snsClient.js"; /** * @param {string} topicArn - The ARN of the topic to delete. */ export const deleteTopic = async (topicArn = "TOPIC_ARN") => { const response = await snsClient.send( new DeleteTopicCommand({ TopicArn: topicArn }), ); console.log(response); // { // '$metadata': { // httpStatusCode: 200, // requestId: 'a10e2886-5a8f-5114-af36-75bd39498332', // extendedRequestId: undefined, // cfId: undefined, // attempts: 1, // totalRetryDelay: 0 // } // } };

예를 실행하려면 명령 프롬프트에서 다음을 입력합니다.

node delete-topic.js

이 코드 예는 여기 GitHub에서 찾을 수 있습니다.

주제 속성 가져오기

이 예에서는 Node.js 모듈을 사용하여 Amazon SNS 주제의 속성을 검색합니다.

libs 디렉터리를 생성하고 파일 이름이 snsClient.js인 Node.js 모듈을 생성합니다. 이 모듈에 아래 코드를 복사하여 붙여 넣으면 Amazon SNS 클라이언트 객체가 생성됩니다. REGION을 AWS 리전으로 바꿉니다.

import { SNSClient } from "@aws-sdk/client-sns"; // The AWS Region can be provided here using the `region` property. If you leave it blank // the SDK will default to the region set in your AWS config. export const snsClient = new SNSClient({});

이 코드 예는 여기 GitHub에서 찾을 수 있습니다.

파일 이름이 get-topic-attributes.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성합니다.

SNS 클라이언트 클래스의 GetTopicAttributesCommand 메서드에 전달할 삭제할 주제의 TopicArn을 포함하는 객체를 생성합니다. GetTopicAttributesCommand 메서드를 직접적으로 호출하려면 Amazon SNS 클라이언트 서비스 객체를 간접적으로 호출하여 파라미터 객체를 전달합니다.

참고

TOPIC_ARN을 주제의 ARN으로 바꿉니다.

import { GetTopicAttributesCommand } from "@aws-sdk/client-sns"; import { snsClient } from "../libs/snsClient.js"; /** * @param {string} topicArn - The ARN of the topic to retrieve attributes for. */ export const getTopicAttributes = async (topicArn = "TOPIC_ARN") => { const response = await snsClient.send( new GetTopicAttributesCommand({ TopicArn: topicArn, }), ); console.log(response); // { // '$metadata': { // httpStatusCode: 200, // requestId: '36b6a24e-5473-5d4e-ac32-ff72d9a73d94', // extendedRequestId: undefined, // cfId: undefined, // attempts: 1, // totalRetryDelay: 0 // }, // Attributes: { // Policy: '{...}', // Owner: 'xxxxxxxxxxxx', // SubscriptionsPending: '1', // TopicArn: 'arn:aws:sns:us-east-1:xxxxxxxxxxxx:mytopic', // TracingConfig: 'PassThrough', // EffectiveDeliveryPolicy: '{"http":{"defaultHealthyRetryPolicy":{"minDelayTarget":20,"maxDelayTarget":20,"numRetries":3,"numMaxDelayRetries":0,"numNoDelayRetries":0,"numMinDelayRetries":0,"backoffFunction":"linear"},"disableSubscriptionOverrides":false,"defaultRequestPolicy":{"headerContentType":"text/plain; charset=UTF-8"}}}', // SubscriptionsConfirmed: '0', // DisplayName: '', // SubscriptionsDeleted: '1' // } // } return response; };

예를 실행하려면 명령 프롬프트에서 다음을 입력합니다.

node get-topic-attributes.js

이 코드 예는 여기 GitHub에서 찾을 수 있습니다.

주제 속성 설정

이 예에서는 Node.js 모듈을 사용하여 Amazon SNS 주제의 변경 가능한 속성을 설정합니다.

libs 디렉터리를 생성하고 파일 이름이 snsClient.js인 Node.js 모듈을 생성합니다. 이 모듈에 아래 코드를 복사하여 붙여 넣으면 Amazon SNS 클라이언트 객체가 생성됩니다. REGION을 AWS 리전으로 바꿉니다.

import { SNSClient } from "@aws-sdk/client-sns"; // The AWS Region can be provided here using the `region` property. If you leave it blank // the SDK will default to the region set in your AWS config. export const snsClient = new SNSClient({});

이 코드 예는 여기 GitHub에서 찾을 수 있습니다.

파일 이름이 set-topic-attributes.js인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성합니다.

속성을 설정하려고 하는 주제의 TopicArn, 설정할 속성의 이름, 해당 속성의 새 값을 포함하여 속성 업데이트를 위한 파라미터를 포함하는 객체를 생성합니다. Policy, DisplayNameDeliveryPolicy 속성만 설정할 수 있습니다. SNS 클라이언트 클래스의 SetTopicAttributesCommand 메서드에 파라미터를 전달합니다. SetTopicAttributesCommand 메서드를 직접적으로 호출하려면 Amazon SNS 클라이언트 서비스 객체를 간접적으로 호출하는 비동기 함수를 생성하여 파라미터 객체를 전달합니다.

참고

ATTRIBUTE_NAME을 설정할 속성의 이름으로, TOPIC_ARN을 속성을 설정하려는 주제의 Amazon 리소스 이름(ARN)으로, NEW_ATTRIBUTE_VALUE를 해당 속성의 새 값으로 바꿉니다.

import { SetTopicAttributesCommand } from "@aws-sdk/client-sns"; import { snsClient } from "../libs/snsClient.js"; export const setTopicAttributes = async ( topicArn = "TOPIC_ARN", attributeName = "DisplayName", attributeValue = "Test Topic", ) => { const response = await snsClient.send( new SetTopicAttributesCommand({ AttributeName: attributeName, AttributeValue: attributeValue, TopicArn: topicArn, }), ); console.log(response); // { // '$metadata': { // httpStatusCode: 200, // requestId: 'd1b08d0e-e9a4-54c3-b8b1-d03238d2b935', // extendedRequestId: undefined, // cfId: undefined, // attempts: 1, // totalRetryDelay: 0 // } // } return response; };

예를 실행하려면 명령 프롬프트에서 다음을 입력합니다.

node set-topic-attributes.js

이 코드 예는 여기 GitHub에서 찾을 수 있습니다.