TypeError: string indices must be integers – while trying to read secret

Question:

I try to read the value of my secret, which is in Azure key vault. To achieve this aim I try this code from here:

from azure.identity import DefaultAzureCredential
from azure.keyvault.secrets import SecretClient

# Create a SecretClient using default Azure credentials
credential = DefaultAzureCredential()
secret_client = SecretClient(vault_url, credential)
secret = secret_client.get_secret(secret_name)
print(secret.value)

but after running this I get this error:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:UserstefadmAppDataLocalProgramsPythonPython310libsite-packagesazurecorepaging.py", line 128, in __next__
    return next(self._page_iterator)
  File "C:UserstefadmAppDataLocalProgramsPythonPython310libsite-packagesazurecorepaging.py", line 76, in __next__
    self._response = self._get_next(self.continuation_token)
  File "C:UserstefadmAppDataLocalProgramsPythonPython310libsite-packagesazurekeyvaultsecrets_generatedv7_3operations_key_vault_client_operations.py", line 798, in get_next
    map_error(status_code=response.status_code, response=response, error_map=error_map)
  File "C:UserstefadmAppDataLocalProgramsPythonPython310libsite-packagesazurecoreexceptions.py", line 106, in map_error
    error = error_type(response=response)
  File "C:UserstefadmAppDataLocalProgramsPythonPython310libsite-packagesazurekeyvaultsecrets_sharedexceptions.py", line 24, in _get_exception_for_key_vault_error
    message = "({}) {}".format(body["error"]["code"], body["error"]["message"])  # type: Optional[str]
TypeError: string indices must be integers

Do you have any idea, how can I solve this problem?

Asked By: Kaja

||

Answers:

I tried in my environment and got suuceessfully retrieved secret by same code.

from  azure.keyvault.secrets  import  SecretClient
from  azure.identity  import  DefaultAzureCredential
keyVaultName = ["<vault name>"]
KVUri = f"https://{Vault name}.vault.azure.net"
credential = DefaultAzureCredential()
secret_client = SecretClient(vault_url=KVUri, credential=credential)
secret= secret_client.get_secret("secret2")#secretname
print(secret.value)

In my keyvault I have one secret kindly see my below snap:

enter image description here

python TypeError: string indices must be integers

The above error may cause whether you have passing keyvault name instead of secret name.

Now I tried your code and got an successfull output, which has retrieved the secrets from keyvault.

enter image description here

Answered By: Venkatesan