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?
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:
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.
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?
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:
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.