amazon-web-services - AWS STS 在 docker 容器中承担角色“无法找到凭证”
问题描述
我正在尝试使用 aws sts 获取 aws 凭据。下面的代码在 Pycharm 中运行良好,但是当我在 docker 容器中运行它时,我得到“无法找到凭据”。
def assumed_role_session(role_arn):
try:
base_session = boto3.session.Session()._session.profile
sts_client = boto3.client('sts').assume_role(RoleArn=role_arn, RoleSessionName=base_session)
credentials = sts_client['Credentials']
return credentials
except Exception as e:
return None
assumed_role_session('arn:aws:iam::{AWS_ACCOUNT_NUMBER}:role/{AWS_ROLE_NAME}')
解决方案
在 docker 容器中运行 python 应用程序时,boto3
lib 将尝试从 docker 容器环境中获取凭据,而不是本地 PC 环境。因此,您需要通过 Dockerfile / docker-compose yml 文件检查凭据是否已正确配置。
此外,Boto3 将按特定顺序搜索凭据。(检查https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html)请确保您要使用的凭证配置始终具有第一优先级。
推荐阅读
- php - 有人可以解释一下这段代码在 laravel 中的作用吗
- reactjs - 如何使用 React-Hooks 和 Apollo Client 在 React-GraphQL 中实现搜索功能?
- sql-server - 在触发器内部,将原始表中的 n 行插入到新表中
- javascript - jquery owl-carousel owl-dots 类问题
- php - 如何在我的代码中删除这个重复的代码,同时仍然得到我需要的东西
- python - 为什么嗅探从不接收任何网络流量?斯卡皮
- c# - 使用 c# .Net 备份 MySql 数据库
- javafx - 如何在 MVC 中将事件处理程序附加到控制器 | JavaFX
- apache-kafka - 如何修复:java.lang.OutOfMemoryError: Direct buffer memory in flink kafka consumer
- android - Android Studio 3.4 在运行时不启动应用程序