Amazon-Web-Services
awscli 將記憶體文件重定向到另一個目錄
我正在編寫一個 Bash 腳本來從 S3 下載一些對象。執行此腳本的使用者帳戶沒有可用的主目錄。含義 - $HOME 引用的文件夾不存在。
我使用環境變數來重定向憑據和配置文件。這是有效的,文件是在新位置創建的
export AWS_CONFIG_FILE=/newfolder/.aws/config export AWS_SHARED_CREDENTIALS_FILE=/newfolder/.aws/credentials
執行此命令時出現 Permission denied 錯誤。
/usr/local/bin/aws --profile thisprofile s3 ls $BUCKET$FOLDER --recursive
它正在嘗試寫入使用者主目錄中的記憶體文件,但由於 $HOME 目錄不存在而無法寫入。
$HOME/.aws/cli/cache/a5e04d49e9fc210124ee0431e237dccc5ed84794.json
我試圖將 HOME 導出到一個有效的文件夾。這可行,但我認為這不是解決此問題的最佳方法。此腳本適用於具有主目錄的使用者帳戶。
假設我不能只修復失去的主目錄,有沒有辦法將此記憶體文件或 .aws 中的所有內容重定向到類似於我對憑據所做的新位置?
編輯:除了 Anon Cowards 回答顯示它顯式呼叫 HOME 變數的位置外,還有一個禁用記憶體的開放功能請求
您找到的解決方法是唯一真正的解決方案。基本上,如果有任何boto3需要使用假設角色的場景,最終會呼叫以下程式碼:
CACHE_DIR = os.path.expanduser(os.path.join('~', '.aws', 'boto', 'cache'))
如您所見,沒有定制的希望,因為 Python
os.path.expanduser()
明確使用$HOME
. 從技術上講,使用CACHE_DIR
in的程式碼JSONFileCache
有一個轉義艙口,以允許指定不同的目錄,但任何呼叫函式都不使用該選項。