Crontab 找不到 AWS 凭证 - linuxbox EC2
Crontab cannot find AWS Credentials - linuxbox EC2
我创建了一个 linux 框,它有一个非常简单的 make bucket 命令:s3 mb s3://bucket
运行从提示符中执行此命令工作正常。
我已经 运行 AWS 配置为我登录的用户和 sudo。详细信息绝对正确,因为上面不会创建存储桶。
我从 cron 收到的错误消息是 :make_bucket failed: s3://cronbucket/ Unable to locate credentials
到目前为止,我已经尝试了 crontab 的各种方法,试图告诉它凭据在哪里,其中一些是其他解决方案的合并,这可能是问题的原因。
我的 crontab 看起来像:
AWS_CONFIG_FILE="/home/ec2-user/.aws/config"
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/binx
0 0 * * * /usr/bin/env bash /opt/foo.sh &>> /tmp/foo.log
* * * * * /usr/bin/uptime > /tmp/uptime
* * * * * /bin/scripts/script.sh >> /bin/scripts/cronlogs/cronscript.log 2>&1
最初我只有两个工作,它们正在创建存储桶然后创建正常运行时间(作为健全性检查),crontab 的其余部分是其他帖子的解决方案,但似乎不起作用。
非常感谢任何建议,谢谢。
问题是 cron 没有获取您的环境。有几种方法可以解决这个问题。 运行 包含您的个人资料的 bash 脚本。或者一个不错的简单解决方案是将它包含在 crontab 中。 (将配置文件更改为您正在使用的任何内容)
0 5 * * * . $HOME/.profile; /path/to/command/to/run
看看这个thread
如果您为 ECS Fargate 任务角色附加了 IAM 角色,那么此解决方案将有效
在 entrypoint.sh
中添加以下行
declare -p | grep -Ev 'BASHOPTS|BASH_VERSINFO|EUID|PPID|SHELLOPTS|UID' > /container.env
在 crontab 或 cron 文件中添加以下行
SHELL=/bin/bash
BASH_ENV=/container.env
它对我有用。
我创建了一个 linux 框,它有一个非常简单的 make bucket 命令:s3 mb s3://bucket
运行从提示符中执行此命令工作正常。
我已经 运行 AWS 配置为我登录的用户和 sudo。详细信息绝对正确,因为上面不会创建存储桶。
我从 cron 收到的错误消息是 :make_bucket failed: s3://cronbucket/ Unable to locate credentials
到目前为止,我已经尝试了 crontab 的各种方法,试图告诉它凭据在哪里,其中一些是其他解决方案的合并,这可能是问题的原因。
我的 crontab 看起来像:
AWS_CONFIG_FILE="/home/ec2-user/.aws/config"
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/binx
0 0 * * * /usr/bin/env bash /opt/foo.sh &>> /tmp/foo.log
* * * * * /usr/bin/uptime > /tmp/uptime
* * * * * /bin/scripts/script.sh >> /bin/scripts/cronlogs/cronscript.log 2>&1
最初我只有两个工作,它们正在创建存储桶然后创建正常运行时间(作为健全性检查),crontab 的其余部分是其他帖子的解决方案,但似乎不起作用。
非常感谢任何建议,谢谢。
问题是 cron 没有获取您的环境。有几种方法可以解决这个问题。 运行 包含您的个人资料的 bash 脚本。或者一个不错的简单解决方案是将它包含在 crontab 中。 (将配置文件更改为您正在使用的任何内容)
0 5 * * * . $HOME/.profile; /path/to/command/to/run
看看这个thread
如果您为 ECS Fargate 任务角色附加了 IAM 角色,那么此解决方案将有效
在 entrypoint.sh
declare -p | grep -Ev 'BASHOPTS|BASH_VERSINFO|EUID|PPID|SHELLOPTS|UID' > /container.env
在 crontab 或 cron 文件中添加以下行
SHELL=/bin/bash
BASH_ENV=/container.env
它对我有用。