关于Amazon SNS的SMS服务

时间:2015-08-31 23:14:15

标签: amazon-web-services amazon-sns

我希望Amazon SNS向手机发送短信。我检查了AWS文档,它说

SMS notifications are currently supported for phone numbers in the     
United States. SMS messages can be sent only from topics created in the 
US East (N. Virginia) region. However, you can publish messages to 
topics that you create in the US East (N. Virginia) region from any 
other region.

但我不知道如何向美国西部美国东部地区创建的主题发布消息,我的aws节点位于该地区。

谷歌搜索了很多,但没有运气。这里有人知道怎么做?

2 个答案:

答案 0 :(得分:2)

代码运行的位置无关紧要......甚至不属于AWS的某个地方。大多数服务(如SNS)都需要访问regional endpoint,以便连接该区域中定义的资源。这就是AWS控制台在幕后所做的事情。

如果您使用的是SDK或其他库,而不是使用自己的代码直接与AWS服务进行通信,那么您要寻找的是如何更改或设置“区域”或“端点”请求或(可能)在构造函数中。

您通常只能从可以从Internet发送请求的相同意义上发送“来自任何其他区域”的请求。您不会通过通过向其他区域的SNS端点发送它们。您可以直接连接到目标区域。

请注意,SNS SMS解决方案的实用性有限 - 对于预期通知的个人群体的通知非常有用(“夜间全局批处理已完成,但遇到错误。”)但不是非常适合客户联系(“您的订单已发货。”)因为主题订阅者无法单独寻址...发送给一个,发送给所有...对订阅确认消息做出积极响应的所有人,即。< / p>

答案 1 :(得分:0)

这是一个示例函数,它使用Node.js SDK从AWS lambda函数发送SMS消息:

module.exports.sendMessage = (event, context, cb) => {
  const AWS = require('aws-sdk');
  const sns = new AWS.SNS({ region: 'us-east-1' });
  const params = {
    Message: 'The text message body.',
    PhoneNumber: '+15555555555',
  };
  sns.publish(params, function (err, data) {
    if (err) {
      cb(null, { message: 'Error: ' + err, event });
    } else {
      // data has the following form:
      // var data = {
      //   ResponseMetadata: { RequestId: '12345678-1234-5678-1234-012345678901' },
      //   MessageId: '12345678-1234-5678-1234-012345678901'
      // };
      cb(null, { message: data.MessageId, event });
    }
  });
}

您可以read more about it here根据您的体系结构调整它以使用another SDK。不要忘记设置正确的IAM权限,以允许发送任何将运行此消息的SNS消息。