Как получить доступ к предварительно подписанным URL-адресам для журналов AWS Cloudwatch, созданных с помощью boto3.client? - PullRequest
0 голосов
/ 31 мая 2018

Мне интересно, можно ли использовать предварительно подписанные URL-адреса с другими сервисами aws, кроме s3.В частности, документация boto3 http://boto3.readthedocs.io/en/latest/reference/services/logs.html#CloudWatchLogs.Client.generate_presigned_url показывает, что метод generate_presigned_url доступен для журналов cloudwatch.Я пытался использовать его следующим образом.

client = boto3.client(
    'logs', 
    aws_access_key_id="<aws_access_key_id>", 
    aws_secret_access_key="<aws_secret_access_key>", 
    region_name='us-east-1'
)
url = client.generate_presigned_url(
    ClientMethod='get_log_events',
    Params={
        'logGroupName':'<logGroupName>',
        'logStreamName':'<logStreamName>'
    },
    ExpiresIn=180
)

URL генерирует, но при попытке получить доступ к URL я получаю сообщение об ошибке в браузере:

<InvalidSignatureException>
  <Message>The request signature we calculated does not match the 
signature you provided. Check your AWS Secret Access Key and signing 
method. Consult the service documentation for details.</Message>
</InvalidSignatureException>

Для справкиURL-адрес имеет следующий формат (подпись AWS версии 4):

https://logs.us-east-1.amazonaws.com/
?logGroupName=<logGroupName>&logStreamName=<logStreamName>
?X-Amz-Algorithm=AWS4-HMAC-SHA256
&X-Amz-Credential=<aws_access_key_id>%2F20130721%2Fus-east- 
1%2Fs3%2Faws4_request
&X-Amz-Date=20180531T150510Z
&X-Amz-Expires=180
&X-Amz-SignedHeaders=content-type%3Bhost%3Bx-amz-target
&X-Amz-Signature=<signature-value>  

Как получить доступ к этому URL-адресу?Я заметил, что этот URL имеет другой формат, чем сгенерированный для s3, который работает с тем же методом (т. Е. Generate_presigned_url с get_objects).Есть ли способ заставить эту работу работать с Cloudwatch Logs?

...