Azure Depolama yönetim kitaplığını kullanarak Blob Depolama uç noktasını sorgulama
Makale
Blob Depolama uç noktası, depolama hesabı içindeki tüm nesnelerin temel adresini oluşturur. Depolama hesabı oluşturduğunuzda, kullanmak istediğiniz uç nokta türünü belirtirsiniz. Blob Depolama iki tür uç noktayı destekler:
Standart uç nokta, sabit bir etki alanı adıyla birlikte benzersiz depolama hesabı adını içerir. Standart uç noktanın biçimi şeklindedir https://<storage-account>.blob.core.windows.net.
Azure DNS bölgesi uç noktası (önizleme) bir Azure DNS bölgesini dinamik olarak seçer ve oluşturulduğunda depolama hesabına atar. Azure DNS Bölgesi uç noktasının biçimi şeklindedir https://<storage-account>.z[00-99].blob.storage.azure.net.
Uygulamanız Blob Depolama veri kaynaklarına bağlanan bir hizmet istemcisi nesnesi oluşturduğunda, uç noktaya başvuran bir URI'yi hizmet istemcisi oluşturucusuna geçirirsiniz. URI dizesini el ile oluşturabilir veya Azure Depolama yönetim kitaplığını kullanarak çalışma zamanında hizmet uç noktasını sorgulayabilirsiniz.
Önemli
İstemci uygulamasında bir hizmet uç noktasına başvururken, önbelleğe alınmış bir IP adresine bağımlılık almaktan kaçınmanız önerilir. Depolama hesabı IP adresi değiştirilebilir ve önbelleğe alınmış bir IP adresine güvenmek beklenmeyen davranışa neden olabilir.
Depolama hesabı uç noktasıyla ilişkili CNAM'ler bildirimde bulunmadan değişebilir. Uygulamanız CNAME kayıtlarının sayısına veya bu CNAME kayıtlarıyla ilişkili alt etki alanlarına bağımlılık almamalıdır.
Buna ek olarak, DNS kaydının yaşam süresine (TTL) uygun olmanız ve bu kaydı geçersiz kılmaktan kaçınmanız önerilir. DNS TTL'nin geçersiz kılınması beklenmeyen davranışlara neden olabilir.
Azure Depolama yönetim kitaplığı, Azure Depolama kaynak sağlayıcısına programlı erişim sağlar. Kaynak sağlayıcısı, Azure Resource Manager'ın Azure Depolama uygulamasıdır. Yönetim kitaplığı, geliştiricilerin depolama hesaplarını ve hesap yapılandırmasını yönetmesinin yanı sıra yaşam döngüsü yönetimi ilkelerini, nesne çoğaltma ilkelerini ve değişmezlik ilkelerini yapılandırmalarını sağlar.
Bu makalede, Azure Depolama yönetim kitaplığını kullanarak Blob Depolama uç noktasını sorgulamayı öğreneceksiniz. Ardından bu uç noktayı kullanarak Blob Depolama veri kaynaklarına bağlanacak bir BlobServiceClient nesne oluşturursunuz.
Projenizi ayarlama
Bu makaledeki kod örnekleriyle çalışmak için projenizi ayarlamak için bu adımları izleyin.
Paketleri yükleme
Bu örnekte kullanılan kitaplıklarla çalışmak için paketleri yükleyin.
Kitaplığın en son sürümüne bağımlılığı almak için azure-sdk-bom ekleyin. Aşağıdaki kod parçacığında yer tutucuyu {bom_version_to_target} sürüm numarasıyla değiştirin. azure-sdk-bom kullanmak, her bir bağımlılığın sürümünü belirtmenize gerek kalmamanızı sağlar. Ürün reçetesi hakkında daha fazla bilgi edinmek için bkz . Azure SDK ÜRÜN REÇETESI BENİOKU.
Ardından aşağıdaki bağımlılık öğelerini bağımlılık grubuna ekleyin. Azure hizmetlerine parolasız bağlantılar için azure-identity bağımlılığı gereklidir.
Koda gerekli using veya import yönergeleri ekleyin. Kod örneklerinin işlevleri dosyalar arasında bölebileceğini, ancak bu bölümde tüm yönergelerin birlikte listelendiğini unutmayın.
using Azure.Core;
using Azure.Identity;
using Azure.Storage.Blobs;
using Azure.ResourceManager;
using Azure.ResourceManager.Resources;
using Azure.ResourceManager.Storage;
İstemci kitaplığı bilgileri:
Azure.Identity: Azure SDK genelinde Microsoft Entra belirteci kimlik doğrulaması desteği sağlar ve Azure hizmetlerine parolasız bağlantılar için gereklidir.
Azure.ResourceManager. Depolama: Kaynak grupları ve depolama hesapları dahil olmak üzere Azure Depolama kaynaklarının yönetimini destekler.
Azure. Depolama. Bloblar: Blob Depolama veri kaynaklarıyla çalışmak için kullanabileceğiniz birincil sınıfları içerir.
com.azure.identity: Azure SDK'sı genelinde Microsoft Entra belirteci kimlik doğrulaması desteği sağlar ve Azure hizmetlerine parolasız bağlantılar için gereklidir.
com.azure.storage.blob: Blob Depolama veri kaynaklarıyla çalışmak için kullanabileceğiniz birincil sınıfları içerir.
@azure/kimlik: Azure SDK'sı genelinde Microsoft Entra belirteci kimlik doğrulaması desteği sağlar ve Azure hizmetlerine parolasız bağlantılar için gereklidir.
@azure/storage-blob: Blob Depolama veri kaynaklarıyla çalışmak için kullanabileceğiniz birincil sınıfları içerir.
@azure/arm-resources: Azure kaynaklarının ve kaynak gruplarının yönetimini destekler.
from azure.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient
from azure.mgmt.resource import ResourceManagementClient
from azure.mgmt.storage import StorageManagementClient
İstemci kitaplığı bilgileri:
azure-identity: Azure SDK genelinde Microsoft Entra belirteci kimlik doğrulaması desteği sağlar ve Azure hizmetlerine parolasız bağlantılar için gereklidir.
azure-storage-blob: Blob Depolama veri kaynaklarıyla çalışmak için kullanabileceğiniz birincil sınıfları içerir.
azure-mgmt-resource: Azure kaynaklarının ve kaynak gruplarının yönetimini destekler.
Depolama kaynak sağlayıcısını bir aboneliğe kaydetme
Bir kaynak sağlayıcısıyla çalışabilmeniz için önce Azure aboneliğinize kaydolmanız gerekir. Bu adımın abonelik başına yalnızca bir kez yapılması gerekir ve yalnızca Microsoft.Depolama kaynak sağlayıcısı aboneliğinize kayıtlı değilse geçerlidir.
Azure portalını, Azure CLI'yi veya Azure PowerShell'i kullanarak Depolama kaynak sağlayıcısını kaydedebilir veya kayıt durumunu kontrol edebilirsiniz.
Aşağıdaki örneklerde gösterildiği gibi kayıt durumunu denetlemek ve Depolama kaynak sağlayıcısını kaydetmek için Azure yönetim kitaplıklarını da kullanabilirsiniz:
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")
Dekont
Kayıt işlemini gerçekleştirmek için şu Azure RBAC eylemi için izinlere ihtiyacınız vardır: Microsoft.Depolama/register/action. Bu izin Katkıda Bulunan ve Sahip rollerine dahil edilir.
Blob Depolama uç noktasını sorgulama
Belirli bir depolama hesabının Blob Depolama uç noktasını almak için Özellikleri Al işlemini çağırarak depolama hesabı özelliklerini almalıyız. Aşağıdaki kod örnekleri, belirtilen bir depolama hesabı için Blob Depolama uç noktası almak için hem veri erişimi hem de yönetim kitaplıklarını kullanır:
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;
}
Belirtilen bir depolama hesabının özelliklerini almak için bir AzureResourceManager nesnesinden aşağıdaki yöntemi kullanın:
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;
}
Belirtilen depolama hesabının özelliklerini almak için bir Depolama ManagementClient nesnesinden aşağıdaki yöntemi kullanın:
Bu yöntem, depolama hesabını temsil eden bir StorageAccount nesne döndürür.
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
Uç noktayı kullanarak istemci nesnesi oluşturma
Depolama hesabı için Blob Depolama uç noktasına sahip olduktan sonra, veri kaynaklarıyla çalışmak için bir istemci nesnesi örneği oluşturabilirsiniz. Aşağıdaki kod örneği, önceki örnekte aldığımız uç noktayı kullanarak bir BlobServiceClient nesne oluşturur:
// 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 ...