저작권 안내
- 책 또는 웹사이트의 내용을 복제하여 다른 곳에 게시하는 것을 금지합니다.
- 책 또는 웹사이트의 내용을 발췌, 요약하여 강의 자료, 발표 자료, 블로그 포스팅 등으로 만드는 것을 금지합니다.
AWS API, CLI 활용하기
이재홍 http://www.pyrasis.com 2014.03.24 ~ 2014.06.30
SNS
SNS 토픽에 메시지를 보내는 방법은 다음과 같습니다.
- Message: 메시지 내용을 설정합니다. UTF-8로 인코딩해야 하며 최대 크기는 262,144 바이트입니다(문자 개수가 아닌 바이트 단위입니다).
- Subject: 이메일 구독에 메시지를 보낼 때 이메일의 제목입니다. 다른 프로토콜에는 사용하지 않습니다.
- TopicArn: SNS 토픽의 ARN을 설정합니다.
- TargetArn: EndpointArn을 설정합니다. EndpointArn은 Device Token을 SNS 애플리케이션에 추가하면 생성됩니다. 이 옵션은 SNS 토픽이 아닌 개별적으로 메시지를 보낼 때 사용합니다. TopicArn과 TargetArn은 둘 중 하나만 사용할 수 있습니다.
SNS를 사용하는 방법은 '26장 푸시 알림 서비스 SNS'를 참조하기 바랍니다.
sns_1.js
var AWS = require('aws-sdk');
AWS.config.loadFromPath('./config.json');
var sns = new AWS.SNS();
var params = {
Message: 'Hello SNS', // 필수
Subject: 'Hello',
TopicArn: 'arn:aws:sns:ap-northeast-1:232075047203:admin', // 필수
//TargetArn: 'arn:aws:sns:ap-northeast-1:232075047203:endpoint/GCM/ExampleGCM/bae3463b-d6c0-3d81-89cf-44c5a8662de5', // 필수
};
sns.publish(params, function (err, data) {
if (err)
console.log(err, err.stack);
else
console.log(data);
});
AWS CLI
$ aws sns publish --message "Hello SNS" --subject "Hello" --topic-arn arn:aws:sns:ap-northeast-1:232075047203:admin
$ aws sns publish --message "Hello SNS" --subject "Hello" --target-arn arn:aws:sns:ap-northeast-1:232075047203:endpoint/GCM/ExampleGCM/bae3463b-d6c0-3d81-89cf-44c5a8662de5
SNS 토픽에 프로토콜별로 다른 메시지를 보내는 방법은 다음과 같습니다.
- Message: 메시지 내용을 설정합니다. JSON 형태로 작성해야 하며, 텍스트 형식으로 변환해서 전달해야합니다. 각 프로토콜별로 보낼 메시지를 설정할 수 있고, 여기서 설정하지 않은 프로토콜에는 default에 설정한 메시지를 보냅니다.
- TopicArn: SNS 토픽의 ARN을 설정합니다.
- MessageStructure: Message를 JSON 텍스트로 설정했다면 json으로 설정합니다.
sns_2.js
var AWS = require('aws-sdk');
AWS.config.loadFromPath('./config.json');
var sns = new AWS.SNS();
var message = {
default: 'Hello SNS Topic',
email: 'Hello SNS email',
sqs: 'Hello SNS SQS',
http: 'Hello SNS http',
APNS: {
aps: {
alert: 'Hello SNS APNS',
sound: 'default'
}
},
GCM: {
data: {
message: 'Hello SNS GCM'
}
}
};
var params = {
Message: JSON.stringify(message), // 필수
TopicArn: 'arn:aws:sns:ap-northeast-1:232075047203:admin', // 필수
MessageStructure: 'json'
};
sns.publish(params, function (err, data) {
if (err)
console.log(err, err.stack);
else
console.log(data);
});
메시지 내용을 JSON 형태로 작성합니다.
{
"default": "Hello SNS Topic",
"email": "Hello SNS email",
"sqs": "Hello SNS SQS",
"http": "Hello SNS http",
"APNS": {
"aps": {
"alert": "Hello SNS APNS",
"sound": "default"
}
},
"GCM": {
"data": {
"message": "Hello SNS GCM"
}
}
}
--message 옵션에 작성한 JSON을 한 줄로 만들고 ' '(작은 따옴표)로 묶어서 설정합니다.
AWS CLI
$ aws sns publish --message '{ "default": "Hello SNS Topic", "email": "Hello SNS email", "sqs": "Hello SNS SQS", "http": "Hello SNS http", "APNS": { "aps": { "alert": "Hello SNS APNS", "sound": "default" } }, "GCM": { "data": { "message": "Hello SNS GCM" } } }' --topic-arn arn:aws:sns:ap-northeast-1:232075047203:admin --message-structure json
SNS 토픽의 구독 목록을 출력하는 방법은 다음과 같습니다.
- TopicArn: SNS 토픽의 ARN을 설정합니다..
- NextToken: API 호출 한 번에 내용을 모두 받아 올 수 없을 때 NextToken 값이 리턴됩니다. 두 번째 API 호출부터 직전 API 호출에서 받은 NextToken 값을 설정하면 다음 내용을 받아옵니다.
sns_3.js
var AWS = require('aws-sdk');
AWS.config.loadFromPath('./config.json');
var sns = new AWS.SNS();
var params = {
TopicArn: 'arn:aws:sns:ap-northeast-1:232075047203:admin', // 필수
//NextToken: ''
};
sns.listSubscriptionsByTopic(params, function (err, data) {
if (err)
console.log(err, err.stack);
else
console.log(data);
});
AWS CLI
$ aws sns list-subscriptions-by-topic --topic-arn arn:aws:sns:ap-northeast-1:232075047203:admin
SNS 토픽에 구독을 생성하는 방법은 다음과 같습니다.
- Protocol: 생성할 구독의 프로토콜을 설정합니다. http, https, email, email-json, sms, sqs, application을 사용할 수 있습니다.
- TopicArn: SNS 토픽의 ARN을 설정합니다.
- Endpoint: 각 프로토콜의 엔드포인트를 설정합니다.
- http: http://로 시작하는 주소를 설정합니다.
- https: https://로 시작하는 주소를 설정합니다.
- email, email-json: 이메일 주소를 설정합니다.
- sms: 핸드폰 번호를 설정합니다.
- sqs: SQS 큐의 ARN을 설정합니다.
- application: 모바일 장치의 EndpointArn를 설정합니다. EndpointArn은 Device Token을 SNS 애플리케이션에 추가하면 생성됩니다.
sns_4.js
var AWS = require('aws-sdk');
AWS.config.loadFromPath('./config.json');
var sns = new AWS.SNS();
var params = {
Protocol: 'application', // 필수
TopicArn: 'arn:aws:sns:ap-northeast-1:232075047203:admin', // 필수
Endpoint: 'arn:aws:sns:ap-northeast-1:232075047203:endpoint/GCM/ExampleGCM/bae3463b-d6c0-3d81-89cf-44c5a8662de5'
};
sns.subscribe(params, function (err, data) {
if (err)
console.log(err, err.stack);
else
console.log(data);
});
AWS CLI
$ aws sns subscribe --protocol application --topic-arn arn:aws:sns:ap-northeast-1:232075047203:admin --notification-endpoint arn:aws:sns:ap-northeast-1:232075047203:endpoint/GCM/ExampleGCM/bae3463b-d6c0-3d81-89cf-44c5a8662de5
SNS 토픽에서 구독을 삭제하는 방법은 다음과 같습니다.
- SubscriptionArn: 구독 ARN을 설정합니다. 구독 ARN은 Subscribe 함수로 SNS 토픽에 구독을 생성할 때 리턴됩니다. 또는, listSubscriptionsByTopic 함수로 구해도 됩니다.
sns_5.js
var AWS = require('aws-sdk');
AWS.config.loadFromPath('./config.json');
var sns = new AWS.SNS();
var params = {
SubscriptionArn: 'arn:aws:sns:ap-northeast-1:232075047203:admin:748d2cf0-2794-4eb6-b26b-3bd10606cda5' // 필수
};
sns.unsubscribe(params, function (err, data) {
if (err)
console.log(err, err.stack);
else
console.log(data);
});
AWS CLI
$ aws sns unsubscribe --subscription-arn arn:aws:sns:ap-northeast-1:232075047203:admin:748d2cf0-2794-4eb6-b26b-3bd10606cda5
SNS 어플리케이션에 엔드포인트를 추가하는 방법은 다음과 같습니다.
- GCM, APNS 모두 사용 방법은 동일합니다.
- PlatformApplicationArn: Application ARN을 설정합니다.
- Token: Device Token을 설정합니다.
sns_6.js
var AWS = require('aws-sdk');
AWS.config.loadFromPath('./config.json');
var sns = new AWS.SNS();
var params = {
PlatformApplicationArn: 'arn:aws:sns:ap-northeast-1:232075047203:app/GCM/ExampleGCM', // 필수
Token: 'APA91bEtMOwbiMBK9xos6ASX8aylQENNmX6NQ7pHQhy4rSvUtXJzjLCOCsiOK69mwy7qu9hIEWHTmFtKCSYS0c5v_m3RojYIfy1LrcCbv9vdL12qtKAMwLFX1-MpCAC0PQa8l', // 필수
};
sns.createPlatformEndpoint(params, function (err, data) {
if (err)
console.log(err, err.stack);
else
console.log(data);
});
AWS CLI
$ aws sns create-platform-endpoint --platform-application-arn arn:aws:sns:ap-northeast-1:232075047203:app/GCM/ExampleGCM --token APA91bEtMOwbiMBK9xos6ASX8aylQENNmX6NQ7pHQhy4rSvUtXJzjLCOCsiOK69mwy7qu9hIEWHTmFtKCSYS0c5v_m3RojYIfy1LrcCbv9vdL12qtKAMwLFX1-MpCAC0PQa8l
다른 함수들의 사용 방법은 다음 링크를 참조하기 바랍니다.
http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SNS.html
저작권 안내
이 웹사이트에 게시된 모든 글의 무단 복제 및 도용을 금지합니다.- 블로그, 게시판 등에 퍼가는 것을 금지합니다.
- 비공개 포스트에 퍼가는 것을 금지합니다.
- 글 내용, 그림을 발췌 및 요약하는 것을 금지합니다.
- 링크 및 SNS 공유는 허용합니다.
Published
2014-09-30