Я использую boto3 s3.transfer для загрузки нескольких файлов размером 4 ГБ + с s3. Все, кроме одного, смогли загрузить, но тот, который не удался, дал следующую ошибку:
ERROR: An error occurred (ExpiredToken) when calling the GetObject operation: The provided token has expired.
Я использую его так же, как документ по адресу http://boto3.readthedocs.org/en/latest/_modules/boto3/s3/transfer.html
s3_client = session.client('s3')
transfer = S3Transfer(s3_client)
# Download s3://bucket/key to /tmp/myfile
transfer.download_file('bucket', 'key', '/tmp/myfile')
Есть ли способ увеличить время истечения срока действия подписанного URL-адреса, используемого внутри boto3?
Если это актуально, я использую Cognito для получения учетных данных и сеанса с ними.
client = boto3.client('cognito-identity', AWS_REGION)
# credentials[] contains the IdentityId and Token I get from my server
# which I get using client.get_open_id_token_for_developer_identity
# with TokenDuration=86400
resp = client.get_credentials_for_identity(IdentityId=credentials['IdentityId'],
Logins={'cognito-identity.amazonaws.com': credentials['Token']})
# The resp contains the actual temporary AWS secret/access codes and a session token, to be
# used with the rest of the AWS APIs
secretKey = resp['Credentials']['SecretKey']
accessKey = resp['Credentials']['AccessKeyId']
sessionToken = resp['Credentials']['SessionToken']
session = Session(aws_access_key_id=accessKey,
aws_secret_access_key=secretKey,
aws_session_token=sessionToken,
region_name=AWS_REGION)
s3_client = session.client('s3')