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
- Validate the yaml locally: `FeatureStore(fs_yaml_file='feature_store.yaml')` in the same feast version as the pipeline.
- Pin the pipeline container's feast version to match the one used to generate the config.
- Check required keys (project, registry, provider, online_store) exist in the yaml.
- 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
- Pin feast version in the pipeline container to match config generation.
- Validate the yaml in CI with the same feast release.
- Keep required keys (project, registry, provider, online_store) in a template.
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
- FeastFeatureStore handler requires 'feast' package to be ins
- Cannot create a temporary directory for root path prefix %s.
- MatchContinuously(timestamp_cursor=True) deduplicates, so it
- %s can be set with either schema_update_options or additiona
- Both a BigQuery table and a query were specified. Please spe
AI-assisted analysis of apache/beam@12126d8942 (2026-09-13).
Data as JSON: /api/errors/7e8fc86a0ca35d06.
Report an issue: GitHub.