apache/beam · error · RuntimeError

Invalid feature store yaml file provided. Make sure the %s c

Error message

Invalid feature store yaml file provided. Make sure the %s contains the valid configuration for Feast feature store.

What it means

Raised in `__enter__` after `FeatureStore(fs_yaml_file=local_repo_path)` fails, meaning the downloaded yaml is present but its contents are not a valid Feast feature store configuration (bad registry/online store config, Feast version incompatibility, or malformed yaml). The original exception is replaced by this RuntimeError.

Source

Thrown at sdks/python/apache_beam/transforms/enrichment_handlers/feast_feature_store.py:151

    """
    self.entity_id = entity_id
    self.feature_store_yaml_path = feature_store_yaml_path
    self.feature_names = feature_names
    self.feature_service_name = feature_service_name
    self.full_feature_names = full_feature_names
    self.entity_row_fn = entity_row_fn
    self._exception_level = exception_level
    _validate_entity_key_exists(self.entity_id, self.entity_row_fn)
    _validate_feature_store_yaml_path_exists(self.feature_store_yaml_path)
    _validate_feature_names(self.feature_names, self.feature_service_name)

  def __enter__(self):
    """Connect with the Feast feature store."""
    local_repo_path = download_fs_yaml_file(self.feature_store_yaml_path)
    try:
      self.store = FeatureStore(fs_yaml_file=local_repo_path)
    except Exception:
      raise RuntimeError(
          'Invalid feature store yaml file provided. Make sure '
          'the %s contains the valid configuration for Feast feature store.' %
          self.feature_store_yaml_path)
    if self.feature_service_name:
      try:
        self.features = self.store.get_feature_service(
            self.feature_service_name)
      except Exception:
        raise RuntimeError(
            'Could not find the feature service %s for the feature '
            'store configured in %s.' %
            (self.feature_service_name, self.feature_store_yaml_path))
    else:
      self.features = self.feature_names

  def __call__(self, request: beam.Row, *args, **kwargs):
    """Fetches feature values for an entity-id from the Feast feature store.

View on GitHub (pinned to 12126d8942)

Solutions

  1. Validate the yaml locally: `FeatureStore(fs_yaml_file='feature_store.yaml')` in the same feast version as the pipeline.
  2. Pin the pipeline container's feast version to match the one used to generate the config.
  3. Check required keys (project, registry, provider, online_store) exist in the yaml.
  4. Catch the original exception during development (temporarily bypass) to see the underlying parse error.

Example fix

# before (incomplete yaml)
project: my_project
# after
project: my_project
registry: gs://my-bucket/registry.db
provider: gcp
online_store:
  type: datastore
entity_key_serialization_version: 2
Defensive patterns

Strategy: try-catch

Validate before calling

from feast import FeatureStore
FeatureStore(fs_yaml_file='feature_store.yaml')  # validate locally with same feast version

Try / catch

try:
    store = FeatureStore(fs_yaml_file=local_path)
except Exception as e:
    raise RuntimeError(f'Invalid feast yaml {yaml_path}: {e!r}') from e

Prevention

When it happens

Trigger: `__enter__` is invoked as the pipeline starts running; Feast's FeatureStore constructor raises because the yaml lacks required sections (registry, entity_key_serialization_version), uses an unsupported provider, or the installed feast version cannot parse the config format.

Common situations: Hand-edited feature_store.yaml with missing fields; Feast major version upgrade changing config schema; yaml pointing to a repo config not a feature store config.

Related errors


AI-assisted analysis of apache/beam@12126d8942 (2026-09-13). Data as JSON: /api/errors/7e8fc86a0ca35d06. Report an issue: GitHub.