电信天翼云容器通过内网访问对象存储服务
部署在云服务器的Web软件,访问对象存储服务获取对象文件,首选采用内网方式,因为内网速度快,不消耗公网带宽。阿里云OSS有内网和公网2个域名,简单的切换一下配置文件即可。比如
公网域名https://oss-cn-shanghai.aliyuncs.com
内网域名https://oss-cn-shanghai-internal.aliyuncs.com
电信云OOS则相当麻烦。
首先,要创建跟云服务器同城的OOS容器。
我的云服务器是苏州的,但是我创建OOS容器的时候,页面上没有苏州这个地点,就选了山东青岛。后来想要通过内网访问OOS的时候,不知道怎么配置,于是发工单给天翼云客服,然后天翼云技术人员告知要确保云服务器和OOS容器位于同一个城市,并帮我开通了苏州OOS,以及提供了oos-jssz.ctyunapi.cn内网IP。已有的OOS数据不能修改地点,只能迁移,所以我只好写了个软件工具把已有的OOS数据从山东青岛迁移到江苏苏州容器。下图是迁移到江苏苏州容器后的区域属性。
注意,容器属性中的EndPoint是不对的,江苏苏州OOS的域名是oos-jssz.ctyunapi.cn
其次,需要在云服务器上绑定域名到内网IP。
可以修改主机的/etc/hosts,但是因为我使用了docker compose部署Web应用,因此可以在docker compose脚本映射OOS域名到内网IP:
extra_hosts:
- "oos-jssz.ctyunapi.cn:内网IP"
Asp.Net Core软件中初始化AmazonS3Client客户端对象,直接使用OOS域名oos-jssz.ctyunapi.cn即可。
var credentials = new BasicAWSCredentials(AccessKeyId, AccessKeySecret); var conf = new AmazonS3Config { ServiceURL = $"https://oos-jssz.ctyunapi.cn”, //为了使用版本2认证,千万不能设置认证区域!否则会采用版本4,天翼云不支持版本4认证! //AuthenticationRegion = "sdqd", SignatureVersion = "2", };
在天翼云的容器里边做测试一下内网IP。
docker exec -it 容器名称 /bin/sh
要安装ping工具,注意要先升级apt-get,否则会提示E: Unable to locate package iputils-ping
# apt-get update && apt-get install iputils-ping
可以看到容器里边的OOS域名是内网IP
# ping oos-jssz.ctyunapi.cn
PING oos-jssz.ctyunapi.cn (100.125.82.73) 56(84) bytes of data.
64 bytes from oos-jssz.ctyunapi.cn (100.125.82.73): icmp_seq=1 ttl=59 time=0.377 ms
64 bytes from oos-jssz.ctyunapi.cn (100.125.82.73): icmp_seq=2 ttl=59 time=0.272 ms
64 bytes from oos-jssz.ctyunapi.cn (100.125.82.73): icmp_seq=3 ttl=59 time=0.310 ms
在宿主机直接ping域名是外网IP
# ping oos-jssz.ctyunapi.cn
PING oos-jssz.ctyunapi.cn (61.155.178.178) 56(84) bytes of data.
64 bytes from 61.155.178.178 (61.155.178.178): icmp_seq=1 ttl=55 time=0.672 ms
64 bytes from 61.155.178.178 (61.155.178.178): icmp_seq=2 ttl=55 time=0.374 ms
64 bytes from 61.155.178.178 (61.155.178.178): icmp_seq=3 ttl=55 time=0.462 ms
标签:容器,存储,cn,天翼云,ctyunapi,jssz,oos,OOS From: https://www.cnblogs.com/sunnytrudeau/p/17180197.html