Amazon web services AWS STS承担角色”;“找不到凭据”;码头集装箱

Amazon web services AWS STS承担角色”;“找不到凭据”;码头集装箱,amazon-web-services,docker,assume-role,Amazon Web Services,Docker,Assume Role,我正在尝试使用aws sts获取aws凭据。下面的代码在Pycharm中运行良好,但当我在docker容器中运行它时,我得到了“找不到凭据” 在docker容器中运行python应用程序时,boto3lib将尝试从docker容器env而不是本地PC env获取凭据。因此,您需要通过Dockerfile/docker compose yml文件检查凭据配置是否正确 此外,Boto3将按特定顺序搜索凭据。(检查)请确保您将要使用的凭据配置始终具有第一优先级。查看您计划如何在docker容器映像运行

我正在尝试使用aws sts获取aws凭据。下面的代码在Pycharm中运行良好,但当我在docker容器中运行它时,我得到了“找不到凭据”


在docker容器中运行python应用程序时,
boto3
lib将尝试从docker容器env而不是本地PC env获取凭据。因此,您需要通过Dockerfile/docker compose yml文件检查凭据配置是否正确


此外,Boto3将按特定顺序搜索凭据。(检查)请确保您将要使用的凭据配置始终具有第一优先级。

查看您计划如何在docker容器映像运行时提供AWS ID和密码?是否在图像中创建.aws?使用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}')