S3:S3预签名url在有效期内发生ExpiredToken错误

2024-04-27 16:40:44 发布

您现在位置:Python中文网/ 问答频道 /正文

这就是我如何从python脚本为S3对象生成预签名url的方法。在

s3client = boto3.client("s3")
url = s3client.generate_presigned_url("get_object", Params={"Bucket": args.bucket, "Key": dated_filename}, ExpiresIn=86400)

我给你24小时的有效期。在

当我试图使用浏览器中的url立即下载该文件时,它是有效的。但是如果我尝试下载它,比如10-12小时后(我不知道它在什么时候开始失败),它就不起作用了。在

这就是我得到的错误。在

^{pr2}$

不确定这是一个错误还是我做的方式不对。任何帮助都将不胜感激。在


Tags: 对象方法脚本clienturlgetobjects3
1条回答
网友
1楼 · 发布于 2024-04-27 16:40:44

你是以IAM的身份参选吗?预签名的URL只有在生成时使用的会话密钥时才有效。如果您使用长期访问密钥验证为IAM用户,则这不是问题。但IAM角色使用每36小时循环一次的临时访问密钥。

您知道您的会话密钥已过期,因为您将收到“提供的令牌已过期”错误,这(如上所述)是一个不同于“请求已过期”的错误消息,当预分配的URL到达其到期日期时会收到该错误消息。

另外,预先指定的网址有一个7天的硬限制-但这似乎不是你的问题。

相关问题 更多 >