在 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);
但是 PrimaryEndpoints
或 PrivateEndpointConnections
中的 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 使用的模板,可以在模板存储库中找到
我正在尝试从 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);
但是 PrimaryEndpoints
或 PrivateEndpointConnections
中的 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 使用的模板,可以在模板存储库中找到