AWS SNS를 이용하여 지정된 사용자에게 문자, 이메일 등을 보내는 서비스를 해보자
람다 함수가 SNS서비스에 접근하기 위해 필요한 역할과 정책을 생성해야한다
우선 좌측에 [정책 메뉴]를 클릭하고 [정책 생성]을 클릭한다
[서비스 선택]을 클릭하고 입력창에 "SNS"라고 입력한다
입력창 아래에 "SNS" 글자가 나오면 클릭한다
사용자에게 문자를 보내는 것은 쓰기에 해당하므로 액세스 레벨 [쓰기]를 선택한다
리소스를 클릭한 후 [모든 리소스]를 선택한다
[정책 검토]를 클릭하고 다음으로 넘어간다
정책이름을 "policy_for_publishing_sns"라고 입력하고 설정한 권한(SNS-쓰기)이 제대로 되어있는지 확인한다
정책을 생성하였으면 정책과 연결할 역할을 만들어야 한다
[역할 만들기]를 클릭한 후 사용 사례 선택에서 [Lambda]를 선택한다
앞서 만든 "policy_for_publishing_sns"정책을 연결한다
역할 이름에는 "role_for_sns_sending"이라고 입력하고 [역할 만들기]를 클릭한다
역할이 잘 만들어졌는지 확인한다
Lambda 함수 생성 페이지에 와서 함수 이름에는 "lambda_for_sns"라고 입력하고 [▼기본 실행 역할 변경]을 클릭한다
[기존 역할]에 "role_for_sns_sending"을 선택한다
함수가 생성되었으면 [테스트 이벤트 구성]을 클릭한다
문자메세지를 받을 사람의 번호와 내용을 임시로 작성한다
테스트 이벤트 구성을 저장했으면 아래의 소스코드를 복사한다
//AWS를 실행시키기위한 라이브러리를 가져옵니다.
const AWS = require('aws-sdk');
//이전과 다른부분이 있다면 context와 callback을 파라미터로 받습니다.
//context에서는 현재 실행중인 람다의 메타정보를 받고
//callback은 람다가 끝나는 시점 호출합니다.
exports.handler = (event, context, callback) => {
//위에 입력했던 json값이 event 즉 input으로 들어옵니다.
//params에 Message와 PhonNumber 변수를 선언합니다.
const params = {
Message: event.text,
PhoneNumber: event.number
};
// SNS SDK를 가져옵니다.
// SNS서비스에서 메세지를 보내는것은 한정된 리전에서만 사용할 수 있기때문에
// region을 도쿄리전으로 설정해주어야합니다. 이를 위해 인자값으로
// region에 도쿄리전의 식별자인 'ap-northeast-1'을 입력합니다.
const publishTextPromise = new AWS.SNS({ apiVersion: '2010-03-31',region: 'ap-northeast-1'}).publish(params).promise();
// SDK를 실행합니다.
publishTextPromise.then(
function(data) {
//메세지가 있다면 첫번째에 null, 두번째에 메세지를 리턴합니다.
callback(null,"MessageID is " + data.MessageId);
}).catch(
function(err) {
//에러가 있다면 err를 리턴합니다.
callback(err);
});
};
복사한 소스코드를 함수코드(index.js 파일)에 붙여넣기 하고 [Deploy]를 클릭한다
(소스코드가 변경되면 반드시 Deploy를 클릭해야한다)
[테스트]를 클릭하고 잠시후에 "실행결과: 성공(로그)"이라는 창이 표시되면 정상적으로 메세지가 전달되었을 것이다
'AWS' 카테고리의 다른 글
Beanstalk 예약 서비스 (0) | 2021.02.18 |
---|---|
번역 웹 서비스(POST) (0) | 2021.02.17 |
Dynamo DB CRUD (0) | 2021.02.16 |
S3 버킷 이미지 업로드 / 정적 웹 사이트 호스팅 (0) | 2021.02.16 |
Light Sail을 이용한 워드프레스 구축과 Polly 플러그인 (0) | 2021.02.15 |