[英]Boto3 session get_credentials() is not returning token
我的应用程序需要使用 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}')
Output:
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 function。当你现在尝试这样做时——可能是从你的个人计算机上——你没有。
解决问题的方法是在您当前的环境中配置凭据,点击上面的链接。
使用凭据时,请注意并非所有凭据源都使用安全令牌。 您应该为这两种情况做好准备。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.