簡體   English   中英

當通過cronjob觸發時,通過CURL上傳S3失敗

[英]S3 Upload via CURL fails when triggered via cronjob

我正在使用腳本dump-to-s3.sh將數據庫轉儲放入S3存儲桶中。 當手動觸發時它完美地工作但是當我通過這個cron(作為root crontab)觸發它時它失敗並顯示以下錯誤消息:

crontab中

31 12 * * * /home/dokku/.mongodb/dump-to-s3.sh

來自CURL的錯誤

<?xml version="1.0" encoding="UTF-8"?>
<Error><Code>SignatureDoesNotMatch</Code>
   <Message>The request signature we calculated does not match the signature you provided. 
   Check your key and signing method.</Message>...

dump-to-s3.sh

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
#cd to dump-folder
cd /dump/folder
file="mydump.tar.gz"

bucket="mybucket"
resource="/${bucket}/dumps/${file}"
contentType="application/x-compressed-tar"
dateValue=`date -R`
stringToSign="PUT\n\n${contentType}\n${dateValue}\n${resource}"
s3Key="xxxxxxxxxxxxxxxx"
s3Secret="xxxxxxxxxxxxxxxx"
signature=`echo -en ${stringToSign} | openssl sha1 -hmac ${s3Secret} -binary | base64`

curl -X PUT -T "${file}" \
  -H "Host: ${bucket}.s3.amazonaws.com" \
  -H "Date: ${dateValue}" \
  -H "Content-Type: ${contentType}" \
  -H "Authorization: AWS ${s3Key}:${signature}" \
  https://${bucket}.s3.amazonaws.com/dumps/${file}

我想你可能需要手動運行bash ,例如

/bin/bash /home/dokku/.mongodb/dump-to-s3.sh

echo-en選項在常規shell中不起作用; 它可能只是一個bash擴展。

sh

$ sh
sh-3.2$ echo -en foo
-en foo
sh-3.2$

bash

$ bash
bash-3.2$ echo -en foo
foobash-3.2$

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM