Source code for kafka_overwatch.aws_helpers

#  SPDX-License-Identifier: MPL-2.0
#  Copyright 2024 John Mille <john@ews-network.net>

"""
AWS Helper functions
"""

from __future__ import annotations

from typing import TYPE_CHECKING

if TYPE_CHECKING:
    from kafka_overwatch.specs.config import IamOverride

from boto3.session import Session
from compose_x_common.aws import get_assume_role_session

from kafka_overwatch.specs.config import AssumeRole


[docs] def get_session_from_iam_override(iam_override: IamOverride) -> Session: """ Returns a boto3 session from the IamOverride config. If profileName is set, return session for that profile name Elif profileName + AssumeRole, use a session of that profile name, then return AssumeRole session Elif not profileName and AssumeRole, just use AssumeRole """ if isinstance(iam_override, str): _session = Session(profile_name=iam_override) elif isinstance(iam_override, AssumeRole): kwargs: dict = {} if iam_override.ExternalId: kwargs["ExternalId"] = iam_override.ExternalId if iam_override.RoleSessionName: kwargs["RoleSessionName"] = iam_override.RoleSessionName _session = get_assume_role_session(Session(), iam_override.RoleArn, **kwargs) else: _session = Session() return _session