Custom secret stores
Learning how to develop a custom secret store.
from abc import ABC, abstractmethod
from typing import Dict
from uuid import UUID
class SecretsStoreInterface(ABC):
"""ZenML secrets store interface.
All ZenML secrets stores must implement the methods in this interface.
"""
# ---------------------------------
# Initialization and configuration
# ---------------------------------
@abstractmethod
def _initialize(self) -> None:
"""Initialize the secrets store.
This method is called immediately after the secrets store is created.
It should be used to set up the backend (database, connection etc.).
"""
# ---------
# Secrets
# ---------
@abstractmethod
def store_secret_values(
self,
secret_id: UUID,
secret_values: Dict[str, str],
) -> None:
"""Store secret values for a new secret.
Args:
secret_id: ID of the secret.
secret_values: Values for the secret.
"""
@abstractmethod
def get_secret_values(self, secret_id: UUID) -> Dict[str, str]:
"""Get the secret values for an existing secret.
Args:
secret_id: ID of the secret.
Returns:
The secret values.
Raises:
KeyError: if no secret values for the given ID are stored in the
secrets store.
"""
@abstractmethod
def update_secret_values(
self,
secret_id: UUID,
secret_values: Dict[str, str],
) -> None:
"""Updates secret values for an existing secret.
Args:
secret_id: The ID of the secret to be updated.
secret_values: The new secret values.
Raises:
KeyError: if no secret values for the given ID are stored in the
secrets store.
"""
@abstractmethod
def delete_secret_values(self, secret_id: UUID) -> None:
"""Deletes secret values for an existing secret.
Args:
secret_id: The ID of the secret.
Raises:
KeyError: if no secret values for the given ID are stored in the
secrets store.
"""Build your own custom secrets store
Last updated
Was this helpful?