從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命令,但遇到了同樣的問題。
知道有什麼問題嗎?
我有它的工作。我按照此連結中的說明進行操作,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 服務,它們都可以工作!