Amazon-Web-Services

awscli 將記憶體文件重定向到另一個目錄

  • September 15, 2019

我正在編寫一個 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'))

如您所見,沒有定制的希望,因為 Pythonos.path.expanduser()明確使用$HOME. 從技術上講,使用CACHE_DIRin的程式碼JSONFileCache有一個轉義艙口,以允許指定不同的目錄,但任何呼叫函式都不使用該選項。

引用自:https://serverfault.com/questions/982635