cloud-run-gemini-chat/Application/CloudRun/Python-Django/geminiapp/gcp_secrets.py (23 lines of code) (raw):

''' This module fetches the Gemini API Key stored in Google Secrets Manager https://cloud.google.com/python/docs/reference/secretmanager/latest ''' # Google Secrets Manager imports from google.cloud import secretmanager_v1 def init_secrets(project_id, secret_name): ''' Fetch the GEMINI_API_KEY stored in Google Secrets Manager ''' try: #--------------------------------------------------------------------- # Secrets Manager reports an error if byte strings are used #--------------------------------------------------------------------- if isinstance(project_id, bytes): project_id = project_id.decode('utf-8') if isinstance(secret_name, bytes): secret_name = secret_name.decode('utf-8') #--------------------------------------------------------------------- # Initialize the Secrets Manager Client #--------------------------------------------------------------------- client = secretmanager_v1.SecretManagerServiceClient() #--------------------------------------------------------------------- # Format the secret name # In app.py, the secret name is set by SECRET_NAME #--------------------------------------------------------------------- name = f"projects/{project_id}/secrets/{secret_name}/versions/latest" #--------------------------------------------------------------------- # Build the client request #--------------------------------------------------------------------- req = secretmanager_v1.AccessSecretVersionRequest( name=name ) #--------------------------------------------------------------------- # Fetch the secret #--------------------------------------------------------------------- response = client.access_secret_version(request=req) api_key = response.payload.data.decode('utf-8') return api_key except Exception as e: print(e) # print error message return None