Назад | Перейти на главную страницу

Crontab + AWS: «Невозможно найти учетные данные»

У меня есть Linode (Ubuntu 16.04), из которого я пытаюсь скопировать файлы в корзину AWS S3 через задание cron, вызывающее сценарий, но журнал выводит: upload failed: ../path/file.ext to s3://bucket/prefix/file.ext Unable to locate credentials

Сценарий tars каталог, а затем загружает этот tar в мою корзину s3

Вещи, которые я пробовал

  1. Имея вызов моего сценария aws прямо в /usr/local/bin/aws
  2. Добавление /usr/local/bin/aws в PATH в crontab, а также в моем скрипте
  3. Добавление AWS_CONFIG_FILE="/home/[user]/.aws/config" в crontab, а также в моем скрипте
  4. Повторный запуск aws configure как корень
  5. Следующий этот совети сравнение cron и интерактивной среды. Мой env.cron 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/, и это, казалось, решило ее.

Есть ли какие-либо проблемы безопасности / другие проблемы, связанные с копированием файлов конфигурации в корневую папку?