ali-sdk / ali-oss

Aliyun OSS(Object Storage Service) JavaScript SDK for the Browser and Node.js
https://www.alibabacloud.com/help/doc-detail/52834.htm
MIT License
1.95k stars 576 forks source link

关于阿里云官网STS SDK的问题 #228

Closed AkashiX closed 7 years ago

AkashiX commented 7 years ago

2017-04-20 14:02:27,961 ERROR 5960 [-/127.0.0.1/-/27ms GET /sdk/ststoken/get] nodejs.TypeError: Converting circular structure to JSON at JSON.stringify () at Object.respond (c:\Users\Yanzhi Mo\Desktop_my_case\sts-case\node_modules\koa\lib\application.js:230:15) at handleResponse (c:\Users\Yanzhi Mo\Desktop_my_case\sts-case\node_modules\koa\lib\application.js:137:15) at process._tickDomainCallback (internal/process/next_tick.js:135:7)

AkashiX commented 7 years ago
const ALY = require('aliyun-sdk');
// 构建一个 Aliyun Client, 用于发起请求
// 构建Aliyun Client时需要设置AccessKeyId和AccessKeySevcret
// STS是Global Service, API入口位于华东 1 (杭州) , 这里使用sts API的主地址
const sts = new ALY.STS({
  accessKeyId: 'XXX',
  secretAccessKey: 'XXX',
  endpoint: 'http://oss-cn-shanghai.aliyuncs.com',
  apiVersion: '2015-04-01',
});
module.exports = app => {
  class SdkController extends app.Controller {
    * getStsToken() {
      // 构造AssumeRole请求
      const result = sts.assumeRole({
        Action: 'AssumeRole',
        // 指定角色Arn
        RoleArn: 'acs:ram::XXX:role/ramtestappwrite',
        // 设置Token的附加Policy,可以在获取Token时,通过额外设置一个Policy进一步减小Token的权限;
        Policy: '{"Version":"1","Statement":[{"Effect":"Allow","Action":["oss:PutObject"],"Resource":["acs:oss:*:*:ram-test-app","acs:oss:*:*:XXX-XXX-XXX/*"]}]}',
        // 设置Token有效期,可选参数,默认3600秒;
        DurationSeconds: 3600,
        RoleSessionName: 'usr002',
      }, function(err, res) {
        console.log(err, res);
      });

      this.ctx.body = {
        result,
      };
    }
  }
  return SdkController;
};
mars-coder commented 7 years ago

抱歉我们队sts的sdk也不太熟悉,你直接在阿里云官网上提交工单,工单会帮你找到他们的开发同学解决问题。