我有一个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”操作时,也会显示权限错误。
如何确定配置aws的权限?用sudo安装它是否可以使我无法将configure配置为ubuntu?
/ usr / bin / aws如何更改aws s3同步的执行?
从sudo v ubuntu crontabs执行的命令有何不同?
谢谢,其中一些是一般的Linux问题...
答案 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
并不总是位于根路径中。最好养成指定完整路径的习惯。