amazon-web-services - services - sns amazon example
¿Puede publicar un mensaje en un tema SNS utilizando una función AWS Lambda respaldada por node.js? (2)
¿Puede publicar un mensaje en un tema SNS utilizando una función AWS Lambda respaldada por node.js?
En primer lugar, debe otorgar permisos de Lambda IAM role
para publicar en su SNS topic
utilizando la IAM policy
adecuada.
{
"Action" : [
"sns:Publish",
"sns:Subscribe"
],
"Effect" : "Allow",
"Resource" : [
{ "Ref" : "<your SNS topic ARN>" }
]
}
Luego puede usar el siguiente código para SNS publish
en su SNS topic
desde su otro código Lambda
o 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.done(null, data);
}
});
Sí, podría escribir una función Lambda que publique en un tema SNS. El código que se ejecuta en Lambda tiene acceso al AWS SDK completo para Java o Javascript , cualquiera que sea su función. Solo debe asegurarse de darle al rol de IAM que ejecuta la función el acceso para publicar en su tema. En 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);
};
También es posible manejar mensajes SNS utilizando funciones Lambda. Puede echar un vistazo al sns-message
función sns-message
, que se ofrece a través del botón Crear una función Lambda en la consola Lambda.