func-aliyun-oss.js 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. const argv = require('yargs').argv
  2. export function defineAliOssSTS(){
  3. // function defineAuthingLogin(){
  4. Parse.Cloud.define("aliOssSTS", async (request) => {
  5. let result = await getAliyunOssAccessToken()
  6. return result
  7. });
  8. }
  9. const ALI_OSS_BUCKET = process.env.ALI_OSS_BUCKET || "hep-textbook"
  10. const ALI_OSS_ACCESS_KEY_ID = process.env.ALI_OSS_ACCESS_KEY_ID || "LTAI5t6AbTiAvXmeoVdJZhL3"
  11. const ALI_OSS_ACCESS_KEY_SECRET = process.env.ALI_OSS_ACCESS_KEY_SECRET || "KLtQRdIW69KLP7jnzHNUf7eKmdptxH"
  12. // 通过STS服务生成临时访问凭证。临时访问凭证包括临时访问密钥(AccessKeyId和AccessKeySecret)和安全令牌(SecurityToken)。
  13. const { STS } = require('ali-oss');
  14. const sts = new STS({
  15. // 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量ALI_OSS_ACCESS_KEY_ID和ALI_OSS_ACCESS_KEY_SECRET。
  16. accessKeyId: ALI_OSS_ACCESS_KEY_ID,
  17. accessKeySecret: ALI_OSS_ACCESS_KEY_SECRET
  18. });
  19. function getAliyunOssAccessToken(){
  20. // roleArn填写角色ARN。
  21. // policy填写自定义权限策略。
  22. // expiration用于设置临时访问凭证有效时间单位为秒,最小值为900,最大值以当前角色设定的最大会话时间为准。
  23. // sessionName用于自定义角色会话名称,用来区分不同的令牌,例如填写为SessionTest。
  24. // let result = await sts.assumeRole('acs:ram::137918634953****:role/ossram', `{
  25. // "Version": "1",
  26. // "Statement": [
  27. // {
  28. // "Effect": "Allow",
  29. // "Action": [
  30. // "oss:*"
  31. // ],
  32. // "Resource": [
  33. // "acs:oss:*:*:${ALI_OSS_BUCKET}",
  34. // "acs:oss:*:*:${ALI_OSS_BUCKET}/*"
  35. // ]
  36. // }
  37. // ]
  38. // }`, '3600', 'SessionTest' )
  39. // return result.credentials
  40. return {
  41. bucket: ALI_OSS_BUCKET,
  42. AccessKeyId: ALI_OSS_ACCESS_KEY_ID,
  43. AccessKeySecret:ALI_OSS_ACCESS_KEY_SECRET,
  44. SecurityToken: null,
  45. Expiration: null
  46. }
  47. // AccessKeyId: result.credentials.AccessKeyId,
  48. // AccessKeySecret: result.credentials.AccessKeySecret,
  49. // SecurityToken: result.credentials.SecurityToken,
  50. // Expiration: result.credentials.Expiration
  51. }
  52. module.exports.getAliyunOssAccessToken = getAliyunOssAccessToken
  53. if(argv?.test){
  54. getAliyunOssAccessToken()
  55. }