Kueri untuk titik akhir Blob Storage menggunakan pustaka manajemen Azure Storage
Artikel
Titik akhir Blob Storage membentuk alamat dasar untuk semua objek dalam akun penyimpanan. Saat membuat akun penyimpanan, Anda menentukan jenis titik akhir mana yang ingin Anda gunakan. Blob Storage mendukung dua jenis titik akhir:
Titik akhir standar menyertakan nama akun penyimpanan unik bersama dengan nama domain tetap. Format titik akhir standar adalah https://<storage-account>.blob.core.windows.net.
Titik akhir zona Azure DNS (pratinjau) secara dinamis memilih zona Azure DNS dan menetapkannya ke akun penyimpanan saat dibuat. Format titik akhir Zona Azure DNS adalah https://<storage-account>.z[00-99].blob.storage.azure.net.
Saat aplikasi Anda membuat objek klien layanan yang terhubung ke sumber daya data Blob Storage, Anda meneruskan URI yang merujuk titik akhir ke konstruktor klien layanan. Anda dapat membuat string URI secara manual, atau Anda dapat mengkueri titik akhir layanan saat runtime menggunakan pustaka manajemen Azure Storage.
Penting
Saat mereferensikan titik akhir layanan dalam aplikasi klien, disarankan agar Anda menghindari mengambil dependensi pada alamat IP yang di-cache. Alamat IP akun penyimpanan dapat berubah, dan mengandalkan alamat IP yang di-cache dapat mengakibatkan perilaku yang tidak terduga.
CNAMEs yang terkait dengan titik akhir akun penyimpanan dapat berubah tanpa pemberitahuan. Aplikasi Anda tidak boleh mengambil dependensi pada jumlah rekaman CNAME atau sub-domain yang terkait dengan catatan CNAME tersebut.
Selain itu, disarankan agar Anda menghormati time-to-live (TTL) catatan DNS dan menghindari penimpaan. Mengambil alih TTL DNS dapat mengakibatkan perilaku yang tidak terduga.
Pustaka manajemen Azure Storage menyediakan akses terprogram ke penyedia sumber daya Azure Storage. Penyedia sumber daya adalah implementasi Azure Storage dari Azure Resource Manager. Pustaka manajemen memungkinkan pengembang mengelola akun penyimpanan dan konfigurasi akun, serta mengonfigurasi kebijakan manajemen siklus hidup, kebijakan replikasi objek, dan kebijakan imutabilitas.
Dalam artikel ini, Anda mempelajari cara mengkueri titik akhir Blob Storage menggunakan pustaka manajemen Azure Storage. Kemudian Anda menggunakan titik akhir tersebut untuk membuat BlobServiceClient objek untuk terhubung dengan sumber daya data Blob Storage.
Menyiapkan proyek Anda
Untuk bekerja dengan contoh kode dalam artikel ini, ikuti langkah-langkah ini untuk menyiapkan proyek Anda.
Memasang paket
Instal paket untuk bekerja dengan pustaka yang digunakan dalam contoh ini.
Tambahkan azure-sdk-bom untuk mengambil dependensi pada versi terbaru pustaka. Dalam cuplikan berikut, ganti {bom_version_to_target} tempat penampung dengan nomor versi. Menggunakan azure-sdk-bom membuat Anda tidak perlu menentukan versi setiap dependensi individu. Untuk mempelajari selengkapnya tentang BOM, lihat AZURE SDK BOM README.
Tambahkan arahan atau import yang diperlukan using ke kode. Perhatikan bahwa contoh kode dapat membagi fungsionalitas antara file, tetapi di bagian ini semua arahan dicantumkan bersama-sama.
using Azure.Core;
using Azure.Identity;
using Azure.Storage.Blobs;
using Azure.ResourceManager;
using Azure.ResourceManager.Resources;
using Azure.ResourceManager.Storage;
Informasi pustaka klien:
Azure.Identity: Menyediakan dukungan autentikasi token Microsoft Entra di seluruh Azure SDK, dan diperlukan untuk koneksi tanpa kata sandi ke layanan Azure.
Azure.ResourceManager.Storage: Mendukung manajemen sumber daya Azure Storage, termasuk grup sumber daya dan akun penyimpanan.
Azure.Storage.Blobs: Berisi kelas utama yang dapat Anda gunakan untuk bekerja dengan sumber daya data Blob Storage.
com.azure.identity: Menyediakan dukungan autentikasi token Microsoft Entra di seluruh Azure SDK, dan diperlukan untuk koneksi tanpa kata sandi ke layanan Azure.
com.azure.storage.blob: Berisi kelas utama yang dapat Anda gunakan untuk bekerja dengan sumber daya data Blob Storage.
@azure/identitas: Menyediakan dukungan autentikasi token Microsoft Entra di seluruh Azure SDK, dan diperlukan untuk koneksi tanpa kata sandi ke layanan Azure.
@azure/storage-blob: Berisi kelas utama yang dapat Anda gunakan untuk bekerja dengan sumber daya data Blob Storage.
@azure/arm-resources: Mendukung manajemen sumber daya Azure dan grup sumber daya.
@azure/arm-storage: Mendukung manajemen sumber daya Azure Storage, termasuk grup sumber daya dan akun penyimpanan.
Tambahkan pernyataan import berikut:
from azure.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient
from azure.mgmt.resource import ResourceManagementClient
from azure.mgmt.storage import StorageManagementClient
Informasi pustaka klien:
azure-identity: Menyediakan dukungan autentikasi token Microsoft Entra di seluruh Azure SDK, dan diperlukan untuk koneksi tanpa kata sandi ke layanan Azure.
azure-storage-blob: Berisi kelas utama yang dapat Anda gunakan untuk bekerja dengan sumber daya data Blob Storage.
azure-mgmt-resource: Mendukung manajemen sumber daya Azure dan grup sumber daya.
azure-mgmt-storage: Mendukung manajemen sumber daya Azure Storage, termasuk grup sumber daya dan akun penyimpanan.
Mendaftarkan penyedia sumber daya Penyimpanan dengan langganan
Penyedia sumber daya harus terdaftar dengan langganan Azure Anda sebelum Anda dapat bekerja dengannya. Langkah ini hanya perlu dilakukan sekali per langganan, dan hanya berlaku jika penyedia sumber daya Microsoft.Storage saat ini tidak terdaftar dengan langganan Anda.
Anda dapat mendaftarkan penyedia sumber daya Storage, atau memeriksa status pendaftaran, menggunakan portal Azure, Azure CLI, atau Azure PowerShell.
Anda juga dapat menggunakan pustaka manajemen Azure untuk memeriksa status pendaftaran dan mendaftarkan penyedia sumber daya Storage, seperti yang ditunjukkan dalam contoh berikut:
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")
Catatan
Untuk melakukan operasi pendaftaran, Anda memerlukan izin untuk tindakan Azure RBAC berikut: Microsoft.Storage/register/action. Izin ini disertakan dalam peran Kontributor dan Pemilik .
Kueri untuk titik akhir Blob Storage
Untuk mengambil titik akhir Blob Storage untuk akun penyimpanan tertentu, kita perlu mendapatkan properti akun penyimpanan dengan memanggil operasi Dapatkan Properti . Sampel kode berikut menggunakan pustaka akses data dan manajemen untuk mendapatkan titik akhir Blob Storage untuk akun penyimpanan tertentu:
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;
}
Untuk mendapatkan properti untuk akun penyimpanan tertentu, gunakan metode berikut dari objek AzureResourceManager :
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;
}
Untuk mendapatkan properti untuk akun penyimpanan tertentu, gunakan metode berikut dari objek StorageManagementClient :
Metode ini mengembalikan StorageAccount objek, yang mewakili akun penyimpanan.
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
Membuat objek klien menggunakan titik akhir
Setelah Anda memiliki titik akhir Blob Storage untuk akun penyimpanan, Anda dapat membuat instans objek klien untuk bekerja dengan sumber daya data. Sampel kode berikut membuat BlobServiceClient objek menggunakan titik akhir yang kami ambil dalam contoh sebelumnya:
// 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 ...