def boto3_session()

in lambdas/custom_resources/CTE_CrossAccountCloudFormation/src/client_session_helper.py [0:0]


def boto3_session(region=None, credentials=None, profile=None):
    """Creates a boto3 session using optional profile

    Args:
        region (str, optional): AWS Region to create a boto3 session in
        credentials (str, optional): Name of the credential to use
        profile (str, optional): Name of the profile to use

    Returns:
        :obj:`boto3.session`: Returns a boto3 session object
    """
    args = dict()
    args['region_name'] = region
    try:
        if profile:
            args['profile_name'] = profile

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

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

        session = boto3.Session(**args)
        return session

    except BaseException as e:
        raise ex.SessionException(
            f"Failed to establish session to AWS: {str(e)}"
        )