无法从aws lambda函数传递全球文本消息

无法从aws lambda函数传递全球文本消息

问题描述:

我试图从我在AP-South-1(即孟买)地区托管的AWS Lambda函数发送OTP。我正在使用SNS的全球文本消息功能。由于“AP-South-1”地区不支持全球短信功能,因此我将SNSClient的地区端点作为“APNortheast1”(即东京)地区发送,因为它支持全球文本消息。无法从aws lambda函数传递全球文本消息

现在,我已经给出了我的lambda函数管理员权限(通过将角色附加到管理员策略)。但是,它仍然没有工作(没有把信息传递给我的手机)。我在执行该函数时没有遇到任何异常,而且我也获取了该SMS的“TransactionID”。在SNS控制台中,短信显示为失败。所以,我已经启用了CloudWatch日志。我得到的日志如下─

{ 
    "notification": { 
     "messageId": "8cba93de-b794-577d-99be-c1ba5d5d21dd", 
     "timestamp": "2017-10-21 06:26:17.946" 
    }, 
    "delivery": { 
     "destination": "+91XXXXXXXXXX", 
     "smsType": "Transactional", 
     "providerResponse": "Internal error", 
     "dwellTimeMs": 79 
    }, 
    "status": "FAILURE" 
} 

现在,这里是irony-这实际上是我从其他帐户迁移(手动)的资源的新帐户。在这个较旧的帐户中,我拥有完全相同的设置,但它似乎正在向我的移动设备正确传达信息。为了您的信息,我的Lambda函数被写入.net核心,我正尝试将短信发送到印度手机号码。

+0

尽管错误消息并不表明这是问题,但您是否超过了新帐户对SMS的支出限制?您是否尝试过直接从SNS控制台发送消息?您是否在其他地区尝试过SNS控制台,例如us-east-1? –

+0

Hello @ Michael-sqlbot我试图直接在“APNortheast1”区域从控制台发送短信。但它甚至没有从控制台传送过来。这个经常账户是非常新的,所以它没有办法超过支出限额。但是现在当我尝试使用“USWest2”时,它可以在控制台和代码中使用。但它不适用于任何亚太地区。这种解决了我的问题。但是,不知道为什么它不在美联社地区工作,让我感到不舒服的代码生产。请让我知道,如果你有你的想法。 – Sudip

+0

如果它从一个地区而不是另一个地区开展工作,那表明您所使用的地区存在问题,AWS支持需要注意,因此您可能需要在[官方论坛](https:/ /forums.aws.amazon.com/forum.jspa?forumID=72),或者如果您有支持协议,请打开支持案例。无论哪种方式,捕获日志,并包括通过和失败的消息ID,以便支持可以找到特定的事件。另请注意,除非您采取措施增加帐户,否则您的帐户的默认支出限额仅为1美元。它仍然可能与此有关。 –

截至2017年10月,亚马逊SNS支持SMS短信in the following regions

  • 美国东(N.弗吉尼亚州)
  • 美国西部(俄勒冈州)
  • 欧盟(爱尔兰)
  • 亚太地区(东京)
  • 亚太区(新加坡)
  • 亚太地区(悉尼)

一个快速的方法来发送短信与AWS Command-Line Interface (CLI)

aws sns publish --phone-number 9112345678 --message foo --region ap-southeast-2 

使用ap-south-1时,因为短信是不是在该地区支持此失败。

您的Lambda代码可以通过其他区域发送邮件,但您需要在不同区域中创建您的SNS客户端对象。

+0

用户尝试以这种方式发送消息的小贴示:确保将“aws”cli更新为“--phone-number”选项(相对而言)新的(我运行版本1.10.34没有它)。 'aws'升级说明[here](http://docs.aws.amazon.com/cli/latest/userguide/installing.html)。短版本:'pip install awscli --upgrade --user' –