Я создал функцию Lambda для генерации предварительно подписанного URL-адреса для пользователей мобильных приложений для доступа к документу PDF на S3 (не публичном).
s3 = boto3.client('s3')
resp = s3.list_objects(
Bucket='xxxxxxxxx',
EncodingType='url',
MaxKeys=1,
Prefix='2',
RequestPayer='requester'
)
key = resp['Contents'][0]['Key']
url = s3.generate_presigned_url(
ClientMethod='get_object',
Params={
'Bucket': 'xxxxxxxxx',
'Key': key,
'SSECustomerAlgorithm': 'AES256',
'ResponseContentType': 'application/pdf'
},
ExpiresIn=3600,
HttpMethod='GET'
)
, затем я получаю это в браузере.
<Error>
<Code>SignatureDoesNotMatch</Code>
<Message>
The request signature we calculated does not match the signature you provided. Check your key and signing method.
</Message>
Насколько я понимаю, это доступно по HTTP-запросу.
С Curl
curl -X GET https://pre-signedurlhere --output test.pdf
затем
Файл «test.pdf» можетне быть открытымВозможно, он поврежден или использует формат файла, который Preview не распознает.