func-aliyun-oss.js 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  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. AccessKeyId: ALI_OSS_ACCESS_KEY_ID,
  47. AccessKeySecret:ALI_OSS_ACCESS_KEY_SECRET,
  48. SecurityToken: null,
  49. Expiration: null
  50. }
  51. // AccessKeyId: result.credentials.AccessKeyId,
  52. // AccessKeySecret: result.credentials.AccessKeySecret,
  53. // SecurityToken: result.credentials.SecurityToken,
  54. // Expiration: result.credentials.Expiration
  55. }
  56. module.exports.getAliyunOssAccessToken = getAliyunOssAccessToken
  57. if(argv?.test){
  58. getAliyunOssAccessToken()
  59. }