apache/beam · error · NotFound

Vertex AI Feature Store (Legacy)

Error message

Vertex AI Feature Store (Legacy) %s does not exist

What it means

In __init__, the handler validates the feature store by listing featurestores via the admin client; if gRPC NotFound is raised, it is re-raised as NotFound with a message stating the (Legacy) Vertex AI Feature Store identified by feature_store_id does not exist.

Solutions

  1. Verify feature_store_id matches the actual Featurestore resource ID in your project.
  2. Check project and location parameters match where the feature store was created.
  3. Confirm credentials can access the project and the Featurestore exists (gcloud ai featurestores list).

Example fix

// before
VertexAIFeatureStoreEnrichment('my-store-typo', 'my_view', 'user_id', project='p', location='us-central1')
// after
VertexAIFeatureStoreEnrichment('my_featurestore', 'my_view', 'user_id', project='p', location='us-central1')
Defensive patterns

Strategy: try-catch

Validate before calling

from google.cloud import aiplatform
def store_exists(project, location, store_id):
    client = aiplatform.gapic.FeaturestoreServiceClient()
    name = client.featurestore_path(project, location, store_id)
    try:
        client.get_featurestore(name=name)
        return True
    except Exception:
        return False

Try / catch

try:
    handler = VertexAIFeatureStoreEnrichment(fs_id, fv, key, project=p, location=loc)
except google.api_core.exceptions.NotFound as e:
    logging.error('Feature store missing: %s', e)

Prevention

When it happens

Trigger: Constructing VertexAIFeatureStoreEnrichment with a feature_store_id that does not exist in the given project/location, or with wrong project/location/credentials so the store is not visible.

Common situations: Typo in feature_store_id, using a store in a different region than the location parameter, wrong project, or credentials lacking permission to see the store (surfacing as NotFound).

Understand the failure class

Background: 'Could not be found', 'does not exist', 'not found in database': the resource-not-found family when an ID, slug, key, or URI lookup comes back empty — this error's family across 20 libraries.

Related errors


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

Appendix: source

Thrown at sdks/python/apache_beam/transforms/enrichment_handlers/vertex_ai_feature_store.py:265

      if not self.kwargs['client_options']['api_endpoint']:
        self.kwargs['client_options']['api_endpoint'] = self.api_endpoint
      elif self.kwargs['client_options']['api_endpoint'] != self.api_endpoint:
        raise ValueError(
            'Multiple values received for api_endpoint in '
            'api_endpoint and client_options parameters.')
    else:
      self.kwargs['client_options'] = {"api_endpoint": self.api_endpoint}

    # checks if feature store exists
    try:
      _ = aiplatform.Featurestore(
          featurestore_name=self.feature_store_id,
          project=self.project,
          location=self.location,
          credentials=self.kwargs.get('credentials'),
      )
    except NotFound:
      raise NotFound(
          'Vertex AI Feature Store (Legacy) %s does not exist' %
          self.feature_store_id)

  def __enter__(self):
    """Connect with the Vertex AI Feature Store (Legacy)."""
    self.client = aiplatform.gapic.FeaturestoreOnlineServingServiceClient(
        **self.kwargs)
    self.entity_type_path = self.client.entity_type_path(
        self.project, self.location, self.feature_store_id, self.entity_type_id)

  def __call__(self, request: beam.Row, *args, **kwargs):
    """Fetches feature value for an entity-id from
    Vertex AI Feature Store (Legacy).

    Args:
      request: the input `beam.Row` to enrich.
    """
    try:

View on GitHub (pinned to 12126d8942)