Linux
當我連接到 AWS S3 時,身份驗證需要一個有效的日期
我想從 Amazon AWS S3 下載(GET)文件,並且我想將命令寫入 shell 腳本。
但我總是收到錯誤消息:AWS authentication requires a valid Date or x-amz-date header。我確定我的鑰匙沒問題。
這是我的 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>
有人有想法嗎?謝謝
您的腳本使用以下日期值
date=$(date +"%a, %d %b %Y %T %z")
您引用的腳本使用不同的日期格式。由於其他格式可以正常工作,因此請更改您的腳本以遵循該格式。
dateValue="`date +'%a, %d %b %Y %H:%M:%S %z'`"