func-aliyun-oss.js 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  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. // 公开OSS
  15. // 用户登录名称 mailto:hep-textbook-api@cloudhep.onaliyun.com
  16. // Bucket: hep-textbook
  17. // 内网地址:http://oss-cn-beijing.aliyuncs.com/
  18. // 外网地址:oss-cn-beijing-internal.aliyuncs.com
  19. const ALI_OSS_BUCKET = process.env.ALI_OSS_BUCKET || "hep-textbook"
  20. const ALI_OSS_ACCESS_KEY_ID = process.env.ALI_OSS_ACCESS_KEY_ID || "LTAI5t6AbTiAvXmeoVdJZhL3"
  21. const ALI_OSS_ACCESS_KEY_SECRET = process.env.ALI_OSS_ACCESS_KEY_SECRET || "KLtQRdIW69KLP7jnzHNUf7eKmdptxH"
  22. // 私有OSS
  23. // ---oss---
  24. const ALI_OSS_BUCKET_SECRET = process.env.ALI_OSS_BUCKET || "hep-textbook"
  25. // AccessKey ID: LTAI5t6AbTiAvXmeoVdJZhL3
  26. // AccessKey Secret: KLtQRdIW69KLP7jnzHNUf7eKmdptxH
  27. // 通过STS服务生成临时访问凭证。临时访问凭证包括临时访问密钥(AccessKeyId和AccessKeySecret)和安全令牌(SecurityToken)。
  28. const { STS } = require('ali-oss');
  29. const sts = new STS({
  30. // 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量ALI_OSS_ACCESS_KEY_ID和ALI_OSS_ACCESS_KEY_SECRET。
  31. accessKeyId: ALI_OSS_ACCESS_KEY_ID,
  32. accessKeySecret: ALI_OSS_ACCESS_KEY_SECRET
  33. });
  34. function getAliyunOssAccessToken(){
  35. // roleArn填写角色ARN。
  36. // policy填写自定义权限策略。
  37. // expiration用于设置临时访问凭证有效时间单位为秒,最小值为900,最大值以当前角色设定的最大会话时间为准。
  38. // sessionName用于自定义角色会话名称,用来区分不同的令牌,例如填写为SessionTest。
  39. // let result = await sts.assumeRole('acs:ram::137918634953****:role/ossram', `{
  40. // "Version": "1",
  41. // "Statement": [
  42. // {
  43. // "Effect": "Allow",
  44. // "Action": [
  45. // "oss:*"
  46. // ],
  47. // "Resource": [
  48. // "acs:oss:*:*:${ALI_OSS_BUCKET}",
  49. // "acs:oss:*:*:${ALI_OSS_BUCKET}/*"
  50. // ]
  51. // }
  52. // ]
  53. // }`, '3600', 'SessionTest' )
  54. // return result.credentials
  55. return {
  56. bucket: ALI_OSS_BUCKET,
  57. AccessKeyId: ALI_OSS_ACCESS_KEY_ID,
  58. AccessKeySecret:ALI_OSS_ACCESS_KEY_SECRET,
  59. SecurityToken: null,
  60. Expiration: null
  61. }
  62. // AccessKeyId: result.credentials.AccessKeyId,
  63. // AccessKeySecret: result.credentials.AccessKeySecret,
  64. // SecurityToken: result.credentials.SecurityToken,
  65. // Expiration: result.credentials.Expiration
  66. }
  67. module.exports.getAliyunOssAccessToken = getAliyunOssAccessToken
  68. if(argv?.test){
  69. getAliyunOssAccessToken()
  70. }