#azure #pulumi
Вопрос:
Я пытаюсь переключиться с «классического» Azure на родной Azure в Пулуми. Одно из моих требований-получить строку подключения и ключ доступа к моей недавно созданной учетной записи хранилища.
В классической Azure я получил эти поля с помощью
var connectionString=ClassicStorageAccount.PrimaryConnectionString;
var accessKey=ClassicStorageAccount.PrimaryAccessKey;
где ClassicStorageAccount
находится тип Pulumi.Azure.Storage.Account
Теперь, после создания учетной записи хранения в собственной Azure:
var account=new Pulumi.AzureNative.Storage.StorageAccount("myMagicAccount", new StorageAccountArgs{...});
Я изо всех сил пытаюсь получить ключ доступа.
Я могу получить строку подключения с помощью
var connectionstring=account.StorageAccount.PrimaryEndpoints.Apply(q=>q.Web);
но ни одно из свойств PrimaryEndpoints
не содержит или PrivateEndpointConnections
, похоже, не содержит мой требуемый ключ доступа.
Документы для учетной записи хранилища в родной Azure не помогли мне в этом подходе
Ответ №1:
Вы можете использовать метод listStorageAccountKeys.
using System.Threading.Tasks;
using Pulumi;
using Pulumi.AzureNative.Resources;
using Pulumi.AzureNative.Storage;
using Pulumi.AzureNative.Storage.Inputs;
class MyStack : Stack
{
public MyStack()
{
// Create an Azure Resource Group
var resourceGroup = new ResourceGroup("resourceGroup");
// Create an Azure resource (Storage Account)
var storageAccount = new StorageAccount("sa", new StorageAccountArgs
{
ResourceGroupName = resourceGroup.Name,
Sku = new SkuArgs
{
Name = SkuName.Standard_LRS
},
Kind = Kind.StorageV2
});
// Export the primary key of the Storage Account
this.PrimaryStorageKey = Output.Tuple(resourceGroup.Name, storageAccount.Name).Apply(names =>
Output.CreateSecret(GetStorageAccountPrimaryKey(names.Item1, names.Item2)));
}
[Output]
public Output<string> PrimaryStorageKey { get; set; }
private static async Task<string> GetStorageAccountPrimaryKey(string resourceGroupName, string accountName)
{
var accountKeys = await ListStorageAccountKeys.InvokeAsync(new ListStorageAccountKeysArgs
{
ResourceGroupName = resourceGroupName,
AccountName = accountName
});
return accountKeys.Keys[0].Value;
}
}
Приведенный выше код взят из шаблона, который использует Pulumi при запуске pulumi new azure-csharp
, и его можно найти в репозитории шаблонов