Мне нужно автоматизировать создание учетной записи Azure Batch. Частично это добавление сертификата к учетной записи из существующего хранилища ключей Azure. Я думаю, что у меня есть все части, которые мне нужны, но я просто не могу собрать их все вместе; У меня есть KeyVault.Models.CertificateBundle
объект и Management.Batch.Models.BatchAccount
объект, но я не уверен, как получить одно в другое.
Мой код выглядит так:
// Create Batch account
var storageAccount = new Models.AutoStorageBaseProperties(storageAccountId);
mgmtClient.BatchAccount.Create(resourceGroupName, accountName,
new Models.BatchAccountCreateParameters()
{
Location = clusterZone,
AutoStorage = storageAccount
});
string certName;
Models.CertificateCreateOrUpdateParameters certParams;
// Add certificate
using (KeyVaultClient kvClient = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(GetKeyVaultToken)))
{
var cert = kvClient.GetCertificateAsync(certId).GetAwaiter().GetResult();
string thumbprint = Convert.ToBase64String(cert.X509Thumbprint);
string cer = Convert.ToBase64String(cert.Cer);
certParams = new Models.CertificateCreateOrUpdateParameters(Convert.ToBase64String(cert.Cer), cert.Id, thumbprint: thumbprint, format: Models.CertificateFormat.Cer, type: cert.ContentType);
certName = $"SHA1-{thumbprint}"; // not sure about this one
}
// failing with a complaint about the cert name
mgmtClient.Certificate.Create(resourceGroupName, accountName, certName, certParams);
Точная ошибка, которую я получаю с этим кодом:
'certificateName' does not match expected pattern '^[\\w]+-[\\w]+$'.
certName
выглядит как SHA1-XXXXXXXXXXXXXXXXXXXXXX+XXXX=
. На отпечатке есть несколько буквенно-цифровых символов. Я просто догадываюсь, что это SHA1, но в остальном имя мне подходит. Я не уверен, что мне не хватает.
Я бы также с радостью принял чье-то более простое решение этой конкретной проблемы.