in SQL-Hybrid-Cloud-Toolkit/Components/ADP/ADPControl/StorageActivity.cs [24:62]
public static string GettingJobContainerUrl([ActivityTrigger] (Guid, string, string, string) input, ILogger log)
{
Guid SubscriptionId = input.Item1;
String ResourceGroupName = input.Item2;
String StorageAccountName = input.Item3;
String ContainerName = input.Item4;
var azureServiceTokenProvider = new AzureServiceTokenProvider();
TokenCredentials tokenArmCredential = new TokenCredentials(azureServiceTokenProvider.GetAccessTokenAsync("https://management.core.windows.net/").Result);
StorageManagementClient storageMgmtClient = new StorageManagementClient(tokenArmCredential) { SubscriptionId = SubscriptionId.ToString() };
// Get the storage account keys for a given account and resource group
IList<StorageAccountKey> acctKeys = storageMgmtClient.StorageAccounts.ListKeys(ResourceGroupName, StorageAccountName).Keys;
// Get a Storage account using account creds:
StorageCredentials storageCred = new StorageCredentials(StorageAccountName, acctKeys.FirstOrDefault().Value);
CloudStorageAccount linkedStorageAccount = new CloudStorageAccount(storageCred, true);
bool createContainer = false;
// Normalize the container name for the Export action.
if (ContainerName.Contains("-Export-"))
{
ContainerName = ContainerName.Replace("Export-", "");
createContainer = true;
}
CloudBlobContainer container = linkedStorageAccount.CreateCloudBlobClient().GetContainerReference(ContainerName);
if(createContainer)
container.CreateIfNotExistsAsync().Wait();
string containerUrl = container.Uri.ToString() +
container.GetSharedAccessSignature(new SharedAccessBlobPolicy()
{
Permissions = SharedAccessBlobPermissions.Write | SharedAccessBlobPermissions.Read | SharedAccessBlobPermissions.List,
SharedAccessExpiryTime = DateTime.UtcNow.AddDays(7)
});
return containerUrl;
}