使用 SNS 从 Elastic Beanstalk 应用程序发送事务性文本消息 - Node.js
Send transactional text messages from Elastic Beanstalk app using SNS - Node.js
我正在尝试从我的 Elastic Beanstalk 服务器应用程序发送文本消息,但我不断收到 {"Error":{"message":null,"code":404,... }。我按照 documentation 中的代码进行操作,但仍然无法正常工作。
我遵循了这个 YouTube tutorial 并且我能够从我的本地开发环境发送消息,但似乎无法为我的服务器应用程序复制它。在那个教程中,演示者创建了一个 IAM 组和一个 IAM 用户,并且密钥保存在一个 .env 文件夹中,我想这就是让事情起作用的原因。
我还使用 IAM 授予我的 Elastic Beanstalk EC2 实例对 SNS 的完全访问权限。
有人可以向我解释一下如何在我的服务器应用程序中复制它吗?或者如何从节点发送事务性文本消息。js/express 服务器?
这是我的代码:
//we have to use us-east-1 because sending texts is not allowed in us-east-2
AWS.config.update({region: 'us-east-1'});
var params = {
Message: "This is a test",
PhoneNumber: '+' + "phoneNumberGoesHere",
MessageAttributes: {
'AWS.SNS.SMS.SenderID': {
'DataType': 'String',
'StringValue': "app name goes here"
}
}
};
var publishTextPromise = new AWS.SNS({ apiVersion: '2010-03-31'}).publish(params).promise();
publishTextPromise.then(
function (data) {
console.log("Message sent successfully...... ", JSON.stringify({ MessageID: data.MessageId }))
}).catch(
function (err) {
console.log("Error sending Text Message...... ", JSON.stringify({ Error: err }))
});
我所要做的就是向这条线添加正确的端点和区域,现在它完美运行了!
var publishTextPromise = new AWS.SNS({ apiVersion: '2010-03-31', endpoint: 'http://sns.us-east-1.amazonaws.com', region: 'us-east-1' }).publish(params).promise();
正如@Raman Damodar Shahdadpuri 提到的,我需要删除 .SenderID 部分。这是最终代码:
var params = {
Message: "This is a test of text messaging",
PhoneNumber: '+' + 'phone number goes here',
MessageAttributes: {
'AWS.SNS.SMS.SMSType': {
'DataType': 'String',
'StringValue': "Transactional"
}
}
};
var publishTextPromise = new AWS.SNS({ apiVersion: '2010-03-31', endpoint: 'http://sns.us-east-1.amazonaws.com', region: 'us-east-1' }).publish(params).promise();
publishTextPromise.then(
function (data) {
res.end(JSON.stringify({ MessageID: data.MessageId }));
}).catch(
function (err) {
res.end(JSON.stringify({ Error: err }));
});
我正在尝试从我的 Elastic Beanstalk 服务器应用程序发送文本消息,但我不断收到 {"Error":{"message":null,"code":404,... }。我按照 documentation 中的代码进行操作,但仍然无法正常工作。
我遵循了这个 YouTube tutorial 并且我能够从我的本地开发环境发送消息,但似乎无法为我的服务器应用程序复制它。在那个教程中,演示者创建了一个 IAM 组和一个 IAM 用户,并且密钥保存在一个 .env 文件夹中,我想这就是让事情起作用的原因。
我还使用 IAM 授予我的 Elastic Beanstalk EC2 实例对 SNS 的完全访问权限。
有人可以向我解释一下如何在我的服务器应用程序中复制它吗?或者如何从节点发送事务性文本消息。js/express 服务器?
这是我的代码:
//we have to use us-east-1 because sending texts is not allowed in us-east-2
AWS.config.update({region: 'us-east-1'});
var params = {
Message: "This is a test",
PhoneNumber: '+' + "phoneNumberGoesHere",
MessageAttributes: {
'AWS.SNS.SMS.SenderID': {
'DataType': 'String',
'StringValue': "app name goes here"
}
}
};
var publishTextPromise = new AWS.SNS({ apiVersion: '2010-03-31'}).publish(params).promise();
publishTextPromise.then(
function (data) {
console.log("Message sent successfully...... ", JSON.stringify({ MessageID: data.MessageId }))
}).catch(
function (err) {
console.log("Error sending Text Message...... ", JSON.stringify({ Error: err }))
});
我所要做的就是向这条线添加正确的端点和区域,现在它完美运行了!
var publishTextPromise = new AWS.SNS({ apiVersion: '2010-03-31', endpoint: 'http://sns.us-east-1.amazonaws.com', region: 'us-east-1' }).publish(params).promise();
正如@Raman Damodar Shahdadpuri 提到的,我需要删除 .SenderID 部分。这是最终代码:
var params = {
Message: "This is a test of text messaging",
PhoneNumber: '+' + 'phone number goes here',
MessageAttributes: {
'AWS.SNS.SMS.SMSType': {
'DataType': 'String',
'StringValue': "Transactional"
}
}
};
var publishTextPromise = new AWS.SNS({ apiVersion: '2010-03-31', endpoint: 'http://sns.us-east-1.amazonaws.com', region: 'us-east-1' }).publish(params).promise();
publishTextPromise.then(
function (data) {
res.end(JSON.stringify({ MessageID: data.MessageId }));
}).catch(
function (err) {
res.end(JSON.stringify({ Error: err }));
});