這兩天在阿里雲部署項目,項目主體是springboot2.2 + vue2.6.10,本地使用阿里大於短信功能正常,打成jar包,docker鏡像,使用阿里雲容器服務部署后,短信功能失效。
我們使用的阿里雲服務區域是上海。(很重要,短信設置跟區域有關)
本地配置:
// 依賴部分 <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-core</artifactId> <version>4.1.0</version> </dependency> <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-dysmsapi</artifactId> <version>1.1.0</version> </dependency> // 代碼部分(關鍵的部分) CommonRequest request = new CommonRequest(); request.setDomain(“dysmsapi.aliyuncs.com”); request.putQueryParameter("RegionId", "cn-hangzhou");
本地運行發送短信功能正常,一旦部署到阿里雲,就出現如下錯誤:(請求超時)
com.aliyuncs.exceptions.ClientException: SDK.ServerUnreachable : Server unreachable: java.net.ConnectException: Connection timed out (Connection timed out)
經多次嘗試,該問題得以解決:
1、需要根據你的阿里雲服務區域選擇阿里大於短信服務內網IP
https://help.aliyun.com/document_detail/68360.html?spm=a2c4g.11186623.6.699.1c0137edsk3wUh
如我的服務區域是上海,我就選擇上海的內網IP:dysmsapi-vpc.cn-shanghai.aliyuncs.com
2、修改代碼如下:
CommonRequest request = new CommonRequest(); // 設置區域為對應的內網地址 request.setDomain(“dysmsapi-vpc.cn-shanghai.aliyuncs.com”); // 改為上海 request.putQueryParameter("RegionId", "cn-shanghai");
按照上述方式修改后,短息發送成功。
在問題處理過程中,網上資料並不多,有可能是個例,忘參考使用。