我是c#新手,因为我正在开发一个Azure函数,该函数为blob存储生成SAS令牌,以及一些其他任务。
下面是我在微软找到的生成SAS令牌的代码。但是,我不知道如何正确使用它,因为我不知道应该通过参数传递的BlobClient对象是什么,应该从哪里调用它来执行任务(从Main方法还是哪里?),以及应该如何使用此函数的返回值。
我需要有人给予我更好地了解这对这个功能,以便能够正确使用它。
先谢了!
async static Task<Uri> GetUserDelegationSasBlob(BlobClient blobClient)
{
BlobServiceClient blobServiceClient =
blobClient.GetParentBlobContainerClient().GetParentBlobServiceClient();
// Get a user delegation
Azure.Storage.Blobs.Models.UserDelegationKey userDelegationKey =
await blobServiceClient.GetUserDelegationKeyAsync(DateTimeOffset.UtcNow,
DateTimeOffset.UtcNow.AddDays(7));
// Create a SAS token that's also valid for 7 days.
BlobSasBuilder sasBuilder = new BlobSasBuilder()
{
BlobContainerName = blobClient.BlobContainerName,
BlobName = blobClient.Name,
Resource = "b",
StartsOn = DateTimeOffset.UtcNow,
ExpiresOn = DateTimeOffset.UtcNow.AddDays(7)
};
// Specify read and write permissions for the SAS.
sasBuilder.SetPermissions(BlobSasPermissions.Read | BlobSasPermissions.Write);
// Add the SAS token to the blob URI.
BlobUriBuilder blobUriBuilder = new BlobUriBuilder(blobClient.Uri)
{
// Specify the user delegation key.
Sas = sasBuilder.ToSasQueryParameters(userDelegationKey,
blobServiceClient.AccountName)
};
Console.WriteLine("Blob user delegation SAS URI: {0}", blobUriBuilder);
Console.WriteLine();
return blobUriBuilder.ToUri();
}
1条答案
按热度按时间wrrgggsh1#
GetUserDelegationSasBlob
方法为Azure Blob存储中的Blob生成用户委派SAS令牌。该方法将
BlobClient
对象作为参数,它表示要为其生成SAS令牌的blob。检查您是否安装了
Azure.Storage.Blobs
NuGet包并在代码顶部添加了using语句。以下命名空间将在代码中使用以避免错误。
在Azure函数中,您需要调用如下代码
在不同的课堂上使用了相同的代码。
已调试代码,未出现错误。
该方法首先获取对
BlobServiceClient
对象的引用,该对象表示存储帐户的Blob存储终结点。它通过调用BlobServiceClient
对象上的GetUserDelegationKeyAsync
方法来请求用户委派密钥。用户委派密钥用于签署SAS令牌。该方法创建一个
BlobUriBuilder
对象并将SAS令牌添加到blob URI。该方法返回带有SAS令牌的blob的URI。您可以使用返回的URI通过SAS令牌访问blob。
使用PowerShell创建用户委派SAS。
有关User-delegation-sas.的详细信息