Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell AWS CLI在cron中不工作_Shell_Ubuntu_Amazon Ec2_Crontab_Aws Cli - Fatal编程技术网

Shell AWS CLI在cron中不工作

Shell AWS CLI在cron中不工作,shell,ubuntu,amazon-ec2,crontab,aws-cli,Shell,Ubuntu,Amazon Ec2,Crontab,Aws Cli,我试图在Ubuntu14.04.3 aws EC2上的aws环境的cron中使用aws cli cp命令 ec2用户称为ubuntu,住在/home/ubuntu中 我的aws配置文件位于/home/ubuntu/.aws/config中 [default] output=json region=eu-central-1 我的aws凭证文件位于/home/ubuntu/.aws/credentials中 [default] aws_access_key_id=****** aws_secr

我试图在Ubuntu14.04.3 aws EC2上的aws环境的cron中使用aws cli cp命令

ec2用户称为ubuntu,住在/home/ubuntu中

我的aws配置文件位于/home/ubuntu/.aws/config中

[default]
output=json  
region=eu-central-1
我的aws凭证文件位于/home/ubuntu/.aws/credentials中

[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
在crontab和/或shell脚本中定义HOME

AWS_DEFAULT_REGION=eu-central-1
AWS_ACCESS_KEY_ID=******
AWS_SECRET_ACCESS_KEY =******
HOME="/home/ubuntu"
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:"
将配置和凭据文件位置放入crontab

AWS_CONFIG_FILE="/home/ubuntu/.aws/config"
AWS_CREDENTIAL_FILE="/home/ubuntu/.aws/credentials"
放置crontab和/或shell脚本的路径

AWS_DEFAULT_REGION=eu-central-1
AWS_ACCESS_KEY_ID=******
AWS_SECRET_ACCESS_KEY =******
HOME="/home/ubuntu"
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:"

有人知道我会做错什么吗?

发现我忘记了test.txt/home/ubuntu/test.txt的绝对路径


我将保留这个问题,因为它列出了几个选项,可能对其他选项仍有帮助。

修复相对简单。从cron运行AWS CLI命令时,需要设置用户环境变量

export SHELL=/bin/bash
export PATH=/usr/local/sbain:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
在cron命令中使用$主页/.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二进制文件