awscli 将缓存文件重定向到另一个目录

awscli 将缓存文件重定向到另一个目录

我正在编写一个 Bash 脚本来从 S3 下载一些对象。运行此脚本的用户帐户没有可用的主目录。意思是 - $HOME 引用的文件夹不存在。

我已使用环境变量来重定向凭据和配置文件。此方法有效,文件已在新位置创建

export AWS_CONFIG_FILE=/newfolder/.aws/config
export AWS_SHARED_CREDENTIALS_FILE=/newfolder/.aws/credentials

运行此命令时出现权限被拒绝错误。

/usr/local/bin/aws --profile thisprofile s3 ls $BUCKET$FOLDER --recursive

它正尝试写入用户主目录中的缓存文件,但无法写入,因为 $HOME 目录不存在。

$HOME/.aws/cli/cache/a5e04d49e9fc210124ee0431e237dccc5ed84794.json

我尝试将 HOME 导出到有效文件夹。这可行,但我不认为这是解决问题的最佳方法。此脚本适用于具有主目录的用户帐户。

假设我无法修复丢失的主目录,有没有办法将此缓存文件或 .aws 中的所有内容重定向到类似于我对凭证所做操作的新位置?

编辑:除了 Anon Cowards 的答案显示它明确调用 HOME 变量的位置外,还有一个打开功能请求以禁用缓存

答案1

您找到的解决方法是唯一真正的解决方案。基本上,如果 boto3 需要使用承担角色,则以下代码最终被称为:

    CACHE_DIR = os.path.expanduser(os.path.join('~', '.aws', 'boto', 'cache'))

如您所见,没有定制的希望,因为 Python 的波浪号扩展os.path.expanduser()明确使用了。从技术上讲,使用$HOME的代码有一个逃生舱口,允许指定不同的目录,但任何调用函数都不使用该选项。CACHE_DIRJSONFileCache

相关内容