Eduards Jelizarovs
10/22/2024, 3:00 PM# hooks.py
from kedro.framework.hooks import hook_impl
from azure.keyvault.secrets import SecretClient
from azure.identity import DefaultAzureCredential
class AzureSecretsHook:
@hook_impl
def after_context_created(self, context) -> None:
keyVaultName = "keyvault-0542abb" # or os.environ["KEY_VAULT_NAME"] if you would like to provide it through environment variables
KVUri = f"https://{keyVaultName}.<http://vault.azure.net|vault.azure.net>"
my_credential = DefaultAzureCredential()
client = SecretClient(vault_url=KVUri, credential=my_credential)
secrets = {
"abs_creds": "azure-blob-store",
"s3_creds": "s3-bucket-creds",
}
azure_creds = {
cred_name: client.get_secret(secret_name).value
for cred_name, secret_name in secrets.items()
}
context.config_loader["credentials"] = {
**context.config_loader["credentials"],
**azure_creds,
}
Nok Lam Chan
10/22/2024, 3:05 PM**context.config_loader["credentials"],**azure_creds, Does that keys exists in both?
Eduards Jelizarovs
10/22/2024, 3:16 PMEduards Jelizarovs
10/22/2024, 3:18 PMSajid Alam
10/22/2024, 3:30 PMcontext.config_loader
might be causing the issue?
Something like:
existing_creds = context.config_loader.get("credentials", {})
merged_creds = {**existing_creds, **azure_creds}
Eduards Jelizarovs
10/22/2024, 3:51 PMSajid Alam
10/23/2024, 9:08 AM