AWS CLI,Crontab和用户权限之间的交互

时间:2018-08-04 01:02:33

标签: linux ubuntu amazon-s3 cron aws-cli

我有一个ec2,应该每5分钟同步到s3,所以我在sudo下安装了awscli,并在使用aws configure时输入了我的凭据。然后,我在/ home / ubuntu /中创建了一个shell脚本,其中包含以下条目:

 aws s3 cp s3://datasets/B3 /home/ubuntu/data/B3 --recursive

在sudo crontab中:

*/5 * * * * /home/ubuntu/s3syncer.sh

但是它不同步。我之前遇到过这个问题,所以尝试过:

/home/ubuntu/.aws aws s3 cp s3://datasets/B3 /home/ubuntu/data/B3 --recursive
/usr/bin/aws aws s3 cp s3://datasets/B3 /home/ubuntu/data/B3 --recursive

似乎/ usr / bin / aws现在可以工作了... 同样,当我尝试以ubuntu用户身份进行“ aws configure”操作时,也会显示权限错误。

  1. 如何确定配置aws的权限?用sudo安装它是否可以使我无法将configure配置为ubuntu?

  2. / usr / bin / aws如何更改aws s3同步的执行?

  3. 从sudo v ubuntu crontabs执行的命令有何不同?

谢谢,其中一些是一般的Linux问题...

1 个答案:

答案 0 :(得分:1)

完成sudo aws configure时,它没有更改$HOME目录。因此,它将您的凭据存储在“错误的”位置(/home/ubuntu而不是/root),您很难从ubuntu用户那里获取它们。

您需要运行sudo -H aws configure,以便在配置时具有/root主目录。然后您的/usr/bin/aws示例将起作用。

您可能还希望删除ubuntu主目录中的root拥有的凭据。

哦,回答您的问题:

1)AWS没什么特别的,这是因为您使用了sudo而没有-H的原因,并且它把证书写错了地方。

2)我不确定这个问题在问什么?

3)根通常具有与普通用户不同的环境变量。例如,对于某些发行版,/usr/local/bin并不总是位于根路径中。最好养成指定完整路径的习惯。