Amazon SNS에서 Lambda 함수 사용
Amazon SNS는 푸시 알림에 사용되는 서비스입니다. 이 장에서는 다음 작업을 수행하는 예제를 통해 AWS Lambda 및 Amazon SNS의 작동을 설명합니다.
SNS 서비스에서 주제 생성 및 AWS Lambda 사용 CloudWatch에 주제 추가
주어진 전화 번호로 SNS 문자 메시지를 보냅니다.
필요 조건
SNS 서비스에서 주제를 생성하고 AWS Lambda를 사용하기 위해 CloudWatch에 주제를 추가하려면 아래에 제공된 단계를 따를 필요가 없습니다.
- SNS에서 주제 생성
- IAM에서 권한을위한 역할 생성
- AWS Lambda 함수 생성
- 주제에 게시하여 트리거 활성화
- CloudWatch 서비스에서 메시지 세부 정보를 확인하십시오.
주어진 전화 번호로 SNS 문자 메시지를 보내려면 다음을 수행해야합니다.
- AWS Lambda에 코드를 추가하여 전화기로 메시지를 보냅니다.
예
이 예에서는 SNS에 주제를 생성합니다. 게시 할 주제에 세부 정보를 입력하면 AWS Lambda가 트리거됩니다. 주제 세부 정보는 CloudWatch에 기록되고 AWS Lambda에서 전화로 메시지를 보냅니다.
다음은 동일한 내용을 설명하는 기본 블록 다이어그램입니다.
SNS에서 주제 생성
SNS에서 주제를 생성하려면 아래 단계를 따라야합니다.
1 단계
AWS 콘솔에 로그인하고 아래와 같이 Amazon의 SNS 서비스로 이동합니다.
2 단계
딸깍 하는 소리 Simple Notification 서비스 및 Create topic 그것에.
3 단계
그런 다음 클릭해야 Create new topic 버튼-
4 단계
들어가다 Topic name 과 Display name 그리고 클릭 Create topic. 다음과 같이 디스플레이에 주제 이름이 표시되어야합니다.
IAM에서 권한을위한 역할 생성
AWS Lambda 및 SNS 서비스를 사용할 역할을 생성하려면 AWS 콘솔에 로그인해야합니다. 그런 다음 Amazon 서비스에서 IAM을 선택하고 아래와 같이 왼쪽에서 역할을 클릭합니다.
SNS, Lambda 및 CloudWatch에 대한 정책이 추가되었는지 확인하십시오. 역할 이름을 추가하고 역할 생성 버튼을 클릭하여 역할 생성 프로세스를 완료합니다.
AWS Lambda 함수 생성
이 섹션에서는 nodejs를 런타임으로 사용하여 AWS Lambda 함수를 생성하는 방법을 이해하겠습니다.
이를 위해 AWS 콘솔에 로그인하고 AWS 서비스에서 AWS Lambda를 선택합니다. 함수 이름, 역할 세부 정보 등을 추가하고 그림과 같이 AWS Lambda 함수를 생성합니다.
SNS 트리거 추가
SNS 트리거를 추가하려면 다음과 같이 SNS 구성 세부 정보를 입력하십시오.
그런 다음 SNS topic 과 Add 다음과 같이 AWS Lambda 함수에 대한 트리거-
그런 다음 아래 주어진 AWS 람다 코드를 추가하십시오.
exports.handler = function(event, context, callback) {
console.log("AWS lambda and SNS trigger ");
console.log(event);
const sns = event.Records[0].Sns.Message;
console.log(sns)
callback(null, sns);
};
위의 코드에서 event.Records[0].Sns.Message추가 된 메시지 세부 사항을 제공합니다. CloudWatch에서 볼 수 있도록 콘솔 로그를 추가했습니다. 이제 필요한 메모리 및 시간 할당과 함께 Lambda 함수를 저장합니다.
주제에 게시하여 트리거 활성화
1 단계에서 SNS에 이미 주제를 생성했습니다. 이제 주제를 게시하고 AWS Lambda에 의해 트리거 될 CloudWatch의 세부 정보를 볼 것입니다.
주제에 게시
먼저 게시 할 주제의 이름을 선택합니다. 클릭Publish to topic 버튼 −
들어가다 Subject 과 Message 아래에 표시된 세부 사항-
당신은 또한 선택할 수 있습니다 JSON 보낼 메시지 형식 JSON스타일. 딸깍 하는 소리Publish the message 화면 끝에 버튼을 클릭합니다.
CloudWatch 서비스에서 메시지 세부 정보 확인
AWS 콘솔에 로그인하고 CloudWatch 서비스를 엽니 다. 왼쪽의 로그를 클릭하고 생성 된 AWS Lambda 함수에 대한 로그를 선택합니다. 위와 같이 생성 된 메시지가있는 로그에 대해 다음 디스플레이를 찾을 수 있습니다.
AWS Lambda에 코드를 추가하여 전화기로 메시지 보내기
여기에서는 SNS 문자 메시지를 사용하여 AWS Lambda를 사용하여 전화로 메시지를 보냅니다. 다음 코드를 사용하여 다음과 같이 AWS Lambda 코드를 업데이트 할 수 있습니다.
const aws = require("aws-sdk");
const sns = new aws.SNS({
region:'us-east-1'
});
exports.handler = function(event, context, callback) {
console.log("AWS lambda and SNS trigger ");
console.log(event);
const snsmessage = event.Records[0].Sns.Message;
console.log(snsmessage);
sns.publish({
Message: snsmessage,
PhoneNumber: '+911212121212'
}, function (err, data) {
if (err) {
console.log(err);
callback(err, null);
} else {
console.log(data);
callback(null, data);
}
});
};
메시지를 보내는 데 사용할 AWS SDK 및 SNS 서비스를 추가했습니다. SNS에서 오는 이벤트 메시지는 주어진 전화 번호로 문자 메시지로 전송됩니다.
예를 들어 다음 코드를 관찰하십시오-
sns.publish({
Message: snsmessage,
PhoneNumber: '+911212121212'
}, function (err, data) {
if (err) {
console.log(err);
callback(err, null);
} else {
console.log(data);
callback(null, data);
}
});
지금 주제를 입력하여 Cloudwatch의 메시지와 위에 제공된 전화 번호를 확인하세요.
딸깍 하는 소리 Publish message메시지를 게시합니다. 다음과 같이 주어진 전화 번호에 메시지가 표시됩니다.