1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- #!/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
- '''
- host = "" # just for example
- accessid = ""
- accesskey = ""
- bucket_name = ""
- channel_name = "test-channel"
- auth = Auth(accessid, accesskey)
- bucket = Bucket(auth, host, bucket_name)
- '''
- # Endpoint以杭州为例,其它Region请按实际情况填写。
- endpoint = 'oss-cn-shenzhen.aliyuncs.com'
- # 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
- # access_key_id = 'LTAIXSozepSx81xe'
- # access_key_secret = '19BlxRiAHDPLx4mhz6vQZRuhK0eKed'
- access_key_id = 'LTAIKF7ohvwF5ugH'
- access_key_secret = 'AfBIeMdrvMN3m0EsQYuRkmNyA7uWoz'
- bucket_name = 'testrtmp'
- # role_arn是角色的资源名称。
- role_arn = 'acs:ram::1024237323330331:role/maxadmin'
- clt = client.AcsClient(access_key_id, access_key_secret, 'cn-shenzhen')
- req = AssumeRoleRequest.AssumeRoleRequest()
- # 设置返回值格式为JSON。
- req.set_accept_format('json')
- req.set_RoleArn(role_arn)
- req.set_RoleSessionName('chanjunkai')
- req.set_DurationSeconds(3600)
- policys={
- "Version": "1",
- "Statement": [
- {
- "Action": [
- "oss:PutObject",
- ],
- "Resource": ["acs:oss:*:*:testrtmp/*"],
- "Effect": "Allow",
- "Condition": {
- "IpAddress": {
- "acs:SourceIp": "120.237.157.184"
- }
- }
- }
- ]
- }
- req.set_Policy(Policy=json.dumps(policys))
- body = clt.do_action(req)
- # body = clt.do_action_with_exception(req)
- # 使用RAM账号的AccessKeyId和AccessKeySecret向STS申请临时token。
- token = json.loads(body)
- print(token)
- exit()
- # 使用临时token中的认证信息初始化StsAuth实例。
- auth = oss2.StsAuth(token['Credentials']['AccessKeyId'],
- token['Credentials']['AccessKeySecret'],
- token['Credentials']['SecurityToken'])
- print(auth)
- # 使用StsAuth实例初始化存储空间。
- bucket = oss2.Bucket(auth, endpoint, bucket_name)
- # 上传一个字符串。
- bucket.put_object('object-name.txt', b'hello world')
|