3

Below code snippet is throwing exception Invalid constructor input for AccessSecretVersionRequest

from google.cloud import secretmanager
from google.oauth2 import service_account

client = secretmanager.SecretManagerServiceClient()

    name = client.secret_version_path(
        project=GOOGLE_CLOUD_PROJECT_ID,
        secret=SECRET_NAME,
        secret_version=SECRET_VERSION
    )

    api_key = secretmanager_client.access_secret_version(name=name).payload.data.decode("utf-8")

Ravi
  • 198
  • 1
  • 1
  • 8

2 Answers2

3

Google secret manager python SDK 2.16.0 expects first parameter should be request instead of name

def access_secret_version(self,
                          request: AccessSecretVersionRequest | dict | None = None,
                          *,
                          name: str | None = None,
                          retry: Retry | _MethodDefault | object = gapic_v1.method.DEFAULT,
                          timeout: float | object = gapic_v1.method.DEFAULT,
                          metadata: Sequence[tuple[str, str]] = ()) -> AccessSecretVersionResponse

Instead of directly passing the name in the function below

api_key = secretmanager_client.access_secret_version(name).payload.data.decode("utf-8")

use parameter_name=value like below

get_response_api_key = secretmanager_client.access_secret_version(name=name).payload.data.decode("utf-8")
Ravi
  • 198
  • 1
  • 1
  • 8
0

The you request the secret from google has changed as of version 2.0 of google-cloud-secret-manager. So you need to do it like this:

get_response_api_key = secretmanager_client.access_secret_version(request={"name": name}).payload.data.decode("utf-8")
Ghasem
  • 14,455
  • 21
  • 138
  • 171