EC2_HOME未设置.从Cron运行AWS命令

 昙檀禅潺_162 发布于 2023-02-04 19:12

基本上我不知道如何让我的aws命令在crontab中运行.我知道我需要给crontab一些环境变量,以便它可以运行aws命令但是,我不知道该怎么做.有没有人能够做到这一点?

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

我在EC2亚马逊机器上,我能够在EC2用户shell中运行aws命令.我只是无法从crontab运行命令.

发送给ec2用户的邮件说"/ opt/aws/bin/ec2-start-instances:第9行:EC2_HOME:未设置EC2_HOME"

1 个回答
  • 这应该对你有用...需要设置一些带有自动cron git pull脚本的系统,然后执行crontab/anacron run-parts bash脚本,这些脚本调用了ec2 java工具.通常在amz-linux-ami(他们的RH克隆)中,创建env变量如下:

    (要坚持相关文件)

    shell登录 - > source /etc/profile将循环通过/etc/profile.d,source *.{users shell extension}在这种情况下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
    

    这是相关的一行:

    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
    

    因此脚本aws-apitools-common.sh搜索apitools和amitools,然后获取这些工具$aws_product/environment.sh.例如:source /opt/aws/apitools/ec2/environment.sh

    现在这可能就是你要找的东西(/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
    

    简而言之,您希望在crontab脚本中设置/导出的环境变量,或者您的anacron run-parted脚本将是(我个人加载到从git仓库生成的key.conf文件中,并且每次都有一个git pull fire off小时,所以键和env cat就像脚本本身一样更新.然后作业脚本来源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
    

    干杯!

    2023-02-04 19:14 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有