AWS S3에 연결할 때 인증을 위해서는 유효한 날짜가 필요합니다.

AWS S3에 연결할 때 인증을 위해서는 유효한 날짜가 필요합니다.

Amazon AWS S3에서 파일을 다운로드(GET)하고 쉘 스크립트에 명령을 작성하고 싶습니다.

하지만 항상 오류 메시지가 나타납니다.AWS 인증에는 유효한 날짜 또는 x-amz-date 헤더가 필요합니다.. 내 열쇠는 괜찮을 거라 확신해요.

이것은 내 s3.sh입니다.https://stackoverflow.com/questions/27658147/download-private-file-from-s3-using-bash:

#!/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

항상 오류 메시지가 표시됩니다.

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

누구든지 어떤 아이디어가 있습니까? 감사해요

답변1

스크립트에서 다음 날짜 값을 사용합니다.

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

참조한 스크립트는 다른 날짜 형식을 사용합니다. 다른 형식도 잘 작동하므로 해당 형식을 따르도록 스크립트를 변경하세요.

dateValue="`date +'%a, %d %b %Y %H:%M:%S %z'`" 

관련 정보