일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 자바
- Nest.js
- 개발자
- front-end
- 조건문
- Kotlin
- props
- file upload
- spring boot
- 개발이 취미인 사람
- java
- component
- back-end
- javascript
- swagger
- node.js
- SWIFT
- restful api
- 반복문
- state
- 상속
- class
- It
- Sequelize
- Producer
- 코틀린
- kafka
- AWS
- react
- vue
- Today
- Total
개발이 취미인 사람
[AWS] SMS 문자 메시지 전송 (Simple Notification Service) 본문
- 개요
안녕하세요. 이번 시간에는 AWS에서 Simple Notification Service를 활용해 휴대폰 문자 메시지 전송에 대해 알아보겠습니다.
해당 포스팅에서는 Node.js를 활용해서 진행하겠습니다.
- 설정
1. IAM 계정 생성 및 권한 설정
SMS 문자 메시지를 전송하기 위해서는 선행적으로 IAM 유저에 권한을 정해야 합니다.
IAM 유저 생성 방법을 모르시거나 IAM을 모르시는 분들은 아래 링크를 통해 학습하고 오시는 걸 추천드리겠습니다.
[AWS] IAM(Identify and Access Management) 생성 및 사용법
기본적으로 권한 허용은 아래 권한을 허용하면 됩니다.
- AmarzonSNSFullAccess
- AmazonSNSRole
- AmazonSNSReadOnlyAccess
2. Simple Notification Service
검색 창에 Simple Notification Service 또는 SNS라고 검색합니다.
해당 서비스 페이지로 이동하면 왼쪽 햄버거 버튼을 클릭합니다.
버튼을 클릭하면 아래와 같이 카테고리가 보입니다.
하지만 SMS 문자 메시지 전송에 대한 카테고리가 없습니다.
아직 한국 리전에는 서비스를 하고 있지 않습니다.
가장 가까운 리전은 도쿄입니다.
도쿄 리전으로 변경하고 다시 확인하면 아래와 같이 문자 메시지(SMS) 카테고리를 확인할 수 있습니다.
문자 메시지(SMS)를 선택합니다.
SMS 서비스는 AWS SendBox에 보호를 받고 있습니다.
SendBox?... 뭐지... 저도 처음에 이 부분을 잘 알지 못해서 며칠 삽질을 했습니다.
샌드박스란 외부로부터 들어온 프로그램이 보호된 영역에서 동작해 시스템이 부정하게 조작되는 걸 막는 보안 형태라고 설명합니다.
기본적으로 SMS 문자 메시지를 전송할 때 지속적으로 비용이 발생합니다.
그렇기 때문에 AWS SendBox는 허용되지 않은 전화번호에는 발신하지 못하게 보호합니다.
공식 홈페이지에서 제한사항을 보면 아래와 같습니다.
1. 확인된 대상 전화번호로만 SMS 메시지를 보낼 수 있습니다.
2. 확인된 대상 전화번호는 10개까지 보유할 수 있습니다.
3. 확인 또는 마지막 확인 시도 이후 24시간 이상 경과한 후에만 대상 전화번호를 삭제할 수 있습니다.
https://docs.aws.amazon.com/ko_kr/sns/latest/dg/sns-sms-sandbox.html
저렇게 제한이 많으면... 어떻게 SMS를 활용해 우리 서비스를 사용할 수 있는 거지 하고 생각이 드실 겁니다.(... 사실 제가 그랬어요 ㅋㅋ)
하지만 샌드박스 보호를 받지 않겠다고 AWS 측에 연락을 하면 됩니다.
오른쪽 상단에 SMS 샌드박스 종료 버튼을 누릅니다.
Service limit increase를 선택하고 아래 항목들을 작성을 하면 AWS 측에 문의를 할 수 있습니다.
자세한 내용은 아래 공식홈페이지 자료를 확인하시는 걸 추천드리겠습니다.
https://docs.aws.amazon.com/ko_kr/sns/latest/dg/sns-sms-sandbox-moving-to-production.html
문의 요청 후 문제가 없다면 우리는 샌드박스 환경에서 벗어날 수 있습니다.
위와 같은 상태로 변경 되었다면 우리가 설정한 요금제를 통해 서비스를 이용하면 됩니다.
3. 문자 메시지 기본 설정 편집
페이지 하단에 보면 문자 메시지 기본 설정 항목이 있습니다. 편집 버튼을 통해 수정할 수 있습니다.
- 기본 메시지 유형 -> Transactional 설정
- 계정 지출 한도 -> 1달러 (개발용도) 실서비스 트래픽에 맞춰 설정하는 걸 권합니다 :)
기본적인 설정을 다 하셨다면 실제 코드를 통해 전송해보겠습니다.
4. Node.js Message 전송
패키지 다운로드
#npm
npm install aws-sdk
#yarn
yarn add aws-sdk
소스 코드
const AWS = require("aws-sdk")
AWS.config.update({ region: "ap-northeast-1" }) //도쿄 리전을 사용함
// Create publish parameters
const params = {
Message: "안녕하세요. 개발이 취미인 사람입니다 :)",
PhoneNumber: "+8201012345678",
}
const publishTextPromise = new AWS.SNS({ apiVersion: "2010-03-31" })
.publish(params)
.promise()
publishTextPromise
.then(function (data) {
console.log("MessageID is " + data.MessageId)
})
.catch(function (err) {
console.error(err, err.stack)
})
해당 파일을 실행 하면 아래와 같이 문자 메시지가 오면 성공입니다.
이번 시간에는 AWS SNS 문자 서비스를 사용하는 방법에 대해 알아봤습니다.
꼭 실습을 하시는 걸 추천드리겠습니다. :>
'백앤드(Back-End) > AWS' 카테고리의 다른 글
[AWS] Lambda 구축 (AWS Console) (0) | 2021.09.28 |
---|---|
[AWS] Lambda 개념 및 로컬 환경 설정(Mac + Node + Serverless) (0) | 2021.09.28 |
[AWS] IAM(Identify and Access Management) 생성 및 사용법 (0) | 2021.08.12 |
[AWS] Route53 도메인 구매(등록) (0) | 2021.07.15 |
[AWS] EC2 Auto Scaling 개념 및 설정 (0) | 2021.04.03 |