bucket-operations-sample.html 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383
  1. <!--
  2. * Copyright 2019 Huawei Technologies Co.,Ltd.
  3. * Licensed under the Apache License, Version 2.0 (the "License"); you may not use
  4. * this file except in compliance with the License. You may obtain a copy of the
  5. * License at
  6. *
  7. * http://www.apache.org/licenses/LICENSE-2.0
  8. *
  9. * Unless required by applicable law or agreed to in writing, software distributed
  10. * under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
  11. * CONDITIONS OF ANY KIND, either express or implied. See the License for the
  12. * specific language governing permissions and limitations under the License.
  13. -->
  14. <!DOCTYPE html>
  15. <html lang="en">
  16. <head>
  17. <meta charset="utf-8">
  18. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  19. <meta http-equiv="Pragma" name="Pragma" content="no-cache">
  20. <title>bucket_operations_sample</title>
  21. </head>
  22. <body>
  23. <h3>OBS BrowserJS SDK demo</h3>
  24. <h4>Basic Configuration</h4>
  25. <label>AK:</label> <input type="text" value="*** Provide your Access Key ***" id="ak" size="30"/>
  26. <label>SK:</label> <input type="text" value="*** Provide your Secret Key ***" id="sk" size="30"/>
  27. <p>
  28. <label>Server:</label> <input type="text" value="http://your-endpoint" id="server" size="30"/>
  29. <label>Bucket:</label> <input type="text" value="bucketname" id="bucketname"/>
  30. <p>
  31. <input type="button" value="Click to get bucket location" onclick="getBucketLocation();"/>
  32. <p>
  33. <p>
  34. <input type="button" value="Click to get bucket storage info" onclick="getBucketStorageInfo();"/>
  35. <p>
  36. <input type="button" value="Click to get set/get bucket quota" onclick="doBucketQuota();"/>
  37. <p>
  38. <input type="button" value="Click to get set/get bucket versioning status" onclick="doBucketVersioning();"/>
  39. <p>
  40. <input type="button" value="Click to get set/get bucket acl" onclick="doBucketAcl();"/>
  41. <p>
  42. <input type="button" value="Click to get set/get/delete bucket logging" onclick="doBucketLogging();"/>
  43. <p>
  44. <input type="button" value="Click to get get bucket metadata" onclick="getBucketMetadata();"/>
  45. <p>
  46. <input type="button" value="Click to get set/get/delete bucket website" onclick="doBucketWebsite();"/>
  47. <p>
  48. <input type="button" value="Click to get set/get/delete bucket lifecyle" onclick="doBucketLifecycle();"/>
  49. <p>
  50. <input type="button" value="Click to get set/get/delete bucket tagging" onclick="doBucketTagging();"/>
  51. </body>
  52. <script src="../dist/esdk-obs-browserjs.3.23.5.min.js"></script>
  53. <script type="text/javascript">
  54. /**
  55. * This sample demonstrates how to do bucket-related operations
  56. * (such as do bucket ACL/Lifecycle/Logging/Website/Location/Tagging)
  57. * on OBS using the OBS SDK for BrowserJS.
  58. */
  59. function getObsClient(){
  60. /*
  61. * Initialize a obs client instance with your account for accessing OBS
  62. */
  63. var ak = document.getElementById('ak').value;
  64. var sk = document.getElementById('sk').value;
  65. var server = document.getElementById('server').value;
  66. return new ObsClient({
  67. access_key_id: ak,
  68. secret_access_key: sk,
  69. server : server,
  70. timeout : 60 * 5,
  71. });
  72. }
  73. /*
  74. * Get bucket location operation
  75. */
  76. function getBucketLocation(){
  77. var bucketName = document.getElementById('bucketname').value;
  78. var obs = getObsClient();
  79. obs.getBucketLocation({
  80. Bucket : bucketName
  81. }).then(function(result) {
  82. if(result.CommonMsg.Status < 300){
  83. console.log('Get bucket location ' + result.InterfaceResult.Location + '\n');
  84. }
  85. });
  86. }
  87. /*
  88. * Get bucket storageInfo operation
  89. */
  90. function getBucketStorageInfo(){
  91. var bucketName = document.getElementById('bucketname').value;
  92. var obs = getObsClient();
  93. obs.getBucketStorageInfo({
  94. Bucket : bucketName
  95. }).then(function(result) {
  96. if(result.CommonMsg.Status < 300){
  97. console.log('Get bucket storageInfo:');
  98. console.log('\tsize:' + result.InterfaceResult.Size);
  99. console.log('\tobjectNumber:' + result.InterfaceResult.ObjectNumber);
  100. console.log('\n');
  101. }
  102. });
  103. }
  104. /*
  105. * Put/Get bucket quota operations
  106. */
  107. function doBucketQuota(){
  108. var bucketName = document.getElementById('bucketname').value;
  109. var obs = getObsClient();
  110. obs.setBucketQuota({
  111. Bucket : bucketName,
  112. StorageQuota : 1024 * 1024 * 1024 * 1024
  113. }).then(function(result) {
  114. obs.getBucketQuota({
  115. Bucket : bucketName
  116. }).then(function(result) {
  117. if(result.CommonMsg.Status < 300){
  118. console.log('Get bucket quota ' + result.InterfaceResult.StorageQuota + '\n');
  119. }
  120. } );
  121. });
  122. }
  123. /*
  124. * Put/Get bucket versioning operations
  125. */
  126. function doBucketVersioning(){
  127. var bucketName = document.getElementById('bucketname').value;
  128. var obs = getObsClient();
  129. obs.getBucketVersioning({
  130. Bucket : bucketName
  131. }).then(function(result) {
  132. if(result.CommonMsg.Status < 300){
  133. console.log('Default bucket versioning config ' + result.InterfaceResult.VersionStatus + '\n');
  134. obs.setBucketVersioning({
  135. Bucket : bucketName,
  136. VersionStatus : 'Enabled'
  137. }).then(function(result) {
  138. if(result.CommonMsg.Status < 300){
  139. console.log('Enable bucket versioning finished.' + '\n');
  140. obs.getBucketVersioning({
  141. Bucket : bucketName
  142. }).then(function(result) {
  143. console.log('Current bucket versioning config ' + result.InterfaceResult.VersionStatus + '\n');
  144. });
  145. }
  146. });
  147. }
  148. });
  149. }
  150. /*
  151. * Put/Get bucket acl operations
  152. */
  153. function doBucketAcl(){
  154. var bucketName = document.getElementById('bucketname').value;
  155. var obs = getObsClient();
  156. obs.setBucketAcl({
  157. Bucket : bucketName,
  158. ACL : obs.enums.AclPublicRead
  159. }).then(function(result) {
  160. if(result.CommonMsg.Status < 300){
  161. console.log('Set bucket ACL to public read finished. \n');
  162. obs.getBucketAcl({
  163. Bucket : bucketName
  164. }).then(function(result) {
  165. if(result.CommonMsg.Status < 300){
  166. console.log('Get bucket ACL:');
  167. console.log('\tOwner[ID]-->' + result.InterfaceResult.Owner.ID);
  168. console.log('\tGrants:');
  169. var i=0;
  170. for(;i<result.InterfaceResult.Grants.length;i++){
  171. console.log('\tGrant[' + i + ']:');
  172. console.log('\tGrantee[ID]-->' + result.InterfaceResult.Grants[i]['Grantee']['ID']);
  173. console.log('\tGrantee[URI]-->' + result.InterfaceResult.Grants[i]['Grantee']['URI']);
  174. console.log('\tPermission-->' + result.InterfaceResult.Grants[i]['Permission']);
  175. }
  176. console.log('\n');
  177. }
  178. });
  179. }
  180. });
  181. }
  182. /*
  183. * Put/Get/Delete bucket logging operations
  184. */
  185. function doBucketLogging(){
  186. var bucketName = document.getElementById('bucketname').value;
  187. var obs = getObsClient();
  188. obs.setBucketLogging({
  189. Bucket: bucketName,
  190. Agency: 'test',
  191. LoggingEnabled:{
  192. TargetBucket:bucketName,
  193. TargetPrefix:'log-'
  194. }
  195. }).then(function(result) {
  196. if(result.CommonMsg.Status < 300){
  197. console.log('Set bucket logging finished.\n');
  198. obs.getBucketLogging({
  199. Bucket : bucketName
  200. }).then(function(result) {
  201. if(result.CommonMsg.Status < 300){
  202. console.log('Get bucket logging:');
  203. console.log('\tTargetBucket-->' + result.InterfaceResult.LoggingEnabled.TargetBucket);
  204. console.log('\tTargetPrefix-->' + result.InterfaceResult.LoggingEnabled.TargetPrefix);
  205. console.log('\n');
  206. obs.setBucketLogging({
  207. Bucket : bucketName
  208. }).then(function(result){
  209. if(result.CommonMsg.Status < 300){
  210. console.log('Delete bucket logging finished.\n');
  211. }
  212. });
  213. }
  214. });
  215. }else{
  216. console.log('Status-->' + result.CommonMsg.Status);
  217. console.log('Code-->' + result.CommonMsg.Code);
  218. console.log('Message-->' + result.CommonMsg.Message);
  219. }
  220. });
  221. }
  222. /*
  223. * Get bucket metadata operation
  224. */
  225. function getBucketMetadata(){
  226. var bucketName = document.getElementById('bucketname').value;
  227. var obs = getObsClient();
  228. obs.getBucketMetadata({
  229. Bucket : bucketName
  230. }).then(function(result) {
  231. if(result.CommonMsg.Status < 300){
  232. console.log('Get bucket metadata:');
  233. console.log('RequestId-->' + result.InterfaceResult.RequestId);
  234. console.log('ObsVersion-->' + result.InterfaceResult.ObsVersion);
  235. console.log('\n');
  236. }
  237. });
  238. }
  239. /*
  240. * Put/Get/Delete bucket lifecycle operations
  241. */
  242. function doBucketLifecycle(){
  243. var bucketName = document.getElementById('bucketname').value;
  244. var obs = getObsClient();
  245. obs.setBucketLifecycle({
  246. Bucket : bucketName,
  247. Rules:[
  248. {ID:'delete obsoleted files',Prefix:'obsoleted/',Status:'Enabled',Expiration:{Days:10}},
  249. {ID:'delete temporary files',Prefix:'temporary/',Status:'Enabled',Expiration:{Date:'2018-12-31T00:00:00Z'}},
  250. {ID:'delete temp files',Prefix:'temp/',Status:'Enabled',NoncurrentVersionExpiration:{NoncurrentDays : 10}}
  251. ]
  252. }).then(function(result){
  253. if(result.CommonMsg.Status < 300){
  254. console.log('Set bucket lifecyle finished.\n');
  255. obs.getBucketLifecycle({
  256. Bucket : bucketName
  257. }).then(function(result){
  258. if(result.CommonMsg.Status < 300){
  259. console.log('Get bucket lifecyle:');
  260. var i=0;
  261. for(;i<result.InterfaceResult.Rules.length;i++){
  262. console.log('Rule[' + i + ']:');
  263. console.log('ID-->' + result.InterfaceResult.Rules[i]['ID']);
  264. console.log('Prefix-->' + result.InterfaceResult.Rules[i]['Prefix']);
  265. console.log('Status-->' + result.InterfaceResult.Rules[i]['Status']);
  266. if(result.InterfaceResult.Rules[i]['Expiration']){
  267. console.log('Expiration[Date]-->' + result.InterfaceResult.Rules[i]['Expiration']['Date']);
  268. console.log('Expiration[Days]-->' + result.InterfaceResult.Rules[i]['Expiration']['Days']);
  269. }
  270. if(result.InterfaceResult.Rules[i]['NoncurrentVersionExpiration']){
  271. console.log('NoncurrentVersionExpiration[Days]-->' + result.InterfaceResult.Rules[i]['NoncurrentVersionExpiration']['NoncurrentDays']);
  272. }
  273. }
  274. console.log('\n');
  275. obs.deleteBucketLifecycle({
  276. Bucket : bucketName
  277. }).then(function(result) {
  278. if(result.CommonMsg.Status < 300){
  279. console.log('Delete bucket lifecyle finished.\n');
  280. }
  281. });
  282. }
  283. });
  284. }
  285. });
  286. }
  287. /*
  288. * Put/Get/Delete bucket website operations
  289. */
  290. function doBucketWebsite(){
  291. var bucketName = document.getElementById('bucketname').value;
  292. var obs = getObsClient();
  293. obs.setBucketWebsite({
  294. Bucket : bucketName,
  295. IndexDocument:{Suffix:'index.html'},
  296. ErrorDocument:{Key:'error.html'}
  297. }).then(function(result) {
  298. if(result.CommonMsg.Status < 300){
  299. console.log('Set bucket website finished.\n');
  300. obs.getBucketWebsite({
  301. Bucket : bucketName
  302. }).then(function(result) {
  303. if(result.CommonMsg.Status < 300){
  304. console.log('Get bucket website:');
  305. console.log('\tIndexDocument[Suffix]-->' + result.InterfaceResult.IndexDocument['Suffix']);
  306. console.log('\tErrorDocument[Key]-->' + result.InterfaceResult.ErrorDocument['Key']);
  307. console.log('\n');
  308. obs.deleteBucketWebsite({
  309. Bucket : bucketName
  310. }).then(function(result) {
  311. if(result.CommonMsg.Status < 300){
  312. console.log('Delete bucket website finished.\n');
  313. console.log('\n');
  314. }
  315. });
  316. }
  317. });
  318. }
  319. });
  320. }
  321. /*
  322. * Put/Get/Delete bucket tagging operations
  323. */
  324. function doBucketTagging(){
  325. var bucketName = document.getElementById('bucketname').value;
  326. var obs = getObsClient();
  327. obs.setBucketTagging({
  328. Bucket : bucketName,
  329. Tags : [{'Key':'key1','Value':'value1'}, {'Key':'key2', 'Value':'value2'}]
  330. }).then(function(result) {
  331. if(result.CommonMsg.Status < 300){
  332. console.log('Set bucket tagging finished.\n');
  333. obs.getBucketTagging({
  334. Bucket : bucketName
  335. }).then(function(result){
  336. if(result.CommonMsg.Status < 300){
  337. console.log('Get bucket tagging:');
  338. result.InterfaceResult.Tags.forEach(function(tag){
  339. console.log('Tag-->' + tag.Key + ':' + tag.Value);
  340. });
  341. console.log('\n');
  342. obs.deleteBucketTagging({
  343. Bucket : bucketName
  344. }).then(function(result) {
  345. if(result.CommonMsg.Status < 300){
  346. console.log('Delete bucket tagging finished.\n');
  347. }
  348. });
  349. }
  350. });
  351. }
  352. });
  353. }
  354. </script>
  355. </html>