Node.jsを使用したAWS Lambda関数を使用して、SNSトピックにメッセージを発行できますか?
はい、SNSトピックに発行するLambda関数を作成できます。 Lambdaで実行されているコードは、 Java または Javascript のどちらの関数を使用していても、完全なAWS SDKにアクセスできます。トピックに発行するために、関数を実行するIAMロールにアクセス権を付与することを確認する必要があります。 Javascriptの場合:
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コンソールのCreate a Lambda functionボタンを介して提供されるsns-message
関数設計図をご覧ください。
まず、適切なLambda IAM role
を使用してSNS topic
に公開するためのIAM policy
権限を付与する必要があります。
{
"Action" : [
"sns:Publish",
"sns:Subscribe"
],
"Effect" : "Allow",
"Resource" : [
{ "Ref" : "<your SNS topic ARN>" }
]
}
次に、次のコードを使用して、他のLambda
またはSNS publish
コードからSNS topic
を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);
}
});