A Blob Storage-végpontok alkotják a tárfiókon belüli összes objektum alapcímét. Tárfiók létrehozásakor meg kell adnia, hogy milyen típusú végpontot szeretne használni. A Blob Storage kétféle végpontot támogat:
- A standard végpont tartalmazza az egyedi tárfiók nevét, valamint egy rögzített tartománynevet. A standard végpont formátuma a következő
https://<storage-account>.blob.core.windows.net: .
- Egy Azure DNS-zónavégpont (előzetes verzió) dinamikusan kiválaszt egy Azure DNS-zónát, és a létrehozáskor hozzárendeli azt a tárfiókhoz. Az Azure DNS-zónavégpont formátuma a következő
https://<storage-account>.z[00-99].blob.storage.azure.net: .
Amikor az alkalmazás létrehoz egy szolgáltatásügyfél-objektumot, amely a Blob Storage-adaterőforrásokhoz csatlakozik, átad egy URI-t, amely a végpontra hivatkozik a szolgáltatásügyfél konstruktorának. Az URI-sztringet manuálisan is létrehozhatja, vagy futásidőben lekérdezheti a szolgáltatásvégpontot az Azure Storage felügyeleti kódtárával.
Fontos
Amikor szolgáltatásvégpontra hivatkozik egy ügyfélalkalmazásban, javasoljuk, hogy kerülje a gyorsítótárazott IP-címek függőségét. A tárfiók IP-címe változhat, és a gyorsítótárazott IP-címekre való támaszkodás váratlan viselkedést eredményezhet.
A tárfiókvégponthoz társított CNAM-k értesítés nélkül változhatnak. Az alkalmazásnak nem szabad függőséget vállalnia a CNAME rekordok számától vagy az ezekhez a CNAME rekordokhoz társított altartományoktól.
Emellett ajánlott tiszteletben tartani a DNS-rekord élettartamát (TTL), és kerülnie kell a felülírást. A DNS TTL felülbírálása váratlan viselkedést eredményezhet.
További információ: CNAME rekordok, altartományok és IP-címek.
Az Azure Storage felügyeleti kódtára programozott hozzáférést biztosít az Azure Storage-erőforrás-szolgáltatóhoz. Az erőforrás-szolgáltató az Azure Resource Manager Azure Storage-implementációja. A felügyeleti kódtár lehetővé teszi a fejlesztők számára a tárfiókok és fiókkonfigurációk kezelését, valamint az életciklus-kezelési szabályzatok, az objektumreplikációs szabályzatok és az nem módosítható házirendek konfigurálását.
Ebben a cikkben megtudhatja, hogyan kérdezhet le egy Blob Storage-végpontot az Azure Storage felügyeleti kódtárával. Ezután ezzel a végponttal hozzon létre egy BlobServiceClient objektumot a Blob Storage-adaterőforrásokhoz való csatlakozáshoz.
A projekt beállítása
A jelen cikkben szereplő példakódok használatához kövesse az alábbi lépéseket a projekt beállításához.
Csomagok telepítése
Telepítsen csomagokat a példában használt kódtárak használatához.
Telepítse a következő csomagokat a dotnet add package használatával:
dotnet add package Azure.Identity
dotnet add package Azure.ResourceManager.Storage
dotnet add package Azure.Storage.Blobs
Nyissa meg a pom.xml fájlt a szövegszerkesztőben.
Add hozzá az azure-sdk-bom-ot a könyvtár legújabb verziójának függőségéhez. Az alábbi kódrészletben cserélje le a {bom_version_to_target} helyőrzőt a verziószámra. Az Azure-sdk-bom használatával nem kell megadnia az egyes függőségek verzióját. A BOM-ról további információt az Azure SDK BOM README-ben talál.
<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>
Ezután adja hozzá a következő függőségi elemeket a függőségek csoportjához. Az Azure-szolgáltatásokhoz való jelszó nélküli kapcsolatokhoz azure-identitásfüggőség szükséges.
<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>
Telepítse a következő csomagokat a npm install használatával:
npm install @azure/identity
npm install @azure/storage-blob
npm install @azure/arm-resources
npm install @azure/arm-storage
Telepítse a következő csomagokat a pip install használatával:
pip install azure-identity
pip install azure-storage-blob
pip install azure-mgmt-resource
pip install azure-mgmt-storage
Az alkalmazáskód beállítása
Adja hozzá a szükséges using vagy import irányelveket a kódhoz. Vegye figyelembe, hogy a példakódok feloszthatják a funkciókat a fájlok között, de ebben a szakaszban az összes irányelv együtt szerepel.
Adja hozzá a következő using irányelveket:
using Azure.Core;
using Azure.Identity;
using Azure.Storage.Blobs;
using Azure.ResourceManager;
using Azure.ResourceManager.Resources;
using Azure.ResourceManager.Storage;
Ügyféloldali kódtár adatai:
-
Azure.Identity: Microsoft Entra-jogkivonat-hitelesítést biztosít az Azure SDK-ban, és az Azure-szolgáltatásokhoz való jelszó nélküli kapcsolatokhoz szükséges.
-
Azure.ResourceManager.Storage: Támogatja az Azure Storage-erőforrások kezelését, beleértve az erőforráscsoportokat és a tárfiókokat.
-
Azure.Storage.Blobs: A Blob Storage-adaterőforrások használatához használható elsődleges osztályokat tartalmazza.
Adja hozzá a következő import irányelveket:
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.*;
Ügyféloldali kódtár adatai:
Adja hozzá a következő require utasításokat a modulok betöltéséhez:
const { DefaultAzureCredential } = require("@azure/identity");
const { BlobServiceClient } = require("@azure/storage-blob");
const { ResourceManagementClient } = require("@azure/arm-resources");
const { StorageManagementClient } = require("@azure/arm-storage");
Ügyféloldali kódtár adatai:
-
@azure/identitás: Microsoft Entra-jogkivonat-hitelesítést biztosít az Azure SDK-ban, és az Azure-szolgáltatásokhoz való jelszó nélküli kapcsolatokhoz szükséges.
-
@azure/storage-blob: A Blob Storage-adaterőforrások használatához használható elsődleges osztályokat tartalmazza.
-
@azure/arm-resources: Támogatja az Azure-erőforrások és erőforráscsoportok kezelését.
-
@azure/arm-storage: Támogatja az Azure Storage-erőforrások kezelését, beleértve az erőforráscsoportokat és a tárfiókokat.
Adja hozzá a következő import-utasításokat:
from azure.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient
from azure.mgmt.resource import ResourceManagementClient
from azure.mgmt.storage import StorageManagementClient
Ügyféloldali kódtár adatai:
-
azure-identity: Microsoft Entra-jogkivonat-hitelesítést biztosít az Azure SDK-ban, és az Azure-szolgáltatásokhoz való jelszó nélküli kapcsolatokhoz szükséges.
-
azure-storage-blob: A Blob Storage-adaterőforrások használatához használható elsődleges osztályokat tartalmazza.
-
azure-mgmt-resource: Támogatja az Azure-erőforrások és erőforráscsoportok kezelését.
-
azure-mgmt-storage: Támogatja az Azure Storage-erőforrások kezelését, beleértve az erőforráscsoportokat és a tárfiókokat.
A Storage-erőforrás-szolgáltató regisztrálása előfizetéssel
Az erőforrás-szolgáltatót regisztrálni kell az Azure-előfizetésében, mielőtt dolgozhat vele. Ezt a lépést előfizetésenként csak egyszer kell elvégezni, és csak akkor érvényes, ha a Microsoft.Storage erőforrás-szolgáltató jelenleg nincs regisztrálva az előfizetésében.
Regisztrálhatja a Storage-erőforrás-szolgáltatót, vagy ellenőrizheti a regisztrációs állapotot az Azure Portal, az Azure CLI vagy az Azure PowerShell használatával.
Az Azure felügyeleti kódtárak használatával ellenőrizheti a regisztrációs állapotot, és regisztrálhatja a Storage-erőforrás-szolgáltatót, ahogyan az alábbi példákban látható:
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")
Megjegyzés:
A regisztrációs művelet végrehajtásához a következő Azure RBAC-művelet engedélyére lesz szüksége: Microsoft.Storage/register/action. Ez az engedély szerepel a közreműködői és tulajdonosi szerepkörökben.
A Blob Storage-végpont lekérdezése
Egy adott tárfiók Blob Storage-végpontjának lekéréséhez le kell kérnünk a tárfiók tulajdonságait a Tulajdonságok lekérése művelet meghívásával. Az alábbi kódminták az adatelérési és felügyeleti kódtárakat is használják egy Blob Storage-végpont lekéréséhez egy adott tárfiókhoz:
Egy adott tárfiók tulajdonságainak lekéréséhez használja a következő metódust egy StorageAccountCollection objektumból:
Ez a metódus egy StorageAccountResource objektumot ad vissza, amely a tárfiókot jelöli.
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;
}
Egy adott tárfiók tulajdonságainak lekéréséhez használja a következő metódust egy AzureResourceManager-objektumból :
Ez a metódus egy StorageAccount felületet ad vissza, amely a tárfiók nem módosítható ügyféloldali ábrázolása.
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;
}
Egy adott tárfiók tulajdonságainak lekéréséhez használja a következő metódust egy StorageManagementClient objektumból:
Ez a metódus egy Promise<StorageAccountsGetPropertiesResponse>, a tárfiókot jelképező értéket ad vissza.
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;
}
Egy adott tárfiók tulajdonságainak lekéréséhez használja a következő metódust egy StorageManagementClient objektumból:
Ez a metódus egy StorageAccount objektumot ad vissza, amely a tárfiókot jelöli.
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
Ügyfélobjektum létrehozása a végpont használatával
Ha már rendelkezik egy tárfiók Blob Storage-végpontjával, példányosíthat egy ügyfélobjektumot az adaterőforrások használatához. A következő kódminta létrehoz egy BlobServiceClient objektumot a korábbi példában lekért végpont használatával:
// 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 ...
Következő lépések
Tekintse meg a teljes kódmintákat (GitHub):
Az ügyfélobjektumok létrehozásáról további információt az adaterőforrásokat kezelő ügyfélobjektumok létrehozása és kezelése című témakörben talál.