I am trying to switch from "classic" Azure to Azure Native in Pulumi. One of my requirements is to retrieve the Connectionstring and AccessKey to my newly created StorageAccount.
On classic Azure I received those fields by
var connectionString=ClassicStorageAccount.PrimaryConnectionString;
var accessKey=ClassicStorageAccount.PrimaryAccessKey;
where ClassicStorageAccount
is of type Pulumi.Azure.Storage.Account
Now after creating a storage account with Azure Native:
var account=new Pulumi.AzureNative.Storage.StorageAccount("myMagicAccount", new StorageAccountArgs{...});
I am struggling to retrieve the AccessKey.
I am able to retrieve the connectionstring using
var connectionstring=account.StorageAccount.PrimaryEndpoints.Apply(q=>q.Web);
but none of the properties from PrimaryEndpoints
or PrivateEndpointConnections
seem to contain my required AccessKey.
The docs for StorageAccount on Azure Native did not help me on this approach
There's a listStorageAccountKeys method you can use.
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;
}
}
Code above is from the template Pulumi uses when you run pulumi new azure-csharp
and can be found in the templates repository