def get_client()

in functions/source/CfnCrossRegion/lambda_function.py [0:0]


def get_client(service, event, context):
    role_arn = None
    if 'RoleArn' in event['ResourceProperties']:
        role_arn = event['ResourceProperties']['RoleArn']
    region = context.invoked_function_arn.split(":")[3]
    if "Region" in event["ResourceProperties"].keys():
        region = event["ResourceProperties"]["Region"]
    if event['RequestType'] == 'Update':
        old_role = None
        if 'RoleArn' in event['OldResourceProperties'].keys():
            old_role = event['OldResourceProperties']['RoleArn']
        if role_arn != old_role:
            raise Exception("Changing the role ARN for stack updates is not supported")
        old_region = context.invoked_function_arn.split(":")[3]
        if "Region" in event['OldResourceProperties'].keys():
            old_region = event['OldResourceProperties']['Region']
        if region != old_region:
            raise Exception("Changing the region for stack updates is not supported")
    if role_arn:
        sess = assume_role(Session(), role_arn, session_name="QuickStartCfnStack")
        client = sess.create_client(service, region_name=region)
    else:
        client = boto3.client(service, region_name=region)
    return client