def boto3_client()

in src/client_session_helper.py [0:0]


def boto3_client(service, assumed_credentials=None, session=None, region=None, profile=None):
    """Creates a boto3 client using the provided resource, credentials or profile

    Args:
        service (str): Name of the service to create a client with
        session (str, optional): AWS Session
        region (str, optional): AWS Region
        assumed_credentials (dict, optional): Assumed credentials dict returned from assume_role
        profile (str, optional): Name of the credential profile to use

    Returns:
        :obj:`boto3.client`: Returns a boto3 session object
    """
    args = dict()
    args['service_name'] = service
    args['region_name'] = region

    if not session:
        session = boto3_session(profile)

    try:
        if assumed_credentials:
            if 'AccessKeyId' in assumed_credentials.keys():
                args['aws_access_key_id'] = assumed_credentials['AccessKeyId']
                args['aws_secret_access_key'] = assumed_credentials['SecretAccessKey']
                args['aws_session_token'] = assumed_credentials['SessionToken']

            elif 'accessKeyId' in assumed_credentials.keys():
                args['aws_access_key_id'] = assumed_credentials['accessKeyId']
                args['aws_secret_access_key'] = assumed_credentials['secretAccessKey']
                args['aws_session_token'] = assumed_credentials['sessionToken']

        client = session.client(**args)
        return client

    except BaseException as e:
        raise Exception(
            f"Failed to establish client with AWS: {str(e)}"
        ) from e