2014-09-01 3 views
1

У меня есть этот скрипт:AWS CLI не работает с хронами

#!/bin/bash 
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games 
SHELL=/bin/bash 

# Create EBS Data snapshot 
/usr/local/bin/aws ec2 create-snapshot --volume-id "vol-XXXXX" --description "test" 

Он отлично работает, если я запустить его из командной строки, но ничего не делает с Cron. Зачем? Я использую роли IAM, важно ли это?

+0

Я бы предложил использовать aws-apitools-ec2. его можно установить на yum install -y aws-apitools-ec2 Вот справочное руководство. http://docs.aws.amazon.com/AWSEC2/latest/CommandLineReference/ec2-clt.pdf –

ответ

3

Ok, после нескольких часов я нашел решение:

Корневого пользователя бегал сценарий, но AWS не была сконфигурирована для этого пользователя. Я только нужно настроить AWS для корневого пользователя:

# aws configure 
4

Запуск aws configure как привилегированный пользователь не помог мне, так как я уже настроил учетные данные, и сценарий побежал вполне счастливо для корневого пользователя непосредственно из командной строки, но все равно не будет работать через cron. Сообщение об ошибке, которое я получал, было:

Unable to locate credentials. You can configure credentials by running "aws configure". 

Что помогло мне было добавить следующие строки в верхней части моего кронтаб файла, так что окружающая среда в месте для всех скриптов, которые бежали через хрон.

SHELL=/bin/bash 
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin 

Надеюсь, что кто-то поможет!

+0

спасибо, что помогло мне. – Jes

2

Я искал google с этой проблемой в течение нескольких часов, выполнение команд AWS из скрипта crontab должно быть проще. ничего не работало.

Мой Сценарий:

#!/bin/bash 
backup_date=$(date +%y-%m-%d) 
zip /opt/file.zip /opt/file.db 
export AWS_ACCESS_KEY_ID=*********************** 
export AWS_SECRET_ACCESS_KEY=**************************************** 
export AWS_DEFAULT_REGION=us-east-1 
/usr/bin/aws s3 cp /opt/file.zip s3://bucket/backup/$backup_date.file.zip 
/usr/bin/aws s3 cp /opt/file.zip s3://bucket/backup/file.zip 
rm -f /opt/file.zip 

вещи, которые не работают:

Определение кредитки в: AWS настроить

Положите полный путь к скрипту в кронтаб: 0 22 * ​​* * /opt/foo.sh & >> /tmp/foo.log

Игра вокруг с: которые AWS

Ответ:

Я наткнулся на этот ответ, просто поместите его в кронтаб -e:

0 0 * * * /usr/bin/env bash /opt/foo.sh &>> /tmp/foo.log 
0

Вы должны запустить aws настроить как корень до

# aws configure 

Если вы работаете кронтаб как корень, проверьте также каталог HOME ... Изменить его

HOME=/root 

в начале/и т.д./кронтаб или скопировать /root/.aws к /.

Смежные вопросы