ks3
Version:
本代码库为`金山云存储KS3`服务.主要提供`KS3 nodejs SDK`和`命令行工具`.
282 lines (225 loc) • 9.45 kB
JavaScript
var KS3 = require('..');
var util = require("../lib/util")
var xml2json = util.xml2json;
const { ak, sk, bucketName, region } = require('./const');
const { client } = require('./client');
var cb = function (err, data, response, body) {
console.log('========> err:', err)
if (response) console.log('========> statusCode:', response.headers)
console.log('========> data:', data)
if (body) console.log('========> body:', body.toString())
const d = xml2json.parser(data)
console.log('========> 转后的json:', JSON.stringify(d))
}
function put () {
client.bucket.put({Bucket: 'liubo-test'}, cb)
}
function query () {
client.bucket.get({
Bucket: bucketName,
Marker: "",
MaxKeys: 10,
Prefix: "050"
}, cb)
}
function deleteBucket () {
client.bucket.del(cb)
}
function head () {
client.bucket.head({
Bucket: 'demo'
}, cb)
}
function listMultipartUploads () {
client.bucket.listMultipartUploads({
Bucket: bucketName,
Delimiter: '', //指定分隔符,非必填
EncodingType: '', //指定返回结果的编码方式,可选值:url,非必填
MaxUploads: 1000, //限定要列出正在进行任务的上限值([1,1000]),默认为1000,非必填
KeyMarker: '', //列出所有key按照词典顺序比key-marker参数值大的任务,非必填
UploadIdMarker: '', //与key-marker配合使用,指定列举目标空间中正在进行分块上传任务的起始位置,非必填
Prefix: '', //限定响应结果列表使用的前缀,非必填
}, cb)
}
function getBucketLocation () {
client.bucket.getLocation(cb)
}
function getBucketCors () {
client.bucket.getBucketCors(cb)
}
function putBucketCors () {
const params = {
Rules: [{
allowedMethod: ['POST', 'GET'],
allowedOrigin: ['http://ks3.console.ksyun.com', 'http://ks3.ksyun.com'],
allowedHeader: ['x-kss-test1:nodesdk-test1', 'x-kss-test2:nodesdk-test2'],
maxAgeSeconds: 3000,
exposeHeader: 'x-kss-test1:nodesdk-test1, x-kss-test2:nodesdk-test2'
}]
}
client.bucket.putBucketCors(params, cb)
}
function deleteBucketCors () {
client.bucket.deleteBucketCors(cb)
}
function getBucketReplicationConfiguration () {
client.bucket.getBucketReplicationConfiguration(cb)
}
function deleteBucketReplicationConfiguration () {
client.bucket.deleteBucketReplicationConfiguration(cb)
}
function putBucketReplicationConfiguration () {
const param = {
Rule: {
prefix: ['abc', 'xyz'],
deleteMarkerStatus: 'Disabled',
targetBucket: 'targetBucketName',
historicalObjectReplication: 'Enabled',
}
}
client.bucket.putBucketReplicationConfiguration(param, cb)
}
//---------------------------------- bucket mirror -------------------------------------
function getBucketMirror () {
client.bucket.getBucketMirror(cb)
}
function deleteBucketMirror () {
client.bucket.deleteBucketMirror(cb)
}
function putBucketMirror () {
const json = {"version":"V3","use_default_robots":false,"sync_mirror_rules":[{"match_condition":{"http_codes":["404"],"key_prefixes":["abc"]},"mirror_url":"http://v-ks-a-i.originalvod.com","mirror_request_setting":{"pass_query_string":true,"follow3xx":true,"header_setting":{"set_headers":[{"key":"abc","value":"def"}],"remove_headers":[{"key":"asdb"},{"key":"asdfa"}],"pass_headers":[{"key":"asdb"},{"key":"asdfa"}]}},"saving_setting":{"acl":"private"}}]}
client.bucket.putBucketMirror({
Mirror: json
}, cb)
}
//---------------------------------- bucket policy -------------------------------------
function getBucketPolicy () {
client.bucket.getBucketPolicy(cb)
}
function deleteBucketPolicy () {
client.bucket.deleteBucketPolicy(cb)
}
function putBucketPolicy () {
const json = {}
client.bucket.putBucketPolicy({
Policy: {
"Statement":[{"Action":["ks3:GetObject"],"Resource":["krn:ksc:ks3:::zwy-test/测试测试(s).json"],"Effect":"Allow","Principal":{"KSC":["*"]}},
]}
}, cb)
}
//---------------------------------- bucket Lifecycle -------------------------------------
function getBucketLifecycle () {
client.bucket.getBucketLifecycle(cb)
}
function deleteBucketLifecycle () {
client.bucket.deleteBucketLifecycle(cb)
}
function putBucketLifecycle () {
const config = [{"id":"id1","filter":{"prefix":"documents"},"expiration":{"date":"2016-12-31T00:00:00+08:00"},"status":"Enabled"},{"id":"id2","filter":{"prefix":"logs"},"expiration":{"days":130},"transition":[{"days":10,"storageClass":"STANDARD_IA"},{"days":40,"storageClass":"ARCHIVE"}],"status":"Enabled"},{"id":"id3","filter":{"prefix":"pic"},"status":"Enabled","expiration":{"date":"2018-01-01T00:00:00+08:00"}},{"id":"id4","filter":{"and":{"prefix":123,"tag":[{"key":"age","Value":21},{"key":"name","Value":"li"}]}},"status":"Enabled","expiration":{"date":"2021-01-01T00:00:00+08:00"}}]
// const config = [{"id":"id1","filter":{"prefix":"documents"},"expiration":{"date":"2022-12-01T00:00:00+08:00"},"status":"Enabled"}]
client.bucket.putBucketLifecycle({
Rules: config
}, cb)
}
//---------------------------------- bucket logging -------------------------------------
function getLogging () {
client.bucket.getLogging({
Bucket: bucketName
},cb)
}
function putLogging () {
const logging = {
targetBucket: bucketName, // 必填,可与当前桶相同,但不推荐
targetPrefix: '' // 非必填
}
client.bucket.putLogging({
Logging: logging
}, cb)
}
function getAclType(){
client.bucket.getACLType(cb)
}
//---------------------------------- bucket retention -------------------------------------
function getBucketRetention(){
client.bucket.getBucketRetention(cb)
}
function putBucketRetention(){
client.bucket.putBucketRetention({
Status: 'Enabled',
Days: 3
}, cb)
}
function listBucketRetention(){
client.bucket.listBucketRetention({
Marker: '24年-三国预测集训集',
Prefix: '',
MaxKeys: 10
},function(err,data, res){
const d = xml2json.parser(data)
console.log('========> 转后的json:', JSON.stringify(d))
})
}
function put () {
client.bucket.put({
Bucket: 'zwy-test1111',
headers: {
'x-kss-server-side-encryption': 'ASE256'
}
}, cb)
}
function getBucketEncryption(){
client.bucket.getBucketEncryption({
Bucket: 'zwy-test-guangzhou1'
}, cb)
}
function putBucketEncryption(){
client.bucket.putBucketEncryption({
Bucket: 'zwy-test-guangzhou1'
}, cb)
}
function deleteBucketEncryption(){
client.bucket.deleteBucketEncryption({
Bucket: 'zwy-test-guangzhou1'
}, cb)
}
//---------------------------------- service操作 -------------------------------------
function listBucket () {
client.service.listBucket(cb)
}
// put()
// deleteBucket()
// head()
// query()
// listBucket()
getAclType()
// listMultipartUploads()
// getBucketLocation()
// getBucketCors()
// putBucketCors()
// deleteBucketCors()
// getBucketReplicationConfiguration()
// deleteBucketReplicationConfiguration()
// putBucketReplicationConfiguration()
// getBucketMirror()
// deleteBucketMirror()
// putBucketMirror()
// getBucketPolicy()
// deleteBucketPolicy()
// putBucketPolicy()
// putBucketLifecycle()
// getBucketLifecycle()
// deleteBucketLifecycle()
// getLogging()
// putLogging()
// getBucketRetention()
// putBucketRetention()
// listBucketRetention()
// const obj = '{"LifecycleConfiguration":{"Rule":[{"ID":"id1","Filter":{"Prefix":"documents"},"Expiration":{"Date":"2016-12-31T00:00:00+08:00"},"Status":"Enabled"},{"ID":"id2","Filter":{"Prefix":"logs"},"Expiration":{"Days":130},"Transition":[{"Days":10,"StorageClass":"STANDARD_IA"},{"Days":40,"StorageClass":"ARCHIVE"}],"Status":"Enabled"},{"ID":"id3","Filter":{"Prefix":"pic"},"Status":"Enabled","Expiration":{"Date":"2018-01-01T00:00:00+08:00"}},{"ID":"id4","Filter":{"And":{"Prefix":123,"Tag":[{"Key":"age","Value":21},{"Key":"name","Value":"li"}]}},"Status":"Enabled","Expiration":{"Date":"2021-01-01T00:00:00+08:00"}}]}}'
// const res = util.objToXml(JSON.parse(obj))
// console.log('res: ', res)
// const obj = '<LifecycleConfiguration><Rule><ID>id1</ID><Filter><Prefix>documents</Prefix></Filter><Expiration><Date>2016-12-31T00:00:00+08:00</Date></Expiration><Status>Enabled</Status></Rule><Rule><ID>id2</ID><Filter><Prefix>logs</Prefix></Filter><Expiration><Days>130</Days></Expiration><Transition><Days>10</Days><StorageClass>STANDARD_IA</StorageClass></Transition><Transition><Days>40</Days><StorageClass>ARCHIVE</StorageClass></Transition><Status>Enabled</Status></Rule><Rule><ID>id3</ID><Filter><Prefix>pic</Prefix></Filter><Status>Enabled</Status><Expiration><Date>2018-01-01T00:00:00+08:00</Date></Expiration></Rule><Rule><ID>id4</ID><Filter><And><Prefix>123</Prefix><Tag><Key>age</Key><Value>21</Value></Tag><Tag><Key>name</Key><Value>li</Value></Tag></And></Filter><Status>Enabled</Status><Expiration><Date>2021-01-01T00:00:00+08:00</Date></Expiration></Rule></LifecycleConfiguration>'
// const json = xml2json.parser(obj)
// console.log(JSON.stringify(json))
// putBucketEncryption()
// getBucketEncryption()
// deleteBucketEncryption()