从 systemd 服务内部的 python 脚本调用时,aws cli 未配置?

从 systemd 服务内部的 python 脚本调用时,aws cli 未配置?

我正在使用带有 ubuntu 18.04 和 python 3.6 的 EC2 实例。我正在运行一个 python 脚本,该脚本使用 aws cli 调用来执行各种操作。在运行脚本之前,我使用我的访问密钥、默认区域等配置了 aws cli。

当我使用以下命令直接从命令行运行脚本时:

$ /home/ubuntu/anaconda3/bin/python /home/ubuntu/blahblah/script_name.py

它运行良好,aws cli 调用工作正常,等等。aws cli 命令的运行方式与我直接从命令行运行它们的方式相同。

但是,我需要在启动 EC2 实例时自动启动并运行该脚本。因此,我创建了一个调用此脚本的服务并通过 systemd 启动它。当我执行此操作时,服务启动,python 脚本启动,但在调用 aws cli 时中途失败。它收到一条错误消息,提示 aws cli 未配置。错误消息显示“您必须指定一个区域。您还可以通过运行“aws configure”来配置您的区域。”

我还运行了命令

$aws 配置列表

在脚本内。当直接从命令行运行时,它会显示我输入的配置详细信息。当我通过 systemd 服务运行它时,它会告诉我(通过 $journalctl -u service_name.service 看到)配置值 [access_key、secret_key、region]“未设置”。

我还尝试使用“sudo”重新配置 aws cli,然后在前面使用 sudo 调用 aws cli 命令,但遇到了同样的问题。

知道哪里出了问题吗?

答案1

我已经成功了。我按照此链接中的说明操作,https://www.slashroot.in/how-to-install-and-configure-aws-cli-on-ubuntu-16-04在‘如何为所有用户配置 awsd cli’部分中,它指示编辑 /etc/environment 文件,如下所示:

ubuntu@localhost:~$ cat /etc/environment PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games" AWS_ACCESS_KEY_ID=your_key AWS_SECRET_ACCESS_KEY=your_ultra_secret_key AWS_DEFAULT_REGION=your_favorite_region

完成此操作后,然后在所有 aws cli 命令前切换到 sudo,它们就可以正常工作,无论是从命令行调用,还是在从命令行启动的 python 脚本内部或 systemd 服务中!

相关内容