У меня есть скрипт на python, который в настоящее время записывает секретные строки в Azure KeyVault.Это хорошо работает, если список небольшой, но у меня есть 4000+ KV для записи, и это занимает 50 минут каждый раз, когда запускается конвейер.
Я использую библиотеку следующим образом:
from azure.keyvault import KeyVaultClient, KeyVaultAuthentication, KeyVaultId
from azure.common.credentials import ServicePrincipalCredentials
def auth_callback(server, resource, scope):
...
client = KeyVaultClient(KeyVaultAuthentication(auth_callback))
data = sys.stdin.read()
if data:
print('Writing outputs to keyvault '+kvURL)
outputs = json.loads(data)
n = 0
for op in outputs.items():
key = baseEnv + '-' + baseFunction + '-' + op[0]
key = key.replace('_', '-')
val = str(op[1]['value'])
print('Storing: ' + key + ' = ' + val)
try:
secret_bundle = client.set_secret(kvURL, key, val)
except:
print('err in key'+key)
exit(os.EX_SOFTWARE)
n += 1
print(str(n)+' secrets written.')
else:
print('OK nothing to do.')
Поскольку сценарию просто необходимо выполнять параллельные вызовы API, мне явно не требуется многопроцессорная обработка или параллелизм потоков, а только асинхронный способ создания экземпляра объекта client.
docs мне не очень помогает, и я не знаю никакого c #, поэтому я не могу перевести любые асинхронные методы, которые я вижу.Любая идея о том, как я должен подходить к этому приветствию.Особенно в отношении создания нескольких клиентских объектов.