boto3 s3 generate_presigned_url ExpiresIn 不能按预期工作

San*_*Kim 6 amazon-s3 amazon-web-services pre-signed-url

我试图pre-signed URL用 7dsys 过期时间生成。(据说最长持续时间为 7 天,AWS S3 预签名 URL 没有到期日

# It is called and retruned in AWS Lambda
boto3.client('s3').generate_presigned_url(
    'get_object',
    Params={'Bucket': bucket, 'Key': object_key},
    ExpiresIn=(60*60*24*7)  # 7days
)
Run Code Online (Sandbox Code Playgroud)

然而,似乎不是保留了pre-signed URL7 天,而是仅仅保留了几个小时。之后pre-signed URL只返回 XML 格式。

<Error>
  <Code>ExpiredToken</Code>
    <Message>The provided token has expired.</Message>
.
.
.
</Error>
Run Code Online (Sandbox Code Playgroud)

甚至每次尝试的过期时间似乎都不一样,有时是 5 小时,有时是 12 小时。

我不知道为什么。

小智 2

import boto3 
from botocore.client 
import Config  
# Get the service client with sigv4 configured 
s3 = boto3.client('s3', config=Config(signature_version='s3v4'))  
# Generate the URL to get 'key-name' from 'bucket-name' 
# URL expires in 604800 seconds (seven days) 
url = s3.generate_presigned_url(ClientMethod='get_object',Params={
                                                   'Bucket':'bucket-name',
                                                   'Key': 'key-name'
                                                    },ExpiresIn=604800)  
print(url)
Run Code Online (Sandbox Code Playgroud)