์ƒ๊ฐ์ •๋ฆฌ

AWS Simple Notification Service ์‚ฌ์šฉํ•˜๊ธฐ

dev_summer 2021. 5. 28. 12:35

 

์ง„ํ–‰์ค‘์ธ ํ”„๋กœ์ ํŠธ์— ์•„์ด๋””, ๋น„๋ฐ€๋ฒˆํ˜ธ ์ฐพ๊ธฐ์— ์ด์šฉ๋  ๋ฌธ์ž ์‹œ์Šคํ…œ์„ ์—ฐ๊ฒฐํ•ด์•ผ๋œ๋‹ค.

์•„์ด๋””, ๋น„๋ฐ€๋ฒˆํ˜ธ ์ฐพ๊ธฐ๋“ฑ์— ์‚ฌ์šฉ๋˜๋Š” ๋ฌธ์ž๋ณด๋‚ด๋Š” ์‹œ์Šคํ…œ์€ ๋‹ค๋ฅธ ๊ณณ๋„ ๋งŽ์ง€๋งŒ aws๋‚ด์˜ ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•  ์˜ˆ์ •์ด๋‹ค.

๋‚˜๋Š” ์„œ์šธ ๋ฆฌ์ „์„ ์‚ฌ์šฉ์ค‘์ธ๋ฐ, ๋ฌธ์ž๋ณด๋‚ด๋Š” ์„œ๋น„์Šค๊ฐ€ ๋ถˆ๊ฐ€ํ•˜๋‹ค. 

์„œ์šธ์—์„œ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๋„์ฟ„๋ฆฌ์ „์„ ์‚ฌ์šฉ ํ•ด์•ผ๋œ๋‹ค.

 

1. IAM ์ •๋ณด ์ƒ์„ฑ

์‹ฌํ”Œ ๋…ธํ‹ฐํ”ผ์ผ€์ด์…˜ ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•˜๊ธฐ ์ „, ๋ฌธ์ž๋ฅผ ๋ณด๋‚ด๋Š” ์„œ๋น„์Šค์ด๊ธฐ๋–„๋ฌธ์— ์—‘์„ธ์Šค ํ‚ค๋ฅผ ๋งŒ๋“ค์–ด์•ผํ•œ๋‹ค.

AWS=> ๋ณด์•ˆ ์ž๊ฒฉ ์ฆ๋ช… ๋ฐ ๊ทœ์ • ์ค€์ˆ˜ => IAM ํƒญ์œผ๋กœ ์ด๋™ํ•˜์—ฌ key_id์™€ secret_access_key๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๋ฉ”๋ชจํ•ด๋‘”๋‹ค.

๊ธฐ์กด์— ๊ฐœ๋ฐœ์ž๋‹˜๊ป˜์„œ ๋ฐ›์•„๋†“์€ ๊ฒŒ ์žˆ์–ด ๋‚˜๋Š” ๋ฉ”๋ชจ๋งŒ ํ•ด๋†“์•˜๋‹น.

 

2. ๋ฌธ์ž๋ฉ”์‹œ์ง€ ๋ณด๋‚ด๊ธฐ ๊ธฐ๋ณธ ์„ค์ •

awsํŽ˜์ด์ง€์˜ ์˜ค๋ฅธ์ชฝ ์ƒ๋‹จ์— ์žˆ๋Š” ๋ฆฌ์ „์„ ๋„์ฟ„๋กœ ๋ฐ”๊พผ ๋’ค sns์„œ๋น„์Šค๋กœ ์ด๋™ํ•œ๋‹ค.

์„œ์šธ๋ฆฌ์ „์—์„œ ๋ณด๋ฉด ๋ชจ๋ฐ”์ผ -> ํ‘ธ์‹œ์•Œ๋ฆผ๋งŒ ์กด์žฌํ•˜๋Š”๋ฐ ๋„์ฟ„๋ฆฌ์ „์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋ฉด ๋ฌธ์ž๋ฉ”์„ธ์ง€(SMS) ํ•ญ๋ชฉ์ด ๋œฌ๋‹ค.

ํด๋ฆญํ•˜์—ฌ ๋ฌธ์ž ๋ณด๋‚ด๊ธฐ์˜ ๊ธฐ๋ณธ ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•œ๋‹ค.

์ฒ˜์Œ ์ƒ์„ฑํ•˜๊ฒŒ๋˜๋ฉด ๊ณ„์ •์ง€์ถœํ•œ๋„๋Š” 1์ด ์ตœ๋Œ€์ด๋‹ค. 

