这两天在阿里云部署项目,项目主体是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");

  按照上述方式修改后,短息发送成功。

  在问题处理过程中,网上资料并不多,有可能是个例,忘参考使用。

12-15 23:55