Получение учетной записи хранилища-ключа доступа в родном Pulumi Azure

#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 , и его можно найти в репозитории шаблонов