IT Share you

node.js에서 지원하는 AWS Lambda 함수를 사용하여 SNS 주제에 메시지를 게시 할 수 있습니까?

shareyou 2020. 12. 10. 21:27
반응형

node.js에서 지원하는 AWS Lambda 함수를 사용하여 SNS 주제에 메시지를 게시 할 수 있습니까?


node.js에서 지원하는 AWS Lambda 함수를 사용하여 SNS 주제에 메시지를 게시 할 수 있습니까?


예, SNS 주제에 게시하는 Lambda 함수를 작성할 수 있습니다. Lambda에서 실행되는 코드는 함수가 사용 하는 모든 Java 용 AWS SDK 또는 Javascript에 액세스 할 수 있습니다. 함수를 실행하는 IAM 역할에 주제에 대한 게시 권한을 부여했는지 확인하기 만하면됩니다. 자바 스크립트에서 :

console.log("Loading function");
var AWS = require("aws-sdk");

exports.handler = function(event, context) {
    var eventText = JSON.stringify(event, null, 2);
    console.log("Received event:", eventText);
    var sns = new AWS.SNS();
    var params = {
        Message: eventText, 
        Subject: "Test SNS From Lambda",
        TopicArn: "arn:aws:sns:us-west-2:123456789012:test-topic1"
    };
    sns.publish(params, context.done);
};

Lambda 함수를 사용하여 SNS 메시지를 처리 ​​할 수도 있습니다. Lambda 콘솔 의 Lambda 함수 생성 버튼을 sns-message통해 제공되는 함수 청사진을 살펴볼 수 있습니다 .


먼저 적절한 Lambda IAM role.NET을 사용하여에 게시 할 수있는 권한 을 부여해야합니다 .SNS topicIAM policy

{
    "Action" : [
        "sns:Publish",
        "sns:Subscribe"
    ],
    "Effect" : "Allow",
    "Resource" : [
        { "Ref" : "<your SNS topic ARN>" }
    ]
}

그런 다음에 다음과 같은 코드를 사용할 수 있습니다 SNS publish당신에게 SNS topic다른에서 Lambda또는 Node.js코드입니다.

var message = {};
var sns = new AWS.SNS();
sns.publish({
    TopicArn: "<your SNS topic ARN>",
    Message: JSON.stringify(message)
}, function(err, data) {
    if(err) {
        console.error('error publishing to SNS');
        context.fail(err);
    } else {
        console.info('message published to SNS');
        context.succeed(null, data);
    }
});

참고 URL : https://stackoverflow.com/questions/31484868/can-you-publish-a-message-to-an-sns-topic-using-an-aws-lambda-function-backed-by

반응형