У меня есть Linode (Ubuntu 16.04), из которого я пытаюсь скопировать файлы в корзину AWS S3 через задание cron, вызывающее сценарий, но журнал выводит: upload failed: ../path/file.ext to s3://bucket/prefix/file.ext Unable to locate credentials
Сценарий tar
s каталог, а затем загружает этот tar в мою корзину s3
sudo
tar
работает, но aws
загрузка не выполняется (с ошибкой, указанной выше)tar
не работает (связанные с преднамеренными разрешениями), но aws
загрузка прошла успешно.aws
прямо в /usr/local/bin/aws
/usr/local/bin/aws
в PATH в crontab, а также в моем скриптеAWS_CONFIG_FILE="/home/[user]/.aws/config"
в crontab, а также в моем скриптеaws configure
как кореньPATH
включает все перечисленное в моем env.interactive PATH
, плюс еще несколько, даже дубликаты - это плохо?В моем env.interactive (1810 строк) по сравнению с моим env.cron (36 строк). Это должно быть что-то в моей среде, не так ли? Я искал свой env.interactive для любого случая aws
, но его нет, хотя этот env работает нормально. Есть какие-нибудь советы по другим конкретным предметам, которые стоит искать там?
Любые идеи и помощь приветствуются! Спасибо!
Если вы хотите запустить определенную команду с помощью user
с sudo и читаем config из его домашнего каталога, а не из вашего, тогда вы запускали его с sudo -H -u user ...
для sudo для автоматического обновления переменной HOME для вызываемого пользователя.
В этом случае это будет означать допустимое значение для AWS_CONFIG_FILE, и AWS_CREDENTIALS будет автоматически сгенерирован.
Здесь проблема заключается в том, чтобы загрузить файлы в s3, нам нужно настроить учетные данные для сценария bash. Я столкнулся с той же проблемой.
Я запустил свой код как bash, и он сработал. Но когда я добавил сценарий bash для запуска в качестве cron, точная проблема возникла с учетными данными.
Поэтому я решил это, указав учетные данные в моем сценарии bash, поскольку при запуске cron он не может принимать учетные данные из aws настроить. Поэтому добавление учетных данных не решит вашу проблему. Следующий код вы можете увидеть в качестве примера того, как я это сделал. У меня это сработало.
export AWS_CONFIG_FILE="/root/.aws/config" #change it as per user
export AWS_ACCESS_KEY_ID=XXXXXXXXXXXXXXX
export AWS_SECRET_ACCESS_KEY=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Обратитесь к этому ссылка на сайт Чтобы получить больше информации.
Я скопировал .aws
каталог из /home/[user/
к /root/
, и это, казалось, решило ее.
Есть ли какие-либо проблемы безопасности / другие проблемы, связанные с копированием файлов конфигурации в корневую папку?