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를 적용하는 것을 매우 추천한다.