版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
详细解答可以参考官方帮助文档
您可以将生成的签名URL提供给访客进行临时访问。生成签名URL时,您可以指定URL的过期时间,来限制访客的访问时长。
以下代码用于使用签名URL下载文件:
# -*- coding: utf-8 -*-import oss2# 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。auth = oss2.Auth('<yourAccessKeyId>', '<yourAccessKeySecret>')# Endpoint以杭州为例,其它Region请按实际情况填写。bucket = oss2.Bucket(auth, 'http://oss-cn-hangzhou.aliyuncs.com', '<yourBucketName>')# 设置此签名URL在60秒内有效。print(bucket.sign_url('GET', '<yourObjectName>', 60))
您可以通过STS(Security Token Service)进行临时授权访问。更多有关STS的内容请参见访问控制API参考(STS)中的简介。关于账号及授权的详细信息请参见最佳实践中的STS临时授权访问。
首先您需要安装官方的Python STS客户端:
pip install aliyun-python-sdk-sts
请使用2.0.6及以上版本。以下代码用于使用STS临时授权上传文件:
# -*- coding: utf-8 -*-from aliyunsdkcore import clientfrom aliyunsdksts.request.v20150401 import AssumeRoleRequestimport jsonimport oss2# Endpoint以杭州为例,其它Region请按实际情况填写。endpoint = 'oss-cn-hangzhou.aliyuncs.com'# 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。access_key_id = '<yourAccessKeyId>'access_key_secret = '<yourAccessKeySecret>'bucket_name = '<yourBucketName>'# role_arn是角色的资源名称。role_arn = '<yourRoleArn>'clt = client.AcsClient(access_key_id, access_key_secret, 'cn-hangzhou')req = AssumeRoleRequest.AssumeRoleRequest()# 设置返回值格式为JSON。req.set_accept_format('json')req.set_RoleArn(role_arn)req.set_RoleSessionName('session-name')body = clt.do_action(req)# 使用RAM账号的AccessKeyId和AccessKeySecret向STS申请临时token。token = json.loads(body)# 使用临时token中的认证信息初始化StsAuth实例。auth = oss2.StsAuth(token['Credentials']['AccessKeyId'],token['Credentials']['AccessKeySecret'],token['Credentials']['SecurityToken'])# 使用StsAuth实例初始化存储空间。bucket = oss2.Bucket(auth, endpoint, bucket_name)# 上传一个字符串。bucket.put_object('object-name.txt', b'hello world')
STS应用完整的示例代码请参见GitHub。