amazon-web-services - Boto3 会话 get_credentials() 未返回令牌
问题描述
我的应用程序需要使用 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 函数。当你现在尝试这样做时——可能是从你的个人电脑上——你没有。
解决问题的方法是按照上面的链接在当前环境中配置凭据。
使用凭据时,请注意并非所有凭据源都使用安全令牌。你应该为任何一种情况做好准备。
推荐阅读
- fairlearn - 多类分类的公平性指标
- java - Using maven to push an artifact to Gitlab
- python - 使用 argaprse 导入模块并在脚本中使用 argparse
- python - Python Pandas - 遍历 .xlsx 文件的文件夹,仅使用正则表达式从名称中带有 xx.xx 的 Excel 选项卡添加数据
- asp.net - GridView 控件内的图片
- visual-studio-code - Microsoft Visual Studio Code Remote-SSH 无法建立连接
- imap - 当 Message-Id 包含“%”时,Gmail 中的 IMAP SEARCH 失败
- docker - 带有 docker-compose 的“坏网关”nginx
- python - 训练模型——我们试图为整个数据集构建预测的类别有多少数据?
- python - 查找由点引用的多边形的最快方法(使用 Python、Fiona 和 Shapely)