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 mengikuti ketentuan time-to-live (TTL) pada catatan DNS dan menghindari untuk mengubahnya. Mengambil alih TTL DNS dapat mengakibatkan perilaku yang tidak terduga.
Untuk informasi selengkapnya, lihat catatan CNAME, subdomain, dan alamat IP.
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.
Instal paket berikut menggunakan dotnet add package:
dotnet add package Azure.Identity
dotnet add package Azure.ResourceManager.Storage
dotnet add package Azure.Storage.Blobs
Buka file pom.xml di editor teks Anda.
Tambahkan azure-sdk-bom untuk menambah ketergantungan pada versi terbaru pustaka. Dalam cuplikan berikut, ganti {bom_version_to_target} placeholder 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.
<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>
Kemudian tambahkan elemen dependensi berikut ke grup dependensi. Dependensi azure-identity diperlukan untuk koneksi tanpa kata sandi ke layanan 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>
Instal paket berikut menggunakan npm install:
npm install @azure/identity
npm install @azure/storage-blob
npm install @azure/arm-resources
npm install @azure/arm-storage
Instal paket berikut menggunakan pip install:
pip install azure-identity
pip install azure-storage-blob
pip install azure-mgmt-resource
pip install azure-mgmt-storage
Menyiapkan kode aplikasi
Tambahkan arahan using atau import yang diperlukan ke kode. Perhatikan bahwa contoh kode dapat membagi fungsionalitas antara file, tetapi di bagian ini semua arahan dicantumkan bersama-sama.
Tambahkan instruksi using berikut:
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.
Tambahkan instruksi import berikut:
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.*;
Informasi pustaka klien:
-
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.
-
com.azure.resourcemanager: Mendukung manajemen sumber daya Azure dan grup sumber daya.
-
com.azure.resourcemanager.storage: Mendukung manajemen sumber daya Azure Storage, termasuk grup sumber daya dan akun penyimpanan.
Tambahkan pernyataan berikut require untuk memuat modul:
const { DefaultAzureCredential } = require("@azure/identity");
const { BlobServiceClient } = require("@azure/storage-blob");
const { ResourceManagementClient } = require("@azure/arm-resources");
const { StorageManagementClient } = require("@azure/arm-storage");
Informasi pustaka klien:
-
@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")
Nota
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 alamat 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:
Untuk mendapatkan properti untuk akun penyimpanan tertentu, gunakan metode berikut dari objek StorageAccountCollection :
Metode ini mengembalikan objek StorageAccountResource , yang mewakili akun penyimpanan.
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 :
Metode ini mengembalikan antarmuka StorageAccount , yang merupakan representasi sisi klien yang tidak dapat diubah dari akun penyimpanan.
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;
}
Untuk mendapatkan properti untuk akun penyimpanan tertentu, gunakan metode berikut dari objek StorageManagementClient :
Metode ini mengembalikan Promise<StorageAccountsGetPropertiesResponse>, yang mewakili akun penyimpanan.
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 ...
Langkah berikutnya
Lihat sampel kode lengkap (GitHub):
Untuk mempelajari selengkapnya tentang membuat objek klien, lihat Membuat dan mengelola objek klien yang berinteraksi dengan sumber daya data.