func-aliyun-oss.js 2.6 KB

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