authentication requer uma data válida quando me conecto ao AWS S3

1

Eu quero baixar o arquivo (GET) do Amazon AWS S3 e quero escrever os comandos em um script de shell.

Mas sempre recebo a mensagem de erro: A autenticação da AWS exige um Data de validade ou um cabeçalho de data x-amz . Tenho certeza de que minha chave está bem.

Aqui está o meu s3.sh do link :

#!/bin/sh
s3key="xxxxxxxxxxxxxxxxxxxx"
s3skey="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
file=/aaa.pdf
bucket=test
date=$(date +"%a, %d %b %Y %T %z")
echo $date
content_type='application/x-compressed-tar'
string="GET\n\n$content_type\n$date\n/$bucket$file"
signature=$(echo -en "${string}" | openssl sha1 -hmac "${s3skey}" -binary | base64)
curl -H "Host: $bucket.s3.amazonaws.com" \
    -H "Date: $date" \
    -H "x-amz-date: $date" \
    -H "Content-Type: $content_type" \
    -H "Authorization: AWS ${s3key}:$signature" \
 https://$bucket.s3-ap-northeast-1.amazonaws.com$file

e sempre mostra a mensagem de erro:

<Code>AccessDenied</Code><Message>AWS authentication requires a valid Date or x-amz-date header</Message>

alguém tem ideias? thx

    
por yayaya 04.11.2016 / 11:59

1 resposta

1

Seu script usa o seguinte valor para a data

date=$(date +"%a, %d %b %Y %T %z")

O script que você usa usa um formato de data diferente. Como esse outro formato funciona bem, mude seu script para seguir isso.

dateValue="'date +'%a, %d %b %Y %H:%M:%S %z''" 
    
por 04.11.2016 / 12:04