前言
如果想访问一个ceph里面的s3地址,但是又不想直接提供secrect key的时候,可以通过预签名的方式生成url
生成方法
下载boto3
脚本如下
cat s3.py
import boto3
from botocore.client import Config
s3_host="http://192.168.0.201:7481"
# Get the service client with sigv4 configured
s3 = boto3.client('s3', aws_access_key_id = "test",aws_secret_access_key = "test",endpoint_url = s3_host, config=Config(signature_version='s3v4'))
# Generate the URL to get 'key-name' from 'bucket-name'
# URL expires in 604800 seconds (seven days)
url = s3.generate_presigned_url(
ClientMethod='get_object',
Params={
'Bucket': 'movie',
'Key': '20200919211055.ps'
},
ExpiresIn=604800
)
print(url)
执行以后
[root@lab201 s3]# python s3.py
http://192.168.0.201:7481/movie/20200919211055.ps?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Expires=604800&X-Amz-Credential=test%2F20201103%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-SignedHeaders=host&X-Amz-Date=20201103T062621Z&X-Amz-Signature=b008a40341800b1ab7f701490e56b0597a05fe2e5c796d063c798e20564ef4a2
生成上面的地址就可以直接下载需要权限才能访问的文件了
上面的签名的是V4的,如果想生成V2的修改配置文件如下
config=Config(signature_version='s3')
再次执行:
http://192.168.0.201:7481/movie/20200919211055.ps?AWSAccessKeyId=test&Expires=1604989885&Signature=mpGtOaHn0NHLIY5PXqqD6TJrDSE%3D
生成上面的形式的url