# -*- coding: utf-8 -*- ''' 生成sts上传授权 ''' ''' tar -cvpzf ubuntu_backup@`date +%Y-%m+%d`.tar.gz --exclude=/proc --exclude=/tmp --exclude=/boot --exclude=/home --exclude=/lost+found --exclude=/media --exclude=/mnt --exclude=/run --exclude=/home/sda1 / --warning=no-file-change ''' from aliyunsdkcore import client from aliyunsdksts.request.v20150401 import AssumeRoleRequest import json import oss2 # Endpoint以杭州为例,其它Region请按实际情况填写。 endpoint = 'oss-cn-shenzhen.aliyuncs.com' # 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。 access_key_id = 'LTAIyMkGfEdogyL9' access_key_secret = '71uIjpsqVOmF7DAITRyRuc259jHOjO' bucket_name = 'cloudvod1' # role_arn是角色的资源名称。 role_arn = 'acs:ram::1901342792446414:role/stsoss' 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('test') req.set_DurationSeconds(3600) policys = { "Version": "1", "Statement": [ { "Action": [ "oss:PutObject", "oss:DeleteObject", ], "Resource": ["acs:oss:*:*:cloudvod1/*"], "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() # tokens = { # "Credentials":{ # 'AccessKeySecret': 'eDwALgKkfZp6eXD2jz8ckktfduneNCjEz8NgHxcZsVe', # 'AccessKeyId': 'STS.NJNUa1UjHgo5idVKqY9wBLB3e', # 'Expiration': '2018-11-15T09:06:30Z', # 'SecurityToken': 'CAISwgJ1q6Ft5B2yfSjIr4n7HtuFuLVp0K3ea0Lnr3EMNfhuo4eYhzz2IHxLf3RuAe8dvvw+nGBV7vsdlqN4S5ZDR1HCbsJxtkXiZd84J9ivgde8yJBZom/MewHKeeKSvqL7Z+H+U6mSGJOEYEzFkSle2KbzcS7YMXWuLZyOj+wADLEQRRLqVSdaI91UKwB+0pN4U0HcLvGwKBXnr3PNBU5zwGpGhHh49L60z7/siGTXh0aozfQO9cajYMq4YtJwJot6S5D3pqgUF4vZ+SJc8RVR790ShadfqwzAo8uWDnhJkWzkVLOOqps1d1A/P/VlXfcU8NqEzKUi5raIyN+tkE0WZboOCh6yHt7wnJH2f8qyLcs8eLrBPHDA78uCLJGdsXl/PS1AaV0SJIFxci4oWUF0F27ASqqu6FnGZwalW1srcmfDSBocGoABBPrYt/W5rkesL4dOVkQTaYz14WpwbEQfMBi+8/T5xLEqUP4tuwsiiBbsQhfAm3QLKzGODGJB9bCcfxpQPSnZuAyCI4uSUZiuCFUzdKX/eaiurRDLMnACYx3aEzfmDCvQ6dYbbHxIdk+0UNMWk51eWKXfWnoH+udI6rkks2AWjTM=' # } # } # 使用临时token中的认证信息初始化StsAuth实例。 auth = oss2.StsAuth(token['Credentials']['AccessKeyId'], token['Credentials']['AccessKeySecret'], token['Credentials']['SecurityToken']) print(auth) # 使用StsAuth实例初始化存储空间。 bucket = oss2.Bucket(auth, endpoint, bucket_name) # 上传一个字符串。 # res = bucket.put_object('oss_media_hls.ts', b'hello world') res = bucket.put_object('object-name.txt', b'hello world') print(res) ''' # master 172.17.0.4 slave 172.17.0.8 '''