{"id":23552481,"url":"https://github.com/xlisp/aliyun-oss-clj","last_synced_at":"2025-12-12T01:09:46.910Z","repository":{"id":57713129,"uuid":"92915896","full_name":"xlisp/aliyun-oss-clj","owner":"xlisp","description":"阿里云OSS的Clojure SDK封装","archived":false,"fork":false,"pushed_at":"2020-03-28T07:33:38.000Z","size":706,"stargazers_count":10,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-24T18:05:10.707Z","etag":null,"topics":["aliyun","clojure","oss","sdk","sts"],"latest_commit_sha":null,"homepage":"","language":"Clojure","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"epl-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/xlisp.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-05-31T07:07:51.000Z","updated_at":"2023-03-14T17:32:57.000Z","dependencies_parsed_at":"2022-09-05T22:50:19.213Z","dependency_job_id":null,"html_url":"https://github.com/xlisp/aliyun-oss-clj","commit_stats":null,"previous_names":["xlisp/aliyun-oss-clj","chanshunli/aliyun-oss-clj"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xlisp%2Faliyun-oss-clj","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xlisp%2Faliyun-oss-clj/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xlisp%2Faliyun-oss-clj/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xlisp%2Faliyun-oss-clj/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/xlisp","download_url":"https://codeload.github.com/xlisp/aliyun-oss-clj/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250681298,"owners_count":21470184,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aliyun","clojure","oss","sdk","sts"],"created_at":"2024-12-26T11:11:19.908Z","updated_at":"2025-12-12T01:09:41.826Z","avatar_url":"https://github.com/xlisp.png","language":"Clojure","funding_links":[],"categories":[],"sub_categories":[],"readme":"# aliyun-oss-clj: 阿里云OSS的Clojure SDK封装\n\n* 阿里云生成STS临时的id和key访问阿里云OSS\n\n## Usage\n\n* project.clj \u0026 youns.clj\n```clojure\n;; project.clj\n[aliyun-oss-clj \"0.1.5\"]\n;; your ns\n(ns test (:require [aliyun-oss-clj.core :as sts]))\n```\n* 生成STS临时的访问身份信息 \n```clojure\n(let [client (sts/create-client {:region            \"cn-shanghai\"\n                             :access-key-id     \"\u003caccess-key-id\u003e\"\n                             :access-key-secret \"\u003caccess-key-secret\u003e\"})]\n  (sts/get-assumed-role-creds\n    client\n    {:role-arn          \"\u003crole-arn\u003e\"\n     :role-session-name \"\u003crole-session-name\u003e\"\n     :policy-map        {:Version   \"1\"\n                         :Statement [{:Action   [\"oss:*\"]\n                                      :Resource [\"acs:oss:*:*:*\"]\n                                      :Effect   \"Allow\"}]}}))\n```\n注意：这里的role-arn是主账号的id，如何获取参考https://help.aliyun.com/document_detail/28763.html?spm=a2c4g.11186623.6.805.18b77ffb9lHREe\n* 将上一步生成STS临时的访问身份信息, 填入对应的oss的调用参数中 (Clojure的示例)\n\n```clojure\n(ns test-oss (:require [aliyun-oss-clj.oss :as oss]))\n\n(let [client (oss/create-client {:endpoint          \"http://oss-cn-shanghai.aliyuncs.com\"\n                             :access-key-id     \"\u003caccess-key-id\u003e\" ;; 临时的sts生成的id\n                             :access-key-secret \"\u003caccess-key-secret\u003e\" ;; 临时的sts生成的key\n                             :sts-token         \"\u003csts-token\u003e\"}) ;; 临时的sts生成的token\n      bucket-name \"\u003cbucket-name\u003e\"]\n  [(oss/has-bucket-name? client bucket-name)\n   (oss/get-bucket-info client bucket-name)\n   (oss/upload-file client bucket-name \"test1.txt\" (.getBytes \"hello, world\"))])\n```\n\n* 将上一步生成STS临时的访问身份信息, 填入对应的oss的调用参数中 (Node的示例)\n\n```node\nvar oss = require('ali-oss');\nvar co = require('co');\nvar store = oss({\n    accessKeyId: 'STS.GkRjtzZEaaaaaaaaaaaaaa',  //临时STS生成的accessKeyId\n    accessKeySecret: '5oqY7nPCUFWiYbbbbbbbbbbbbb',  //临时STS生成的accessKeySecret \n    bucket: 'stevechanoss',\n    region: 'oss-cn-shanghai',\n    stsToken: 'CAIShQJ1q6Ft5B2cccccccccccccccccc5R2WaeU2i6yIUo1h4Cuix1xtE5GA==' // 临时STS生成的 stsToken\n});\n\nco(function* () {\n    var result = yield store.listBuckets();\n    console.log(result);\n    var result = yield store.listBuckets({\n        prefix: 'prefix'\n    });\n    console.log(result);\n}\n  ).catch(function (err) {\n      console.log(err);\n  });\n\n```\n* 将上一步生成STS临时的访问身份信息, 填入对应的oss的调用参数中 (js网页的示例)\n\n```html\n\n\u003ch1\u003e JavaScript-SDK 快速开始-浏览器 \u003c/h1\u003e\n\u003cscript src=\"http://gosspublic.alicdn.com/aliyun-oss-sdk-4.4.4.min.js\"\u003e\u003c/script\u003e\n\n\u003cscript type=\"text/javascript\"\u003e\n  var client = new OSS.Wrapper({\n    region: 'oss-cn-shanghai',\n    accessKeyId: 'STS.GkRjtzZEaaaaaaaaaaaaaa',\n    accessKeySecret: '5oqY7nPCUFWiYbbbbbbbbbbbbb',\n    stsToken: 'CAIShQJ1q6Ft5B2cccccccccccccccccc5R2WaeU2i6yIUo1h4Cuix1xtE5GA==',\n    bucket: 'stevechanoss'\n  });\n  client.list({\n    'max-keys': 10\n  }).then(function (result) {\n    console.log(result);\n  }).catch(function (err) {\n    console.log(err);\n  });\n\u003c/script\u003e\n\n```\n\n*网页调用需要先到阿里云的OSS控制台设置: 允许跨域设置*\n\n![](./js跨域设置.jpeg)\n\n网页调用效果:\n\n![](./js调用效果.jpeg)\n\n* `ETag` 设置,允许大文件的上传,如100k以上\n\n![](./ETag.jpeg)\n\n阿里云设置`Expose Header`\n\n![](./ali_etag.jpeg)\n\n## License\n\nCopyright © 2019 Eclipse Public License\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxlisp%2Faliyun-oss-clj","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxlisp%2Faliyun-oss-clj","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxlisp%2Faliyun-oss-clj/lists"}