Aliyun STS golang sdk Error (405:Method Not Allowed)

之前用的aliyun golang sdk 完成了STS的授权功能,今天因为要加短信的功能,就顺便升级了aliyun golang sdk的版本,编译没有任何问题,结果发布的时候发现之前sts的获取token接口报405:Method Not Allowed, 因为没有改任何code,知道是因为sdk升级带来的问题,但是不清楚是因为什么,于是debug了下,找到了原因记录下。

问题

debug发现新版本sdk的出现问题是因为sdk内部根据传入的regionId计算出来的endpoint错误,导致405错误, 所以修改了regionId即可正确访问。

上面找到问题后,就好奇为什么同样的配置旧版本的sdk就可以调用成功能,于是有切换了旧版sdk做了debug后发现,主要是旧版本的enpoint解析在几个分支都失败后,会有个全局默认的,所以最终可以得到一个正确的endpoint,但是新版的解析器逻辑修改了,导致了问题出现。

关于regionId这里要注意:

  • 我用到的OSS有自己的regionId,会根据你买服务的地区不同而不同,设置错误无法访问

    OSS的regionId(比如我用的:oss-cn-beijing)的格式和其他(比如STS和SMS的都是:cn-hangzhou)都不同,我这边的错误就是因为要做OSS业务,看到sdk要regionId参数,就直接使用了(旧版本sdk还正确访问了- -!)

  • STS没有自己的regionId,是在系统给的自己选(但是sdk里面不同的regionId还是都匹配到同一个host,不了解逻辑是做什么)

ps: sdk里面的endpoint解析逻辑有点复杂,不清楚业务背景不太懂为什么要这样做,比如外边设置了regionId,但里面都用EndpointMap被匹配到一个host,很奇怪。

EndpointMap

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值