amazon web services - you - EC2_HOME no está configurado. Ejecute los comandos AWS de Cron
install aws cli linux (3)
Esto debería funcionar para usted ... Necesitaba configurar algunos sistemas con scripts automatizados de cron git pull, que luego ejecutarían los scripts crontab / anacron run-parts bash que requerían herramientas ec2 java. Normalmente en un amz-linux-ami (su clon RH) la creación de env vars es la siguiente:
(va a pegarse a los archivos relevantes)
Inicie sesión en shell -> source /etc/profile
que recorrerá /etc/profile.d y source *.{users shell extension}
Users source *.{users shell extension}
en este caso aws-apitools-common.sh
$cat aws-apitools-common.sh
export AWS_PATH=/opt/aws
export PATH=$PATH:$AWS_PATH/bin
#Prefer JDK if present (i pulled the condition to de-clutter this info)
export JAVA_HOME=/usr/lib/jvm/java
export JAVA_HOME=/usr/lib/jvm/jre
Aquí está la línea relevante:
for aws_product in $(find /opt/aws/apitools /opt/aws/amitools -maxdepth 1 -type l 2>/dev/null); do
[ -e $aws_product/environment.sh ] && source $aws_product/environment.sh; done
Entonces, el script aws-apitools-common.sh
busca apitools y amitools, y luego obtiene esas herramientas $aws_product/environment.sh
. ex: source /opt/aws/apitools/ec2/environment.sh
Ahora esto es probablemente lo que está buscando ( /opt/aws/apitools/ec2/environment.sh ):
$cat environment.sh
# Set EC2_HOME. Called from /etc/profile.d/aws-product-common
[ -z "$EC2_HOME" ] && EC2_HOME="/opt/aws/apitools/ec2"
export EC2_HOME
En resumen, los vars medioambientales que quiere establecer / exportar en su secuencia de comandos crontab y / o sus secuencias de comandos anacron run-parted serían (personalmente cargo en archivos key.conf que se generan a partir de un repositorio git, y haciendo que un git tire fuego cada hora, por lo que las claves y el env cat se actualizarán al igual que los scripts mismos. A continuación, el script del trabajo se origina en el archivo conf):
AWS_ACCESS_KEY="blah-blah-dingle-smith"
AWS_SECRET_KEY="yankee-doodle-shit-no-stank"
JAVA_HOME="/usr/lib/jvm/java"
EC2_HOME="/opt/aws/apitools/ec2"
EC2_URL="https://us-west-2.ec2.amazonaws.com/"
PATH="$PATH:/opt/aws/bin" # is dir contains a symlinks of tool binaries
¡Aclamaciones!
Básicamente, no estoy seguro de cómo hacer que mis comandos aws se ejecuten en crontab. Sé que necesito darle a crontab algunas variables ambientales para que pueda ejecutar los comandos aws, pero no sé muy bien cómo hacerlo. ¿Alguien ha podido hacer esto antes?
PATH=/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/opt/aws/bin:/home/ec2-user/bin:/opt/aws/bin
* * * * * export EC2_HOME=/opt/aws/apitools/ec2
* * * * * export JAVA_HOME=/usr/lib/jvm/jre
0 8 * * 1-5 ec2-start-instances instance_id
0 7 * * 1-5 ec2-start-instances instance_id
0 7 * * 1-5 ec2-start-instances instance_id
Estoy en una máquina Amazon EC2 y puedo ejecutar los comandos aws en el shell EC2-user. Solo estoy teniendo problemas para ejecutar los comandos desde crontab.
El correo enviado al usuario de ec2 dice "/ opt / aws / bin / ec2-start-instances: línea 9: EC2_HOME: EC2_HOME no está configurado"
Encontré esta respuesta en AWS Developer Forum que funcionó para mí. Simplemente lo copié aquí para que sea más fácil de alcanzar:
Puede source
/opt/elasticbeanstalk/support/envvars
para establecer las variables de entorno habituales (RDS_HOSTNAME
etc.). La siguiente entrada cron funciona para nosotros:
30 2 * * * root . /opt/elasticbeanstalk/support/envvars && php /var/www/bin/some_command.php
En primer lugar, debe actualizar a la nueva CLI de AWS.
Luego puede poner sus claves de acceso y claves secretas en ~ / .aws / config, y no tendrá problemas. Las nuevas herramientas admiten múltiples perfiles y no dependen de variables env.
Editar: si su problema es simplemente configurar el env para trabajos ejecutados desde cron, eche un vistazo a:
¿Dónde puedo establecer las variables de entorno que usará crontab?