在 Pulumi Azure Native 中获取 StorageAccount-AccessKey

Getting StorageAccount-AccessKey in Pulumi Azure Native

我正在尝试从 Pulumi 中的“经典”Azure 切换到 Azure Native。我的要求之一是将 Connectionstring 和 AccessKey 检索到我新创建的 StorageAccount。

在经典 Azure 上,我通过

收到了这些字段
var connectionString=ClassicStorageAccount.PrimaryConnectionString;
var accessKey=ClassicStorageAccount.PrimaryAccessKey;

其中 ClassicStorageAccount 的类型为 Pulumi.Azure.Storage.Account

现在在使用 Azure Native 创建存储帐户后:

var account=new Pulumi.AzureNative.Storage.StorageAccount("myMagicAccount", new StorageAccountArgs{...});

我正在努力检索 AccessKey。

我可以使用

检索连接字符串
var connectionstring=account.StorageAccount.PrimaryEndpoints.Apply(q=>q.Web);

但是 PrimaryEndpointsPrivateEndpointConnections 中的 none 属性似乎包含我需要的 AccessKey。

docs for StorageAccount on Azure Native 在这个方法上没有帮助我

您可以使用 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 new azure-csharp 时 Pulumi 使用的模板,可以在模板存储库中找到