๋Š˜๋ฆฌ๊ณ  ์‹ถ์œผ๋ฉด ์ •๋ณด๋“ค์„ ์ž…๋ ฅํ•˜์—ฌ ์ฆ์•ก์š”์ฒญ์„ ํ•ด์•ผ๋œ๋‹ค. 

 

 

3. ์ฝ”๋“œ ์ž‘์„ฑ

// aws์˜ ๊ธฐ๋Šฅ์„ ๋„์™€์ฃผ๋Š” sdk์„ค์น˜
const AWS = require('aws-sdk');

// AWS์˜ apiVersions์„ ํ™•์ธํ•˜์—ฌ์•ผ ํ•œ๋‹ค . 
console.log(AWS);

// ๋žœ๋ค 4์ž๋ฆฌ ์ฝ”๋“œ ์ƒ์„ฑ, ์ด๋•Œ์— 4์ž๋ฆฌ๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ๋„ ๋”ฐ๋กœ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ๊ฑธ์–ด์ค˜์•ผํ•œ๋‹ค.
let code = Math.floor(Math.random()*10000);

// ๋‚ด๊ฐ€ ์‚ฌ์šฉํ•  ๋ฆฌ์ „์„ ์ž…๋ ฅํ•ด์ค€๋‹ค. ๋‚˜๋Š” ๋„์ฟ„๋ฆฌ์ „์ด๋‹ค. 
AWS.config.update({region:'ap-northeast-1'})

// ๋ฉ”์„ธ์ง€์™€ ํ•ธ๋“œํฐ๋ฒˆํ˜ธ๋งŒ ์ž…๋ ฅํ•œ๋‹ค. 
var params = {
    Message : '์ธ์ฆ๋ฒˆํ˜ธ๋Š” '+code+' ์ž…๋‹ˆ๋‹ค.',
    PhoneNumber : '+8201011111111'
}

// ์œ„์˜ AWS์˜ apiVersion์„ ์ž…๋ ฅํ•œ๋‹ค. 
var publishTextPromise = new AWS.SNS({apiVersion:'ํ™•์ธํ•œ๋ฒ„์ „'}).publish(params).promise();

// ์‹ค์งˆ์ ์œผ๋กœ ๋ฌธ์ž๋ฅผ ๋ณด๋‚ด๋Š” ์ฝ”๋“œ์ด๋‹ค. 
publishTextPromise.then(function(data){
    console.log("message id is "+data.MessageId);
}).catch(function(err){
    console.log("err : "+err)
})

 

์ด๊ฒƒ์„ api๋กœ ์‘๋‹ตํ• ๋•Œ์—๋Š”

์‹ค์ง์ ์œผ๋กœ ๋ฌธ์ž๋ฅผ ๋ณด๋‚ด๋Š” ์ฝ”๋“œ์—์„œ ์„ฑ๊ณตํ•˜๋ฉด ๋žœ๋ค์œผ๋กœ ์ƒ์„ฑ๋œ code๋ฅผ ํ”„๋ก ํŠธ์— ์ „๋‹ฌํ•˜๊ณ 

ํ”„๋ก ํŠธ๋‹จ์—์„œ๋Š” api๋กœ ์‘๋‹ต๋ฐ›์€ ์ฝ”๋“œ์™€ ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ์ฝ”๋“œ๊ฐ€ ์ผ์น˜ํ•˜๋ฉด ์ธ์ฆ์— ์„ฑ๊ณตํ•œ ๊ฒƒ์ด๋‹ค.

 

ํ•˜๊ณ ๋‚˜๋ฉด ์‰ฝ์ง€๋งŒ ๊ณผ์ •์€ ์‰ฝ์ง€๊ฐ€ ์•Š์•˜๋˜ ๊ฒƒ ๊ฐ™๋‹ค.

 

์ฐธ๊ณ ๋ฌธ์„œ : https://docs.aws.amazon.com/ko_kr/sdk-for-javascript/v2/developer-guide/sns-examples-sending-sms.html

 

Amazon SNS S๋ฅผ ํ†ตํ•œ SMS ๋ฉ”์‹œ์ง€ ์ „์†ก - JavaScript์šฉ AWS SDK

์ด ํŽ˜์ด์ง€์— ์ž‘์—…์ด ํ•„์š”ํ•˜๋‹ค๋Š” ์ ์„ ์•Œ๋ ค ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์‹ค๋ง์‹œ์ผœ ๋“œ๋ ค ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ์ž ๊น ์‹œ๊ฐ„์„ ๋‚ด์–ด ์„ค๋ช…์„œ๋ฅผ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๋ง์”€ํ•ด ์ฃผ์‹ญ์‹œ์˜ค.

docs.aws.amazon.com