簡體   English   中英

AWS CLI 在 cron 中不起作用

[英]AWS CLI does not work in cron

我正在嘗試在 Ubuntu 14.04.3 AWS EC2 上的 aws 環境的 cron 中使用 aws cli cp 命令。

ec2-user 名為 ubuntu,位於 /home/ubuntu

我在 /home/ubuntu/.aws/config 中有我的 aws 配置文件

[default]
output=json  
region=eu-central-1

我在 /home/ubuntu/.aws/credentials 中有我的 aws 憑證文件

[default]
aws_access_key_id=******
aws_secret_access_key=******

我的 crontab 看起來像這樣

* * * * * sh /home/ubuntu/test.sh

shell 腳本嘗試將測試文件復制到 S3 是單行的:

/usr/local/bin/aws s3 cp test.txt s3://<my-bucket>/test.txt >> /home/ubuntu/some-log-file.log

cron 每分鍾運行一次腳本,但不會將任何內容復制到 S3 存儲桶。

如果我在我的 shell 上手動運行腳本,它就可以工作。

我試過(沒有成功):

將正確的路徑放在 aws 前面(/usr/local/bin/aws)

也將 aws_access_key_id 和 aws_secret_access_key 放入 .aws/config 文件中。

將 aws env vars 放入 crontab 和/或 shell 腳本

AWS_DEFAULT_REGION=eu-central-1
AWS_ACCESS_KEY_ID=******
AWS_SECRET_ACCESS_KEY =******

在 crontab 和/或 shell 腳本中定義 HOME

HOME="/home/ubuntu"

將配置和憑證文件位置放到 crontab

AWS_CONFIG_FILE="/home/ubuntu/.aws/config"
AWS_CREDENTIAL_FILE="/home/ubuntu/.aws/credentials"

將 PATH 放入 crontab 和/或 shell 腳本

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:"

有誰知道我可能做錯了什么?

發現我忘記了test.txt的絕對路徑(/home/ubuntu/test.txt)

我會保留這個問題,因為它列出了幾個選項,可能仍然對其他人有幫助。

修復相對簡單。 從 cron 運行 AWS CLI 命令時,您需要設置用戶環境變量。

在 cron 命令中使用 . $HOME/.profile;

示例:

10 5 * * * . $HOME/.profile;  /var/www/rds-scripts/clonedb.sh

在 shell 腳本中設置 $SHELL 和 $PATH 變量。

export SHELL=/bin/bash
export PATH=/usr/local/sbain:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

通過這些更改,AWS CLI 能夠加載用戶憑證文件並找到 AWS CLI 二進制文件。

暫無
暫無

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

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