共用方式為


使用 Azure 儲存體管理程式庫來查詢 Blob 儲存體端點

Blob 儲存體端點會形成儲存體帳戶內所有物件的基底位址。 當您建立儲存體帳戶時,您會指定要使用的端點類型。 Blob 儲存體支援兩種端點:

  • 標準端點包含唯一的儲存體帳戶名稱以及固定的網域名稱。 標準端點的格式為 https://<storage-account>.blob.core.windows.net
  • Azure DNS 區域端點 (預覽版) 會動態選取 Azure DNS 區域,並在建立時將其指派給儲存體帳戶。 Azure DNS 區域端點的格式為 https://<storage-account>.z[00-99].blob.storage.azure.net

當您的應用程式建立會連線至 Blob 儲存體資料資源的服務用戶端物件時,您會將參考端點的 URI 傳遞至服務用戶端建構函式。 您可以手動建構 URI 字串,或使用 Azure 儲存體管理程式庫在執行階段查詢服務端點。

重要

在用戶端應用程式中參考服務端點時,建議您避免相依於快取的 IP 位址。 儲存體帳戶的 IP 位址可能會變更,依賴快取的 IP 位址可能會導致非預期的行為。

與儲存體帳戶端點相關聯的 CNAME 可能會不經通知就變更。 您的應用程式不應相依於與這些 CNAME 記錄相關聯的 CNAME 記錄數目或子網域數目。

此外,建議您接受 DNS 記錄的存留時間 (TTL),並避免將其覆寫。 覆寫 DNS TTL 可能會導致非預期的行為。

如需詳細資訊,請參閱 CNAME 記錄、子網域和 IP 位址

Azure 儲存體管理程式庫可透過程式設計方式提供 Azure 儲存體資源提供者的存取權。 資源提供者是 Azure Resource Manager 的 Azure 儲存體實作。 管理程式庫可讓開發人員管理儲存體帳戶和帳戶設定,以及設定生命週期管理原則、物件複寫原則和不變性原則。

在本文中,您會了解如何使用 Azure 儲存體管理程式庫來查詢 Blob 儲存體端點。 然後,您會使用該端點建立 BlobServiceClient 物件,以與 Blob 儲存體資料資源連線。

設定您的專案

若要使用本文中的程式碼範例,請遵循下列步驟來設定您的專案。

安裝套件

安裝套件以處理此範例中使用的程式庫。

使用 dotnet add package 安裝下列套件:

dotnet add package Azure.Identity
dotnet add package Azure.ResourceManager.Storage
dotnet add package Azure.Storage.Blobs

設定應用程式程式碼

將必要的 usingimport 指示詞新增至程式碼。 請注意,程式碼範例可能會將功能分割到多個檔案,但本節會一起列出所有指示詞。

新增下列 using 指示詞:

using Azure.Core;
using Azure.Identity;
using Azure.Storage.Blobs;
using Azure.ResourceManager;
using Azure.ResourceManager.Resources;
using Azure.ResourceManager.Storage;

用戶端程式庫資訊:

  • Azure.Identity:可跨 Azure SDK 提供 Microsoft Entra 權杖驗證支援,必須有此資訊才能對 Azure 服務進行無密碼連線。
  • Azure.ResourceManager.Storage:支援 Azure 儲存體資源的管理,包括資源群組和儲存體帳戶。
  • Azure.Storage.Blobs:包含可用來處理 Blob 儲存體資料資源的主要類別。

使用訂用帳戶註冊儲存體資源提供者

必須先使用 Azure 訂用帳戶註冊資源提供者,才能對其進行處理。 每個訂用帳戶只需要進行一次此步驟,而且只有在目前未使用訂用帳戶註冊資源提供者 Microsoft.Storage 時才適用此步驟。

您可以使用 Azure 入口網站Azure CLIAzure PowerShell 來註冊儲存體資源提供者或檢查註冊狀態。

您也可以使用 Azure 管理程式庫來檢查註冊狀態並註冊儲存體資源提供者,如下列範例所示:

public static async Task RegisterSRPInSubscription(SubscriptionResource subscription)
{
    ResourceProviderResource resourceProvider = 
        await subscription.GetResourceProviderAsync("Microsoft.Storage");

    // Check the registration state of the resource provider and register, if needed
    if (resourceProvider.Data.RegistrationState == "NotRegistered")
        resourceProvider.Register();
}

注意

若要執行註冊作業,您需要下列 Azure RBAC 動作的權限:Microsoft.Storage/register/action。 此權限包括在參與者擁有者角色中。

查詢 Blob 儲存體端點

為了擷取指定儲存體帳戶的 Blob 儲存體端點,我們需要藉由呼叫取得屬性作業來取得儲存體帳戶屬性。 下列程式碼範例會使用資料存取和管理程式庫來取得指定儲存體帳戶的 Blob 儲存體端點:

若要取得指定儲存體帳戶的屬性,請從 StorageAccountCollection 物件使用下列方法:

這個方法會傳回代表儲存體帳戶的 StorageAccountResource 物件。

public static async Task<Uri> GetBlobServiceEndpoint(
    string storageAccountName,
    TokenCredential credential)
{
    // TODO: replace with your subscription ID and resource group name
    // You can locate your subscription ID on the Subscriptions blade
    // of the Azure portal (https://portal.azure.com)
    const string subscriptionId = "<subscription-id>";
    const string rgName = "<resource-group-name>";

    ArmClient armClient = new(credential);

    // Create a resource identifier, then get the subscription resource
    ResourceIdentifier resourceIdentifier = new($"/subscriptions/{subscriptionId}");
    SubscriptionResource subscription = armClient.GetSubscriptionResource(resourceIdentifier);

    // Get a resource group
    ResourceGroupResource resourceGroup = await subscription.GetResourceGroupAsync(rgName);

    // Get a collection of storage account resources
    StorageAccountCollection accountCollection = resourceGroup.GetStorageAccounts();

    // Get the properties for the specified storage account
    StorageAccountResource storageAccount = await accountCollection.GetAsync(storageAccountName);

    // Return the primary endpoint for the blob service
    return storageAccount.Data.PrimaryEndpoints.BlobUri;
}

使用端點建立用戶端物件

有了儲存體帳戶的 Blob 儲存體端點後,便可以具現化用戶端物件來處理資料資源。 下列程式碼範例會使用先前範例中擷取的端點來建立 BlobServiceClient 物件:

// Create an instance of DefaultAzureCredential for authorization
TokenCredential credential = new DefaultAzureCredential();

// TODO: replace with your storage account name
string storageAccountName = "<storage-account-name>";

// Call out to our function that retrieves the blob service endpoint for the given storage account
Uri blobURI = await AccountProperties.GetBlobServiceEndpoint(storageAccountName, credential);
Console.WriteLine($"URI: {blobURI}");

// Now that we know the endpoint, create the client object
BlobServiceClient blobServiceClient = new(blobURI, credential);

// Do something with the storage account or its resources ...

下一步

檢視完整的程式碼範例 (GitHub):

若要深入了解如何建立用戶端物件,請參閱建立和管理與資料資源互動的用戶端端物件 (部分機器翻譯)。