'NoRegionError Boto3

Is there a way to run boto3 module without intrinsically defining a region? I am trying to run a script to confirm tags have been added to cloudformation AWS stacks. I want it to run from whatever region would be currently selected inside of my default connection. I'm not sure if I need to write something for this. I am also curious if it needs to be written to just say the region. If that's the case is it possible to check ALL regions without it slowing down?

import boto3

cf = boto3.client('cloudformation')

def validate_stack(stack_id):
    rsp = cf.describe_stacks(StackName=stack_id)
    for stack in rsp['Stacks']:
        has_product = False
        has_service = False
        has_team = False
        has_owner = False
        for tag in stack['Tags']:
            if tag['Key'] == 'Product':
                has_product = True
            if tag['Key'] == 'Service':
                has_service = True
            if tag['Key'] == 'Team':
                has_team = True
            if tag['Key'] == 'Owner':
                has_owner = True
        last_time = stack.get('LastUpdatedTime', stack['CreationTime'])
        if (has_product == False) or (has_service == False) or (has_team == False) or (has_owner == False):
            print('last updated: {5}, has_product={1}, has_service={2}, has_team={3}, has_owner={4} {0}'.format(stack_id, has_product, has_service, has_team, has_owner, last_time))

def check_cloudformation(deployment_id):
    list_rsp = cf.list_stacks(
        StackStatusFilter=[
            'CREATE_COMPLETE',
            'UPDATE_COMPLETE'
            ]
        )
    deployment_substring = '-{0}-'.format(deployment_id)
    while True:
        for summary in list_rsp['StackSummaries']:
            if deployment_substring in summary['StackName']:
                validate_stack(summary['StackId'])
        next_token = list_rsp.get('NextToken')
        if next_token == None:
            break
        list_rsp = cf.list_stacks(
            StackStatusFilter=[
                'CREATE_COMPLETE',
                'UPDATE_COMPLETE'
                ],
            NextToken=next_token
            )



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source