boto3 s3 generate_presigned_url ExpiresIn не работает должным образом

Я попытался сгенерировать pre-signed URL со сроком действия 7dsys. (Говорит, что максимальная продолжительность составляет 7 дней, предварительно подписанный URL-адрес AWS S3 без срока действия дата)

# 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
)

Однако кажется, что pre-signed URL сохраняется не на 7 дней, а всего на несколько часов. После этого pre-signed URL просто возвращает формат XML.

<Error>
  <Code>ExpiredToken</Code>
    <Message>The provided token has expired.</Message>
.
.
.
</Error>

Кажется, даже время истечения каждый раз разное, иногда 5 часов, иногда 12 часов.

Я не знаю почему.


person SangminKim    schedule 03.01.2019    source источник
comment
Чтение этого в некоторой степени объясняет проблему, но я думаю, что для истечения 7-дневного срока вам необходимо сгенерировать подписанный URL-адрес с использованием разрешений пользователя IAM: medium.com/@uchimanajet7/   -  person berimbolo    schedule 13.08.2020
comment
Ответ @berimbolo должен быть правильным ответом 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)   -  person user3821178    schedule 18.02.2021