首页 > 解决方案 > aws cli缓存位置不正确

问题描述

我已经设置了一个 Windows 任务计划来触发一个 .bat 文件upload.bat

cd C:\working
set AWS_CONFIG_FILE=%USERPROFILE%\.aws\config
set AWS_SHARED_CREDENTIALS_FILE=%USERPROFILE%\.aws\credentials

python upload.py

这是其中的一部分upload.py,它正在调用 aws s3 cp 命令。

from subprocess import check_call

def upload_file():
    try:
        check_call("aws s3 cp inFile destination --profile myprofile")
    except subprocess.CalledProcessError as e:
        print('Error while upload!')

代码运行正常,但是执行后%HOMEDRIVE%%HOMEPATH%在工作目录下生成了一个新文件夹,即C:\working\%HOMEDRIVE%%HOMEPATH%这个文件夹里面有aws cli缓存C:\working\%HOMEDRIVE%%HOMEPATH%\.aws\cli\cache\xxxxx.json,为什么我的用户的主目录没有生成这个缓存?相反,它在工作目录中生成了一个新文件夹?

标签: amazon-web-servicesamazon-s3

解决方案


仅当您按照此处的代码homedir担任角色时awscli

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

类似的情况boto也适用于此代码

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

配置和凭证文件设置

当您使用指定 AWS Identity and Access Management (IAM) 角色的共享配置文件时,AWS CLI 会调用 AWS STS AssumeRole 操作来检索临时凭证。然后存储这些凭据(在 ~/.aws/cli/cache 中)。后续 AWS CLI 命令使用缓存的临时凭证,直到它们过期,此时,AWS CLI 会自动刷新凭证。


推荐阅读