2017-10-21 126 views
1

我試圖從我在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美元。它仍然可能與此有關。 –

回答

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' –