这就是我如何从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}$不确定这是一个错误还是我做的方式不对。任何帮助都将不胜感激。在
你是以IAM的身份参选吗?预签名的URL只有在生成时使用的会话密钥时才有效。如果您使用长期访问密钥验证为IAM用户,则这不是问题。但IAM角色使用每36小时循环一次的临时访问密钥。
您知道您的会话密钥已过期,因为您将收到“提供的令牌已过期”错误,这(如上所述)是一个不同于“请求已过期”的错误消息,当预分配的URL到达其到期日期时会收到该错误消息。
另外,预先指定的网址有一个7天的硬限制-但这似乎不是你的问题。
相关问题 更多 >
编程相关推荐