code: def conditionally_create_profile(role_name, service_type):
    
    # make instance profile if this service_type gets an instance profile
    if service_type not in INSTANCE_PROFILE_SERVICE_TYPES:
      print_if_verbose("service type: {} not eligible for instance profile".format(service_type))
      return
  
    instance_profile = get_instance_profile(role_name)
    if not instance_profile:
      print("Create instance profile: {}".format(role_name))
      if CONTEXT.commit:
        try:
          instance_profile = CLIENTS["iam"].create_instance_profile(InstanceProfileName=role_name)
        except ClientError as error:
          fail("Exception creating instance profile named: {} {}".format(role_name, sys.exc_info(), error))
    else:
      print_if_verbose("instance profile already exists: {}".format(role_name))
    # attach instance profile to role; test 'if instance_profile' because we drop through to here in a dry run
    if instance_profile and not instance_profile_contains_role(instance_profile, role_name):
      print("Add role: {} to instance profile: {}".format(role_name, role_name))
      if CONTEXT.commit:
        try:
          CLIENTS["iam"].add_role_to_instance_profile(InstanceProfileName=role_name, RoleName=role_name)
        except ClientError as error:
          fail("Exception adding role to instance profile: {} {}".format(role_name, sys.exc_info(), error))
    else:
      print_if_verbose("instance profile already contains role: {}".format(role_name))
docs: Check that there is a 1:1 correspondence with an InstanceProfile having the same name
    as the role, and that the role is contained in it. Create InstanceProfile and attach to role if needed.