osssigput.py 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. """
  4. @Copyright (C) ansjer cop Video Technology Co.,Ltd.All rights reserved.
  5. @AUTHOR: ASJRD018
  6. @NAME: AnsjerFormal
  7. @software: PyCharm
  8. @DATE: 2018/11/8 9:23
  9. @Version: python3.6
  10. @MODIFY DECORD:ansjer dev
  11. @file: oss_sts.py
  12. @Contact: chanjunkai@163.com
  13. """
  14. # -*- coding: utf-8 -*-
  15. '''
  16. 生成sts上传授权
  17. '''
  18. from aliyunsdkcore import client
  19. from aliyunsdksts.request.v20150401 import AssumeRoleRequest
  20. import json
  21. import oss2
  22. import base64
  23. '''
  24. http://test.dvema.com/cloudVod/getSts?uidToken=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJjaGFubmVsIjoiNCIsInVpZCI6IkZUU0xMOEhNNDM3WjM4V1UxMTFBIn0.wkrwYvIYf5qEukOSTxALSAgSqop-gNBdEvSwScOgYB8
  25. '''
  26. tokenss = {
  27. "Expiration": "2019-01-02T07:03:19Z",
  28. "code": 0,
  29. "SecurityToken": "CAISxgJ1q6Ft5B2yfSjIr4n7L+/V2KVS9IqvU3DUt1UeZeBqpYnOrjz2IHFIf3NhAe0bv/kzm2lX7/YYlr0uebV4FXHoM/FQy6Z1rCGeOtOYkpR9SyqGYNj3d1KIAjvXgeUsCoeQFaElE5XAQlTAkTAJkNmeXD6+XlujHISUgJp8FLo+VRW5ajw0TbUzIRB5+vcHKVzbN/umLnyShXHLXmZlvgdghER166m03re4iHzkgUb91/UeqqnoP5GgdLMMBppkVMqv1+EELsiH2SVLuR9R7/U03u4W8jHZud3ERARjySjWDsaKyP1KHi0kRJdjQvdt6+b7mac/+M6rztWvkk0RZ74ECXiDGtz5nPGpQr35aowLEp/gIGnI39y1MZ34jhgpe3pzNnkRKoZ6cC4oVEF9F22Fc/D+qArQDBy/UK+ey7GQWgfwCpUwlhqAAS0lC1SNhWzeK59LV7ZO52lDC871TSZp+LHohSB/zWC4ItNZ4Goq/kcrTLw0m92zHVp4ZI294+/J8FcHVm0JWHi0VkL0O8LUTmKFveAxKBRMzgS/z6LApFOgI6JCTgPvEI+rDf4aXAMsGn8xwuvJ9H+o7bHTVYV+NYQEmnl53Leb",
  30. "AccessKeySecret": "41ZvKvrSLyKFzPMpZvFrFJdjzbrfqfysQn16Y62F4oxt",
  31. "endpoint": "oss-cn-shenzhen.aliyuncs.com",
  32. "storage": "5ZBU8UD6RHMZJ5JW111A/vod2/",
  33. "expire": "3600",
  34. "ip": "120.237.157.184",
  35. "AccessKeyId": "STS.NJNdUa5zsCHDQVeSUKioFJLeL",
  36. "bucket_name": "cnvod1",
  37. "arn": "acs:ram::1901342792446414:role/stsoss/5ZBU8UD6RHMZJ5JW111A"
  38. }
  39. # 使用RAM账号的AccessKeyId和AccessKeySecret向STS申请临时token。
  40. # 使用临时token中的认证信息初始化StsAuth实例。
  41. auth = oss2.StsAuth(tokenss['AccessKeyId'],
  42. tokenss['AccessKeySecret'],
  43. tokenss['SecurityToken'])
  44. print(auth)
  45. ############### callback
  46. callback_dict = {}
  47. callback_dict['callbackUrl'] = 'http://www.dvema.com:3000/?token=token&filename=shijianchuo&size=1234&len=1234'
  48. # 设置回调请求消息头中Host的值, 如oss-cn-hangzhou.aliyuncs.com。
  49. callback_dict['callbackHost'] = 'oss-cn-shenzhen.aliyuncs.com'
  50. # 设置发起回调时请求body的值。
  51. callback_dict['callbackBody'] = 'filename=${object}&size=${size}&mimeType=${mimeType}'
  52. # 设置发起回调请求的Content-Type。
  53. callback_dict['callbackBodyType'] = 'application/x-www-form-urlencoded'
  54. # 回调参数是Json格式,并且需要Base64编码。
  55. callback_param = json.dumps(callback_dict).strip()
  56. base64_callback_body = oss2.utils.b64encode_as_string(callback_param)
  57. # 回调参数编码后放在Header中发送给OSS。
  58. headers = {'x-oss-callback': base64_callback_body}
  59. ################
  60. # exit()
  61. # 使用StsAuth实例初始化存储空间。
  62. endpoint = tokenss['endpoint']
  63. bucket = oss2.Bucket(auth, tokenss['endpoint'], tokenss['bucket_name'])
  64. # # 上传一个字符串。
  65. # bucket.delete_object('a-3.txt')
  66. # exit()
  67. patht=tokenss['storage']+'gsafd'
  68. print(patht)
  69. print(endpoint)
  70. bucket.put_object(patht, b'asdf')
  71. # bucket.put_object('FTSLL8HM437Z38WU111A/vod4/1234.txt', b'12345646',headers)
  72. exit()
  73. res = bucket.get_object('1234.txt')
  74. print(res.read())