boto3:generate_presigned_url过早到期

时间:2016-11-04 09:55:54

标签: python amazon-s3 boto3

我正在使用以下代码生成签名网址:

client.generate_presigned_url('get_object',
    {'Bucket': client.bucket, 'Key': s3_filename}, ExpiresIn=expiry_seconds, HttpMethod='GET')

这会生成一个如下所示的URL:

https://[bucket_name].s3.amazonaws.com/[path]?AWSAccessKeyId=[access-key-id]&Signature=[signature]&Expires=1478646479&x-amz-security-token=[long_token_string]

'Expires'时间戳是未来4天(在撰写本文时),但是当点击链接时,我得到'令牌已过期'XML响应。该链接在生成后几小时内可以正常工作。

还有什么我应该看的吗?

感谢。

1 个答案:

答案 0 :(得分:1)

1478646479的到期时间等于将来的2016-11-08T23:07:59+00:00,因此生成的到期时间显示正确。 (如果生成链接的计算机上的时钟错误,则可能是错误的。)

接下来要检查的是与实体关联的权限(由AWSAccessKeyId标识)创建预签名网址。实际上,URL使用该实体的权限(例如,IAM用户,IAM角色,STS凭证)来授予对对象的时间限制访问权。如果该实体不再具有访问该对象的权限,则预签名URL将不再起作用。

您可以使用AWS Command-Line Interface (CLI)中的aws s3 presign命令对预签名网址执行测试。