Koncový bod služby Blob Storage tvoří základní adresu všech objektů v rámci účtu úložiště. Při vytváření účtu úložiště určíte, jaký typ koncového bodu chcete použít. Blob Storage podporuje dva typy koncových bodů:
-
Standardní koncový bod obsahuje jedinečný název účtu úložiště spolu s pevným názvem domény. Formát standardního koncového bodu je
https://<storage-account>.blob.core.windows.net.
-
Koncový bod zóny Azure DNS (Preview) dynamicky vybere zónu Azure DNS a přiřadí ji k účtu úložiště při jeho vytvoření. Formát koncového bodu zóny Azure DNS je
https://<storage-account>.z[00-99].blob.storage.azure.net.
Když vaše aplikace vytvoří objekt klienta služby, který se připojuje k datovým prostředkům služby Blob Storage, předáte identifikátor URI odkazující na koncový bod do konstruktoru klienta služby. Řetězec identifikátoru URI můžete sestavit ručně nebo můžete za běhu zadat dotaz na koncový bod služby pomocí knihovny pro správu služby Azure Storage.
Důležité
Při odkazování na koncový bod služby v klientské aplikaci se doporučuje vyhnout se závislosti na IP adrese uložené v mezipaměti. IP adresa účtu úložiště se může změnit a spoléhat se na IP adresu uloženou v mezipaměti může vést k neočekávanému chování.
CNAMEs, které jsou přidružené ke koncovému bodu účtu úložiště, se můžou bez předchozího upozornění změnit. Vaše aplikace by neměla záviset na počtu záznamů CNAME ani poddoménách přidružených k těmto záznamům CNAME.
Kromě toho doporučujeme dodržovat hodnotu TTL (Time to Live) záznamu DNS a vyhnout se jeho přepsání. Přepsání hodnoty TTL DNS může vést k neočekávanému chování.
Další informace najdete v tématu záznamy CNAME, subdomény a IP adresy.
Knihovna pro správu Azure Storage poskytuje programový přístup k poskytovateli prostředků Azure Storage. Poskytovatelem prostředků je implementace Azure Storage v rámci Azure Resource Manageru. Knihovna pro správu umožňuje vývojářům spravovat účty úložiště a konfiguraci účtu a také konfigurovat zásady správy životního cyklu, zásady replikace objektů a zásady neměnnosti.
V tomto článku se dozvíte, jak dotazovat koncový bod služby Blob Storage pomocí knihovny pro správu služby Azure Storage. Tento koncový bod pak použijete k vytvoření objektu BlobServiceClient pro připojení k datovým prostředkům blob Storage.
Nastavení projektu
Pokud chcete pracovat s příklady kódu v tomto článku, nastavte projekt pomocí následujícího postupu.
Instalace balíčků
Nainstalujte balíčky pro práci s knihovnami použitými v tomto příkladu.
Nainstalujte následující balíčky pomocí dotnet add package:
dotnet add package Azure.Identity
dotnet add package Azure.ResourceManager.Storage
dotnet add package Azure.Storage.Blobs
Otevřete soubor v textovém pom.xml editoru.
Přidejte azure-sdk-bom , abyste mohli využívat závislost na nejnovější verzi knihovny. V následujícím fragmentu {bom_version_to_target} kódu nahraďte zástupný symbol číslem verze. Použití azure-sdk-bom vás ušetří od nutnosti určovat verzi každé jednotlivé závislosti. Další informace o BOM najdete v dokumentaci Azure SDK BOM README.
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-sdk-bom</artifactId>
<version>{bom_version_to_target}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
Potom do skupiny závislostí přidejte následující prvky závislostí. Závislost azure-identity je potřebná pro připojení bez hesla ke službám Azure.
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-storage-blob</artifactId>
</dependency>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-identity</artifactId>
</dependency>
<dependency>
<groupId>com.azure.resourcemanager</groupId>
<artifactId>azure-resourcemanager</artifactId>
<version>2.24.0</version>
</dependency>
<dependency>
<groupId>com.azure.resourcemanager</groupId>
<artifactId>azure-resourcemanager-storage</artifactId>
<version>2.24.0</version>
</dependency>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-core-management</artifactId>
<version>1.10.2</version>
</dependency>
Nainstalujte následující balíčky pomocí npm install:
npm install @azure/identity
npm install @azure/storage-blob
npm install @azure/arm-resources
npm install @azure/arm-storage
Nainstalujte následující balíčky pomocí pip install:
pip install azure-identity
pip install azure-storage-blob
pip install azure-mgmt-resource
pip install azure-mgmt-storage
Nastavení kódu aplikace
Přidejte do kódu potřebné using direktivy nebo import direktivy. Všimněte si, že příklady kódu mohou rozdělit funkce mezi soubory, ale v této části jsou všechny direktivy uvedeny společně.
Přidejte následující using direktivy:
using Azure.Core;
using Azure.Identity;
using Azure.Storage.Blobs;
using Azure.ResourceManager;
using Azure.ResourceManager.Resources;
using Azure.ResourceManager.Storage;
Informace o klientské knihovně:
-
Azure.Identity: Poskytuje podporu ověřování tokenů Microsoft Entra napříč sadou Azure SDK a je potřeba pro připojení bez hesla ke službám Azure.
-
Azure.ResourceManager.Storage: Podporuje správu prostředků Azure Storage, včetně skupin prostředků a účtů úložiště.
-
Azure.Storage.Blobs: Obsahuje primární třídy, které můžete použít pro práci s datovými prostředky služby Blob Storage.
Přidejte následující import direktivy:
import com.azure.identity.*;
import com.azure.storage.blob.*;
import com.azure.resourcemanager.*;
import com.azure.resourcemanager.storage.models.*;
import com.azure.core.management.*;
import com.azure.core.management.profile.*;
Informace o klientské knihovně:
Přidejte následující require příkazy pro načtení modulů:
const { DefaultAzureCredential } = require("@azure/identity");
const { BlobServiceClient } = require("@azure/storage-blob");
const { ResourceManagementClient } = require("@azure/arm-resources");
const { StorageManagementClient } = require("@azure/arm-storage");
Informace o klientské knihovně:
-
@azure/identita: Poskytuje podporu ověřování tokenů Microsoft Entra napříč sadou Azure SDK a je potřeba pro připojení bez hesla ke službám Azure.
-
@azure/storage-blob: Obsahuje primární třídy, které můžete použít pro práci s datovými prostředky služby Blob Storage.
-
@azure/arm-resources: Podporuje správu prostředků a skupin prostředků Azure.
-
@azure/arm-storage: Podporuje správu prostředků Azure Storage, včetně skupin prostředků a účtů úložiště.
Přidejte následující příkazy import:
from azure.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient
from azure.mgmt.resource import ResourceManagementClient
from azure.mgmt.storage import StorageManagementClient
Informace o klientské knihovně:
-
azure-identity: Poskytuje podporu ověřování tokenů Microsoft Entra napříč sadou Azure SDK a je potřeba pro připojení bez hesla ke službám Azure.
-
azure-storage-blob: Obsahuje primární třídy, které můžete použít pro práci s datovými prostředky služby Blob Storage.
-
azure-mgmt-resource: Podporuje správu prostředků a skupin prostředků Azure.
-
azure-mgmt-storage: Podporuje správu prostředků Azure Storage, včetně skupin prostředků a účtů úložiště.
Zaregistrujte poskytovatele prostředků úložiště s předplatným
Než s ním budete moct pracovat, musí být poskytovatel prostředků zaregistrovaný ve vašem předplatném Azure. Tento krok je potřeba provést jenom jednou pro každé předplatné a platí jenom v případě, že poskytovatel prostředků Microsoft.Storage není aktuálně zaregistrovaný ve vašem předplatném.
Poskytovatele prostředků úložiště můžete zaregistrovat nebo zkontrolovat stav registrace pomocí webu Azure Portal, Azure CLI nebo Azure PowerShellu.
Knihovny pro správu Azure můžete také použít ke kontrole stavu registrace a registraci poskytovatele prostředků úložiště, jak je znázorněno v následujících příkladech:
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();
}
public void RegisterSRPInSubscription(AzureResourceManager armClient) {
// Check the registration state of the resource provider and register, if needed
if (armClient.providers().getByName("Microsoft.Storage").registrationState() == "NotRegistered")
armClient.providers().register("Microsoft.Storage");
}
async function registerSRPInSubscription(resourceMgmtClient /*: ResourceManagementClient*/) {
// Check the registration state of the resource provider and register, if needed
if (resourceMgmtClient.providers.get("Microsoft.Storage").registrationState == "NotRegistered")
resourceMgmtClient.providers.register("Microsoft.Storage");
}
def register_srp_in_subscription(self, resource_mgmt_client: ResourceManagementClient):
if (resource_mgmt_client.providers.get("Microsoft.Storage").registration_state == "NotRegistered"):
resource_mgmt_client.providers.register("Microsoft.Storage")
Poznámka:
K provedení operace registrace budete potřebovat oprávnění pro následující akci Azure RBAC: Microsoft.Storage/register/action. Toto oprávnění je součástí rolí Přispěvatel a Vlastník .
Dotaz na koncový bod služby Blob Storage
K načtení koncového bodu služby Blob Storage pro daný účet úložiště potřebujeme získat vlastnosti účtu úložiště voláním operace Získat vlastnosti . Následující ukázky kódu používají k získání koncového bodu služby Blob Storage pro zadaný účet úložiště jak přístup k datům, tak knihovny pro správu:
Chcete-li získat vlastnosti pro zadaný účet úložiště, použijte následující metodu z StorageAccountCollection objektu:
Tato metoda vrátí objekt StorageAccountResource , který představuje účet úložiště.
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;
}
K získání vlastností pro zadaný účet úložiště použijte následující metodu z objektu AzureResourceManager :
Tato metoda vrátí rozhraní StorageAccount , což je neměnná reprezentace účtu úložiště na straně klienta.
public String GetBlobServiceEndpoint(String saName, DefaultAzureCredential credential) {
String subscriptionID = "<subscription-id>";
String rgName = "<resource-group-name>";
AzureProfile profile = new AzureProfile(AzureEnvironment.AZURE);
AzureResourceManager azureResourceManager = AzureResourceManager
.configure()
.authenticate(credential, profile)
.withSubscription(subscriptionID);
StorageAccount storageAccount = azureResourceManager.storageAccounts()
.getByResourceGroup(rgName, saName);
String endpoint = storageAccount.endPoints().primary().blob();
return endpoint;
}
Pokud chcete získat vlastnosti pro zadaný účet úložiště, použijte následující metodu z objektu StorageManagementClient :
Tato metoda vrátí hodnotu Promise<StorageAccountsGetPropertiesResponse>, která představuje účet úložiště.
async function getBlobServiceEndpoint(saName, credential) {
const subscriptionId = "<subscription-id>";
const rgName = "<resource-group-name>";
const storageMgmtClient = new StorageManagementClient(
credential,
subscriptionId
);
// Get the properties for the specified storage account
const storageAccount = await storageMgmtClient.storageAccounts.getProperties(
rgName,
saName
);
// Get the primary endpoint for the blob service
const endpoint = storageAccount.primaryEndpoints.blob;
return endpoint;
}
Pokud chcete získat vlastnosti pro zadaný účet úložiště, použijte následující metodu z objektu StorageManagementClient :
Tato metoda vrátí StorageAccount objekt, který představuje účet úložiště.
def get_blob_service_endpoint(self, storage_account_name, credential: DefaultAzureCredential) -> str:
subscription_id = "<subscription-id>"
rg_name = "<resource-group-name>"
storage_mgmt_client = StorageManagementClient(
credential=credential,
subscription_id=subscription_id
)
# Get the properties for the specified storage account
storage_account = storage_mgmt_client.storage_accounts.get_properties(
resource_group_name=rg_name,
account_name=storage_account_name
)
# Get blob service endpoint
endpoint = storage_account.primary_endpoints.blob
return endpoint
Vytvoření objektu klienta pomocí koncového bodu
Jakmile budete mít koncový bod služby Blob Storage pro účet úložiště, můžete vytvořit instanci klientského objektu pro práci s datovými prostředky. Následující ukázka kódu vytvoří BlobServiceClient objekt pomocí koncového bodu, který jsme získali v předchozím příkladu:
// 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 ...
String saName = "<storage-account-name>";
DefaultAzureCredential credential = new DefaultAzureCredentialBuilder().build();
AccountProperties accountProps = new AccountProperties();
String blobEndpoint = accountProps.GetBlobServiceEndpoint(saName, credential);
System.out.printf("URI: %s", blobEndpoint);
BlobServiceClient blobServiceClient = new BlobServiceClientBuilder()
.endpoint(blobEndpoint)
.credential(credential)
.buildClient();
// Do something with the storage account or its resources ...
// For client-side applications running in the browser, use InteractiveBrowserCredential instead of DefaultAzureCredential.
// See https://aka.ms/azsdk/js/identity/examples for more details.
const saName = "<storage-account-name>";
const credential = new DefaultAzureCredential();
// Call out to our function that retrieves the blob service endpoint for a storage account
const endpoint = await getBlobServiceEndpoint(saName, credential)
console.log(endpoint);
// Now that we know the endpoint, create the client object
const blobServiceClient = new BlobServiceClient(
endpoint,
credential);
// Do something with the storage account or its resources ...
storage_account_name = "<storage-account-name>"
credential = DefaultAzureCredential()
sample = BlobEndpointSample()
# Call out to our function that retrieves the blob service endpoint for a storage account
endpoint = sample.get_blob_service_endpoint(storage_account_name, credential)
print(f"URL: {endpoint}")
# Now that we know the endpoint, create the client object
blob_service_client = BlobServiceClient(account_url=endpoint, credential=credential)
# Do something with the storage account or its resources ...
Další kroky
Prohlédněte si úplné ukázky kódu (GitHub):
Další informace o vytváření klientských objektů najdete v tématu Vytváření a správa klientských objektů, které pracují s datovými prostředky.