get_upload_credential.py 856 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. import uuid
  2. from sts.sts import Sts, Scope
  3. from main import app
  4. from settings import settings
  5. actions = [
  6. 'name/cos:PutObject',
  7. 'name/cos:InitiateMultipartUpload',
  8. 'name/cos:ListMultipartUploads',
  9. 'name/cos:ListParts',
  10. 'name/cos:UploadPart',
  11. 'name/cos:CompleteMultipartUpload',
  12. 'name/cos:AbortMultipartUpload',
  13. ]
  14. @app.post('/get_upload_credential')
  15. def get_upload_credential():
  16. p = f'{settings.upload_prefix}/{uuid.uuid7()}'
  17. config = {
  18. 'duration_seconds': 600,
  19. 'secret_id': settings.tencent.secret_id,
  20. 'secret_key': settings.tencent.secret_key,
  21. 'region': settings.tencent.region,
  22. 'policy': Sts.get_policy(
  23. [
  24. Scope(
  25. action,
  26. settings.tencent.bucket,
  27. settings.tencent.region,
  28. p,
  29. )
  30. for action in actions
  31. ]
  32. ),
  33. }
  34. return {
  35. 'credential': Sts(config).get_credential(),
  36. 'key': f'document/{p}',
  37. }