0

我正在尝试使用 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}')
4

1 回答 1

0

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

此外,Boto3 将按特定顺序搜索凭据。(检查https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html)请确保您要使用的凭证配置始终具有第一优先级。

于 2021-06-20T11:26:14.923 回答