Amazon Simple Notification Service

 

 

AWS에서 문자보내기를 진행할 것이다 IAM에서 아래의 3개의 권한만 가능한 그룹을 만든다.

이는 AWS 내에서 SNS서비스를 이용할 수 있는 최소한의 권한만 주어 보안을 향상시킴에 있다.

그룹의 이름은 알기 쉽게 SNSgroup으로 저장한다.

 

 

 

IAM - 사용자 - 사용자 추가를 눌러 사용자를 만든다. 프로그래밍 방식 엑세스는 필수로 체크한다.

우리의 node.js 코드에서 sns_user 계정으로 aws sms에 접근할 것이기 때문이다.

 

 

 

다음으로 권한 설정에서 그룹에 사용자 추가 - 해당 사용자에게 SNS만 사용할 수 있도록 위에서 만들었던 SNSgroup 그룹을 추가해 권한을 설정한다. 

태그 추가사항은 넘어간다

 

이후, 다음과 같이 .csv파일 다운로드, 액세스 키 ID와 비밀 액세스 키 등이 보일 것이다.

 

여기서 액세스 키 ID와 비밀 엑세스 키를 메모장에 옮겨 둔다. 있다가 쓸꺼기에

 

 

AWS 콘솔에서 SNS 서비스를 검색한다.

 

 

이때 리전을 서비스가 안되는 서울로 하면 안되고 sns 서비스가 가능한 지역으로 설정해주어야 한다.

가까운 일본 도쿄(ap-norteast-1)를 선택하였다.

 

 

 

'개요로 시작'을 누른다.

 

 

왼쪽의 문자 메시지(SMS)가 보일 것이다.

아래와 같이 기본 설정을 편집해 준다.

기본 메시지 유형은 트랜잭션

우선 개발을 하면서 테스트용으로 할 것이기 때문에 월별 계정 지출 한도를 1달러로 설정해준다.

 

 

이제 기본적인 설정은 다 끝이났다.

코드를 작성해보자.

 

위에서 도쿄를 리전으로 설정했으므로 도쿄에 해당하는 ap-northeast-1를 region에 설정한다.

010-1234-1234라는 번호롤 문자를 보내려면 아래와 같이 한국코드인 (+82)를 앞에 붙혀

821012341234로 넣어준다.

 

// Load the AWS SDK for Node.js
const AWS = require('aws-sdk');
// Set region
AWS.config.update({region: 'ap-northeast-1'}); //도쿄 리전을 사용함

// Create publish parameters
var params = {
  Message: '문자를 보내봅니다^^ 잘지내죠?', /* required */
  PhoneNumber: '821012341234',
};

// Create promise and SNS service object
var publishTextPromise = new AWS.SNS({apiVersion: '2010-03-31'}).publish(params).promise();

// Handle promise's fulfilled/rejected states
publishTextPromise.then(
  function(data) {
    console.log("MessageID is " + data.MessageId);
  }).catch(
    function(err) {
    console.error(err, err.stack);
  });

 

이대로 바로 실행해보도록 하자!

...

 

 

 

 

아마 안될 것이다

sns 서비스에 접근할 수 있는 권한이 없기 때문이다.

 

위에서 sns서비스를 이용할 수 있게 sns_user 계정을 만들어 두었고 해당 계정의 액세스 ID와 비밀 키가 있을 것이다.

 

리눅스 기준으로 다음과 같이 명령어를 실행한다.

 

cd ~
mkdir .aws
vim ~/.aws/credentials

vim 편집기를 열어 아래와 같이 작성한다.

 

[default]
aws_access_key_id = <YOUR_ACCESS_KEY_ID>
aws_secret_access_key = <YOUR_SECRET_ACCESS_KEY>

 

ps. 좀 더 보안에 신경을 쓰기 위해서 key를 EC2에 저장하지 말고 IAM Roles를 적용하는 것을 매우 추천한다.

+ Recent posts