使用Python AWS SDK boto3生成签名链接(signed url)

在外文文档中,签名链接的英文名称除了signed url,有时又称作presigned url。
我们常用亚马逊S3服务分享文件,使用签名链接的方式可以有效控制访问权限,因为签名链接自身包含了访问密匙以及有效时间。

关于S3:

Amazon Simple Storage Service (Amazon S3) 是面向互联网的存储服务。您可以使用 Amazon S3 随时在 Web 上的任何位置保存和取回任何数量的数据。您可以使用简单而直观的 Web 界面 AWS 管理控制台来完成这些任务。
要充分利用 Amazon S3,您需要了解几个简单的概念。Amazon S3 将数据作为对象存储在存储桶中。一个对象由一个文件和描述该文件的任何元数据(可选)组成。要将对象存储在 Amazon S3 中,您要上传想要存储在存储桶中的文件。当您上传文件时,您可以设置该对象和任何元数据的权限。
存储桶是对象的容器。您可以有一个或多个存储桶。对于每个存储桶,您可以控制对它的访问权(谁可以创建、删除和列出存储桶中的对象)、查看它及其对象的访问日志,并选择 Amazon S3 将该存储桶及其内容存储所在的地理区域。

在使用boto3创建签名链接前,您需要已经有:
AWS账户
已创建一个存储桶
已上传待分享文件到存储桶
创建了IAM用户(过程参考《heroku常用命令示例(三)与AWS S3互动》)

python代码如下:

import boto3
from botocore.client import Config
s3 = boto3.client('s3',
aws_access_key_id = 'AKIAXX4JXBAKZCGFZTDK',#参见您的IAM账户
aws_secret_access_key = 'mykey',#参见您的IAM账户
region_name='us-east-2',#设定您服务器所在区域,需要与您的AWS账户一致
config=Config(signature_version='s3v4'))#设定加密方法

url = s3.generate_presigned_url(
    ClientMethod='get_object',
    Params={
        'Bucket': 'mypsdata',#待分享对象所在存储桶
        'Key': 'run.jpg'#待分享对象
    }
)
print(url)

运行后生成的签名地址为:

https://mypsdata.s3.amazonaws.com/run.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAXX4JXBAKZCGFZTDK%2F20210731%2Fus-east-2%2Fs3%2Faws4_request&X-Amz-Date=20210731T075408Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=631f7397b11b198677574149349525b2461a7be0ce8aa531e7d63ea244a5c75c

注意这里使用的是默认的有效时间3600秒,您也可自行设定签名链接有效时间。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

狮弟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值