我的应用程序需要使用AWS v4身份验证,并且我能够更早地检索令牌。现在它返回None
:
session = boto3.Session()
credentials = session.get_credentials().get_frozen_credentials()
ACCESS_KEY_ID = credentials.access_key
ACCESS_SECRET_KEY = credentials.secret_key
SESSION_TOKEN = credentials.token # Not working
region = session.region_name
print(f'SESSION_TOKEN: {SESSION_TOKEN}')
输出:
SESSION_TOKEN: None
以下是我的本地配置文件的内容:
$ cat ~/.aws/credentials
[default]
aws_access_key_id = <DEFAULT_ACCESS_KEY_ID>
aws_secret_access_key = <DEFAULT_SECRET_ACCESS_KEY>
原因是什么?我如何检索令牌?
原因是您没有可用的凭据来源。
当您调用Session.get_credentials()
时,它会尝试从一系列源加载凭据,例如$HOME/.aws
中的配置文件或EC2实例角色。
当您能够检索令牌时,您正在支持其中一个方法的环境中运行——很可能是EC2实例或Lambda函数。当你现在尝试这样做的时候——可能是在你的个人电脑上——你没有。
解决此问题的方法是按照上面的链接在当前环境中配置凭据。
使用凭据时,请注意并非所有凭据源都使用安全令牌。你应该为任何一种情况做好准备。