Eu criei este script bash para gerar um instantâneo do meu volume do EBS
#! /usr/bin/bash
ec2-create-snapshot -d "My Snapshot" vol-XXXXXXX -O <MyKey> -W <MyOtherKey>
E funciona quando eu executo esta linha no terminal, enquanto conectado ao servidor
bash myscript.sh
Então eu criei este crontab
PATH=/bin:/home/usr/bin/bash:/usr/bin/bash
0 * * * * (bash ~/../bash/myscript.sh)
#ALSO TRIED THESE LINES
#0 * * * * ~/../bash/myscript.sh
#0 * * * * (/usr/bin/bash ~/../bash/myscript.sh)
E recebo esta mensagem no meu email
/home/ec2-user/../bash/myscript.sh: line 4: ec2-create-snapshot: command not found
Estou sem ideias sobre como fazer isso funcionar. O problema parece ser que, quando executado a partir do crontab, o script não está encontrando as ferramentas da API da AWS.
Qualquer ideia seria muito apreciada.
Para maior clareza, aqui está o que acabou funcionando. Obrigado por me apontar na direção certa.
Conecte-se ao servidor, digite echo $EC2_HOME
e pressione Enter.
Em seguida, digite echo $JAVA_HOME
e pressione Enter.
Em seguida, digite sudo find / -name "ec2-create-snapshot"
(este pode retornar vários valores)
Anote os valores que cada um deles retorna. Você vai usá-los em um minuto.
Crie este script bash:
#! /usr/bin/bash
export EC2_HOME=/your/ec2_home/path
export JAVA_HOME=/your/java_home/path
# Create an AWS Snapshot
/path/to/your/ec2-create-snapshot -d "Your Snapshot Description" vol-yourvolid -O YOURPUBLICKEY -W YOURPRIVATEKEY
Você deve ser capaz de executar isso digitando bash yourscriptname.sh
no terminal
Em seguida, abra seu cron com contab -e
e adicione esta linha:
* * * * * (bash ~/your/dir/yourscriptname.sh) #CREATE AWS Snapshot
Espero que isso ajude alguém.