我有一个 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 configure 的权限?使用 sudo 安装它是否使我无法像 ubuntu 那样编辑配置?
/usr/bin/aws 如何更改 aws s3 同步的执行?
从 sudo v ubuntu crontab 执行的命令有何不同?
谢谢,其中一些是常见的 Linux 问题...
当您执行
sudo aws configure
时,它并没有更改您的 $HOME
目录。因此,它将您的信用信息存储在“错误”的位置(/home/ubuntu
而不是/root
),并且您很难从 ubuntu 用户那里获取它们。
您需要运行
sudo -H aws configure
,以便在配置时具有/root
主目录。然后你的 /usr/bin/aws
示例就可以工作了。
您可能还想删除 ubuntu 主目录中 root 拥有的凭据。
哦,回答你的问题:
1) AWS 没有什么特别的,都是因为你使用了
sudo
而没有使用 -H
,并且它把信用写到了错误的地方。
2)我不确定这个问题在问什么?
3) root 通常具有与普通用户不同的环境变量。例如,对于某些发行版,
/usr/local/bin
并不总是位于根路径中。最好养成指定完整路径的习惯。