AWS S3文件预签名是一种允许用户生成未过期的URL以便临时共享私有S3对象的方法,而不需要公开访问S3或使用IAM凭证。以下是使用Python操作Boto3库在AWS S3中生成预签名URL的示例代码:
import boto3
import datetime
from botocore.exceptions import ClientError
s3_client = boto3.client('s3')
def generate_presigned_url(bucket_name, object_name, expiration=3600):
try:
response = s3_client.generate_presigned_url('get_object',
Params={'Bucket': bucket_name,
'Key': object_name},
ExpiresIn=expiration)
except ClientError as e:
logging.error(e)
return None
return response
在上述代码中,generate_presigned_url()函数接受以下参数:
调用generate_presigned_url()函数后,会生成一个签名URL,该URL可以用于一次有效的访问S3对象。这个URL已带有AWS访问凭据(即AWS access key ID和secret access key),因此可以直接使用无需授权。
在使用上述代码时,需要确保已经配置了AWS凭证(如access key ID和secret access key)。如果没有,可以使用以下命令将凭证配置到系统环境变量中:
export AWS_ACCESS_KEY_ID=your_access_key_id
export AWS_SECRET_ACCESS_KEY=your_secret_access_key