#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ @Copyright (C) ansjer cop Video Technology Co.,Ltd.All rights reserved. @AUTHOR: ASJRD018 @NAME: AnsjerFormal @software: PyCharm @DATE: 2018/11/8 9:23 @Version: python3.6 @MODIFY DECORD:ansjer dev @file: oss_sts.py @Contact: chanjunkai@163.com """ # -*- coding: utf-8 -*- ''' 生成sts上传授权 ''' from aliyunsdkcore import client from aliyunsdksts.request.v20150401 import AssumeRoleRequest import json import oss2 import base64 ''' http://test.dvema.com/cloudVod/getSts?uidToken=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJjaGFubmVsIjoiNCIsInVpZCI6IkZUU0xMOEhNNDM3WjM4V1UxMTFBIn0.wkrwYvIYf5qEukOSTxALSAgSqop-gNBdEvSwScOgYB8 ''' tokenss ={"storage":"VVDHCVBYDKFMJRWA111A/vod1/","SecurityToken":"CAIS9AJ1q6Ft5B2yfSjIr4vNf9GFg7Rt2LWgOkvL0TMBRMFhhKThmzz2IHFIf3NhAe0bv/kzm2lX7/YYlr1NdbNlbnLuXOdTwLF1yzyIOtOYkpRjAyHzaNj3d1KIAjvXgeV+CoeQFaELE5XAQlTAkTAJkNmeXD6+XlujHISUgJp8FLo+VRW5ajw0TbUzIRB5+vcHKVzbN/umLnyShXHLXmZlvgdghER166m03re4iHzkgUb91/UeqqnoP5GgdLMMBppkVMqv1+EELsiH2SVLuR9R7/U03u4W8jHZud3ERGdvzzWtDcDl3v5BCS1DWYFjQvdt6+b7maQ/+JaX9eXW0z9BMftYSD+lIImr25n/H/6zPdsYbcSCWROUiIjJbMKq9Vp5PjRCZF9oA4NwciYrVUZzG2uGdvH7oQzwD139G/Tf4sYfyoFoyljkx92OKmWUTq+RuSRiYc5gNBl5b0NLjDG9LfZZKlwWaT18G62SVp5jypvDLGYoZWYagAFqWQxzeu3nYVPR51pf1gvTX5hCksi9Xu+9WUMqC2YXPy6iHPjKQ+4Al/IfMwb3WZ/uY60LHuATrQUn4oYgYm7sW6NkrveNtiH7bEvZgoVMEx1VDLoL1gk83cxbyoEi436VZFPtfkX+7zZM3U1kUBNHTF+PnA9vmpc2EmpVbwNvEA==","expire":"3600","code":0,"AccessKeySecret":"njEzCG2HcBKFEzLBm1VozanwHUGRFddYPbjf1MSty5a","ip":"120.237.157.184","arn":"acs:ram::1901342792446414:role/stsoss/VVDHCVBYDKFMJRWA111A","endpoint":"oss-cn-shenzhen.aliyuncs.com","bucket_name":"cnvod1","Expiration":"2019-01-25T07:50:39Z","AccessKeyId":"STS.NHx4k1nkLowK8mz53THNMkaJy"} # 使用RAM账号的AccessKeyId和AccessKeySecret向STS申请临时token。 # 使用临时token中的认证信息初始化StsAuth实例。 auth = oss2.StsAuth(tokenss['AccessKeyId'], tokenss['AccessKeySecret'], tokenss['SecurityToken']) print(auth) ############### callback callback_dict = {} callback_dict['callbackUrl'] = 'http://www.dvema.com:3000/?token=token&filename=shijianchuo&size=1234&len=1234' # 设置回调请求消息头中Host的值, 如oss-cn-hangzhou.aliyuncs.com。 callback_dict['callbackHost'] = 'oss-cn-shenzhen.aliyuncs.com' # 设置发起回调时请求body的值。 callback_dict['callbackBody'] = 'filename=${object}&size=${size}&mimeType=${mimeType}' # 设置发起回调请求的Content-Type。 callback_dict['callbackBodyType'] = 'application/x-www-form-urlencoded' # 回调参数是Json格式,并且需要Base64编码。 callback_param = json.dumps(callback_dict).strip() base64_callback_body = oss2.utils.b64encode_as_string(callback_param) # 回调参数编码后放在Header中发送给OSS。 headers = {'x-oss-callback': base64_callback_body} ################ # exit() # 使用StsAuth实例初始化存储空间。 endpoint = tokenss['endpoint'] bucket = oss2.Bucket(auth, tokenss['endpoint'], tokenss['bucket_name']) # # 上传一个字符串。 # bucket.delete_object('a-3.txt') # exit() patht=tokenss['storage']+'asfsdafsdafdsa' print(patht) print(endpoint) print(bucket.put_object(patht, b'asdfasdfsadfdsafsdfdsaf')) # bucket.put_object('FTSLL8HM437Z38WU111A/vod4/1234.txt', b'12345646',headers) exit() res = bucket.get_object('1234.txt') print(res.read())