Я много занимался поиском и обнаружил, что пара людей испытывают ту же проблему с Cron и AWS CLI, но ни одно из решений не помогло мне.Я попытался перенастроить IAM, я предоставляю полную информацию о пути, я явно определил переменные $HOME
и $PATH
в сценарии.
Вот скрипт: (упрощенно)
export HOME=/root
export SHELL=/bin/bash
export PATH=/usr/local/cpanel/3rdparty/lib/path-bin:/usr/local/jdk/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:/usr/X11R6/bin:/root/bin:/usr/local/git/bin:/root/bin:/usr/local/git/bin:/root/bin
echo "-------- Batch Moving to S3 -------- "
/root/.local/bin/aws s3 cp "$TMPDIR" "s3://$BUCKET/$DATE/accounts/" --exclude '*' --include '*.tar' --recursive� &>aws.log 2>&1
Прекрасно работает в терминале.Однако в тот момент, когда он запускается в cron, все разрывы ада теряются.
aws.log
показывает это:
/root/.local/lib/python2.6/site-packages/urllib3/util/ssl_.py:369: SNIMissingWarning: An HTTPS request has been made, but the SNI (Server Name Indication) extension to TLS is not available on this platform. This may cause the server to present an incorrect TLS certificate, which can cause validation failures. You can upgrade to a newer version of Python to solve this. For more information, see https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
SNIMissingWarning
upload failed: ./package.tar to s3://BUCKET/2018-10-14/accounts/package.tar can't start new thread
По-видимому, высшее предупреждение SNIMissing появляется при работе в терминале,поэтому я не думаю, что это основная проблема при переходе на CRON.
Однако эта другая ошибка: can't start new thread
- кажется, проблема Python (и AWS CLI работает на Python).
Я вызываю свой сценарий через Crontab (теперь он запускается каждые 10 минут для отладки, в противном случае он будет выполняться раз в неделю).
*/10 * * * * /backupTmp/backup.sh >> /backupTmp/backup.log 2>&1
Я проверил разрешения и/root/.local/bin/aws
- исполняемый файл, принадлежащий root
.
Я использую Python 2.6
Есть ли что-то еще, что я мог бы пропустить?