python/dataproc_templates/util/secret_manager.py (19 lines of code) (raw):

from google.cloud import secretmanager_v1 as secretmanager import google.auth import re def access_secret_version(secret_id, version_id="latest"): """ Get secret from the secret manager Args: secret_id: secret name version_id: latest(default) Returns: Secret value """ project_id: str _, project_id = google.auth.default() # Create the Secret Manager client. client = secretmanager.SecretManagerServiceClient() if validate_secret(secret_id): # Build the resource name of the secret version. name = f"projects/{project_id}/secrets/{secret_id}/versions/{version_id}" else: raise Exception("Invalid secret name. Secret name should not contain any other special symbol except - or _") # Access the secret version. response = client.access_secret_version(name=name) # Return the decoded payload. return response.payload.data.decode('UTF-8') def validate_secret(secret_id): valid_secret = True regexp = re.compile('[^0-9a-zA-Z_-]+') if regexp.search(secret_id): valid_secret = False return valid_secret