У меня есть группа автоматического масштабирования на Amazon Web Services (AWS). Я хочу сохранить файлы журналов в экземпляре (Amazon Linux AMI) при уменьшении размера группы. Моя текущая идея - использовать инструмент s3cmd в скрипте, который запускается при перезагрузке или завершении работы экземпляра. Сценарий (sendlogtos3, в каталоге /etc/init.d) отлично работает из командной строки. Он также выполняется при перезагрузке / выключении (он записывает свое сообщение в файл / var / log / messages), но критическая часть, команда s3cmd, не выполняется. Выходные данные s3cmd не отправляются в файл сообщений при перезагрузке, но это происходит при запуске из командной строки.
Это сценарий:
#!/bin/bash
PATH=$PATH:/usr/sbin:/opt/aws/bin
start(){
touch /var/lock/subsys/0sendlogtos3
}
stop() {
S3_BUCKET=<<bucket_name>>
EC2_INSTANCE_STRING="`ec2-metadata -i`"
LOG_FILE_LOCATION=/var/log/httpd/
s3_dest=s3://$S3_BUCKET/${EC2_INSTANCE_STRING:13}/
s3cmd --config /root/.s3cfg put -r $LOG_FILE_LOCATION $s3_dest >> /var/log/messages 2>&1
wait
echo "`date`" - sendlogtos3 executed >> /var/log/messages
rm -f /var/lock/subsys/0sendlogtos3
}
case "$1" in
start)
start
;;
stop)
stop
;;
esac
########END#######
Файл связан (символически) в папках rc0.d и rc6.d как K000sendlogtos3, а в папке rc3.d как S99sendlogtos3. Права доступа к сценарию выглядят правильно (rwxr-xr-x). Я попытался явно указать расположение файла конфигурации и перейти по символическим ссылкам, но ни один из них не дал никакого эффекта.
Я не могу понять, почему не работает s3cmd. У кого-нибудь есть идеи? Или как разобраться в проблеме?
Вероятно, он не работает, потому что не может найти двоичный файл. Однако без журнала ошибок это всего лишь предположение, которое я делаю.
Попробуйте отрегулировать s3cmd
часть вашего скрипта, чтобы использовать его полный путь. Я не уверен, как вы установили s3cmd
(либо через yum, либо вручную), но вы можете узнать его полный путь, запустив which s3cmd
.