Python boto3:生成预先签名的url,该url将提前过期
我正在使用以下代码生成签名URL:Python boto3:生成预先签名的url,该url将提前过期,python,amazon-s3,boto3,Python,Amazon S3,Boto3,我正在使用以下代码生成签名URL: 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]
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天(在撰写本文时),但当单击链接时,我得到了“tokenhaseexpired”XML响应。该链接在生成后的几个小时内仍然有效
还有什么我应该看的吗
谢谢 1478646479的到期时间等于
2016-11-08T23:07:59+00:00
,这是在未来,因此生成的到期时间看起来是正确的。(如果生成链接的计算机上的时钟错误,则可能是错误的。)
接下来要检查的是与创建预签名URL的实体(由AWSAccessKeyId
标识)关联的权限。实际上,URL使用该实体的权限(例如IAM用户、IAM角色、STS凭据)授予对对象的有时间限制的访问权限。如果该实体不再具有访问该对象的权限,则预签名的URL将不再起作用
您可以使用中的
aws s3 presign
命令对预签名URL执行测试。1478646479的到期时间等于2016-11-08T23:07:59+00:00
,这是将来的事,因此生成的到期时间看起来是正确的。(如果生成链接的计算机上的时钟错误,则可能是错误的。)
接下来要检查的是与创建预签名URL的实体(由AWSAccessKeyId
标识)关联的权限。实际上,URL使用该实体的权限(例如IAM用户、IAM角色、STS凭据)授予对对象的有时间限制的访问权限。如果该实体不再具有访问该对象的权限,则预签名的URL将不再起作用
您可以使用中的
aws s3 presign
命令对预签名URL执行测试。我认为这可能是正确的答案-我目前正在使用IAM角色,但不久将尝试使用标准访问密钥(从安全角度来看,这有点遗憾,但实际上没有选择)。当我有时间测试它时,会将它标记为正确。谢谢我认为这可能是正确的答案-我目前正在使用IAM角色,但不久将尝试使用标准访问密钥(从安全角度来看这有点遗憾,但实际上没有选择)。当我有时间测试它时,会将它标记为正确。谢谢