UNPKG

ks3

Version:

本代码库为`金山云存储KS3`服务.主要提供`KS3 nodejs SDK`和`命令行工具`.

164 lines (145 loc) 4.54 kB
const requestPromise = require('request-promise') var aws4 = require('aws4'); var debug = require('debug')('ks3:iam'); var util = require('../util') /** * 获取项目列表 * * @param {*} opts * @param opt - { protocol, domain, region, ak, sk } */ function getProjectList(opts = {}) { var params = Object.assign({ protocol: 'http', domain: 'iam.api.ksyun.com', region: 'cn-beijing-6' }, opts) var qs = { Action: 'GetAccountAllProjectList', Version: '2015-11-01' } var path = `/?Action=${qs.Action}&Version=${qs.Version}` const { domain, protocol, region, ak, sk } = params var opts = { host: domain, path: path, service: 'iam', region: region} const accessKeyId = ak || this.ak const secretAccessKey = sk || this.sk if (!accessKeyId && !secretAccessKey) { throw new Error('require ak and sk ~') } var awsOpts = aws4.sign(opts, { accessKeyId, secretAccessKey }) debug('awsOpts', awsOpts) var options = { 'method': 'GET', 'url': `${protocol}://${domain}` + path, 'headers': { 'accept': 'application/json', 'x-amz-date': awsOpts.headers['X-Amz-Date'], 'Authorization': awsOpts.headers['Authorization'] } }; return requestPromise(options, function (error, response) { if (error) throw new Error(error); debug(response.body); return JSON.parse(response.body) }); } /** * 批量获取桶对应的项目信息 */ function batchGetBucketProject(instanceIds) { var qs = { Action: 'BatchGetInstanceProjectInfo', Version: '2015-11-01' } debug(qs) var path = `/?Action=${qs.Action}&Version=${qs.Version}` // var opts = { host: 'iam.api.ksyun.com', path: path, service: 'iam', region: 'cn-beijing-6', method: 'GET', body: JSON.stringify({ // InstanceIds: instanceIds // }), headers: { // 'content-type': 'application/json' // }} var opts = { host: 'iam.api.ksyun.com', path: path, service: 'iam', region: 'cn-beijing-6' } var awsOpts = aws4.sign(opts, { accessKeyId: this.ak, secretAccessKey: this.sk }) debug('awsOpts', awsOpts) var options = { 'method': 'GET', 'url': 'http://iam.api.ksyun.com' + path, 'headers': { 'content-type': 'application/json', 'accept': 'application/json', 'x-amz-date': awsOpts.headers['X-Amz-Date'], 'Authorization': awsOpts.headers['Authorization'] } }; return requestPromise(options, function (error, response) { if (error) throw new Error(error); debug(response.body); return response.body }); } /** * 批量获取桶的计量信息 */ function queryKs3Data(instanceIds) { var qs = { Action: 'QueryKs3Data', Version: 'v1' } var path = `/?Action=${qs.Action}&Version=${qs.Version}&StartTime=202111030000&EndTime=202111032359&DateType=Day&Bucketname=testcrrconsumer-0,ks3.caiyuan,video-livedvr-kshbp2,zhilianyi-test-shanghai,wpsfile-archive&Ks3Product=DataSize,BandwidthDown,NetBandwidthDown,CDNBandwidthDown` var opts = { host: 'ks3bill.api.ksyun.com', path: path, service: 'ks3bill', region: 'cn-beijing-6' } var awsOpts = aws4.sign(opts, { accessKeyId: this.ak, secretAccessKey: this.sk }) debug('awsOpts', awsOpts) var options = { 'method': 'GET', 'url': 'http://ks3bill.api.ksyun.com' + path, 'headers': { 'content-type': 'application/json', 'accept': 'application/json', 'x-amz-date': awsOpts.headers['X-Amz-Date'], 'Authorization': awsOpts.headers['Authorization'] } }; return requestPromise(options, function (error, response) { if (error) throw new Error(error); debug(response.body); return response.body }); } /** * 根据projectId获取项目制下的所有资源 * @param {*} ProjectId * @returns */ function getResourceList (ProjectId) { var qs = { Action: 'GetProjectInstanceList', Version: '2015-11-01' } var path = `/?ProjectId=${ProjectId}&Pn=1&${util.paramsEncode(qs)}` var opts = { host: 'iam.api.ksyun.com', path: path, service: 'iam', region: 'cn-beijing-6' } var awsOpts = aws4.sign(opts, { accessKeyId: this.ak, secretAccessKey: this.sk }) var options = { 'method': 'GET', 'url': 'http://iam.api.ksyun.com' + path, 'headers': { 'content-type': 'application/json', 'accept': 'application/json', 'x-amz-date': awsOpts.headers['X-Amz-Date'], 'Authorization': awsOpts.headers['Authorization'] } }; return requestPromise(options, function (error, response) { if (error) throw new Error(error); debug(response.body); return response.body }); } module.exports = { getProjectList: getProjectList, // batchGetBucketProject: batchGetBucketProject // queryKs3Data getResourceList }