Membuat dan menggunakan file sumber daya

Tugas Azure Batch sering memerlukan beberapa bentuk data untuk diproses. File sumber daya adalah cara untuk memberikan data ini ke komputer virtual (virtual machine/VM) Batch Anda melalui tugas. Semua jenis tugas mendukung file sumber daya: tugas, tugas mulai, tugas persiapan kerja, tugas pelepasan kerja, dll. Artikel ini membahas beberapa metode umum tentang cara membuat file sumber daya dan menempatkannya di VM.

File sumber daya menempatkan data ke VM di Batch, tetapi jenis data dan cara penggunaannya fleksibel. Namun, ada beberapa kasus penggunaan umum:

  • Provisikan file umum pada setiap komputer virtual menggunakan file sumber daya pada tugas mulai.
  • Provisikan data input yang akan diproses oleh tugas.

File umum bisa berupa, misalnya, file pada tugas awal yang digunakan untuk menginstal aplikasi yang dijalankan tugas Anda. Data input bisa berupa data gambar atau video mentah, atau informasi apa pun yang akan diproses oleh Batch.

Jenis file sumber daya

Ada beberapa opsi berbeda yang tersedia untuk menghasilkan file sumber daya, dengan metode masing-masing. Proses pembuatan untuk file sumber daya bervariasi tergantung di mana data asli disimpan dan apakah beberapa file harus dibuat.

URL kontainer penyimpanan

Menggunakan URL kontainer penyimpanan berarti, dengan izin yang benar, Anda dapat mengakses file di kontainer penyimpanan apa pun di Azure.

Dalam contoh C# ini, file telah diunggah ke kontainer penyimpanan Azure sebagai penyimpanan blob. Untuk mengakses data yang diperlukan untuk membuat file sumber daya, pertama-tama kita perlu mendapatkan akses ke kontainer penyimpanan. Hal ini dapat dilakukan dalam beberapa cara.

Tanda Tangan Akses Bersama

Buat URI tanda tangan akses bersama (shared access signature/SAS) dengan izin yang benar untuk mengakses kontainer penyimpanan. Atur waktu kedaluwarsa dan izin untuk SAS. Dalam hal ini, tidak ada waktu mulai yang ditentukan, sehingga SAS menjadi valid segera dan kedaluwarsa dua jam setelah dihasilkan.

SharedAccessBlobPolicy sasConstraints = new SharedAccessBlobPolicy
{
    SharedAccessExpiryTime = DateTime.UtcNow.AddHours(2),
    Permissions = SharedAccessBlobPermissions.Read | SharedAccessBlobPermissions.List
};

Catatan

Untuk akses kontainer, Anda harus memiliki izin Read dan List, sedangkan dengan akses blob, Anda hanya perlu izin Read.

Setelah izin dikonfigurasi, buat token SAS dan format URL SAS untuk akses ke kontainer penyimpanan. Menggunakan URL SAS yang diformat untuk kontainer penyimpanan, hasilkan file sumber daya dengan FromStorageContainerUrl.

CloudBlobContainer container = blobClient.GetContainerReference(containerName);

string sasToken = container.GetSharedAccessSignature(sasConstraints);
string containerSasUrl = String.Format("{0}{1}", container.Uri, sasToken);

ResourceFile inputFile = ResourceFile.FromStorageContainerUrl(containerSasUrl);

Jika diinginkan, Anda dapat menggunakan properti blobPrefix untuk membatasi unduhan hanya ke blob yang namanya dimulai dengan awalan yang ditentukan:

ResourceFile inputFile = ResourceFile.FromStorageContainerUrl(containerSasUrl, blobPrefix = yourPrefix);

Identitas terkelola

Buat identitas terkelola yang ditetapkan pengguna dan tetapkan peran Storage Blob Data Reader untuk kontainer Azure Storage Anda. Selanjutnya, tetapkan identitas terkelola ke kumpulan Anda sehingga VM Anda dapat mengakses identitas tersebut. Terakhir, Anda dapat mengakses file di kontainer Anda dengan menentukan identitas untuk digunakan Batch.

CloudBlobContainer container = blobClient.GetContainerReference(containerName);

ResourceFile inputFile = ResourceFile.FromStorageContainerUrl(container.Uri, identityReference: new ComputeNodeIdentityReference() { ResourceId = "/subscriptions/SUB/resourceGroups/RG/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity-name" });

Akses publik

Alternatif untuk membuat URL SAS atau menggunakan identitas terkelola adalah dengan mengaktifkan akses baca publik anonim ke kontainer dan blob di penyimpanan Blob Azure. Dengan demikian, Anda dapat memberikan akses baca-saja ke sumber daya ini tanpa membagikan kunci akun Anda, dan tanpa memerlukan SAS. Akses publik biasanya digunakan untuk skenario di mana Anda ingin blob tertentu selalu tersedia untuk akses baca anonim. Jika skenario ini sesuai dengan solusi Anda, lihat Mengonfigurasi akses baca publik anonim untuk kontainer dan blob untuk mempelajari selengkapnya tentang mengelola akses ke data blob Anda.

Nama kontainer penyimpanan (autostorage)

Alih-alih mengonfigurasi dan membuat URL SAS, Anda dapat menggunakan nama kontainer penyimpanan Azure untuk mengakses data blob Anda. Kontainer penyimpanan yang Anda gunakan harus berada di akun penyimpanan Azure yang ditautkan ke akun Batch Anda, terkadang disebut sebagai akun autostorage. Menggunakan kontainer autostorage memungkinkan Anda untuk melewati konfigurasi dan membuat URL SAS untuk mengakses kontainer penyimpanan. Sebagai gantinya, berikan nama kontainer penyimpanan di akun penyimpanan tertaut Anda.

Jika Anda belum memiliki akun autostorage, lihat langkah-langkah di Buat akun Batch untuk detail cara membuat dan menautkan akun penyimpanan.

Contoh berikut menggunakan AutoStorageContainer untuk membuat file dari data di akun autostorage.

ResourceFile inputFile = ResourceFile.FromAutoStorageContainer(containerName);

Seperti halnya URL kontainer penyimpanan, Anda dapat menggunakan properti blobPrefix untuk menentukan blob mana yang akan diunduh:

ResourceFile inputFile = ResourceFile.FromAutoStorageContainer(containerName, blobPrefix = yourPrefix);

File sumber daya tunggal dari titik akhir web

Untuk membuat file sumber daya tunggal, Anda dapat menentukan URL HTTP yang valid yang berisi data input Anda. URL disediakan ke API Batch, lalu data digunakan untuk membuat file sumber daya. Metode ini dapat digunakan baik ketika data untuk membuat file sumber daya Anda berada di Azure Storage, maupun di lokasi web lainnya, seperti titik akhir GitHub.

Contoh berikut menggunakan FromUrl untuk mengambil file dari untai (karakter) yang berisi URL yang valid, lalu menghasilkan file sumber daya yang akan digunakan oleh tugas Anda. Tidak ada kredensial yang diperlukan untuk skenario ini. (Kredensial diperlukan jika menggunakan penyimpanan blob, kecuali akses baca publik diaktifkan pada kontainer blob.)

ResourceFile inputFile = ResourceFile.FromUrl(yourURL, filePath);

Anda juga dapat menggunakan untai (karakter) yang Anda tetapkan sebagai URL (atau kombinasi untai (karakter) yang, bersama-sama, membuat URL lengkap untuk file Anda).

ResourceFile inputFile = ResourceFile.FromUrl(yourDomain + yourFile, filePath);

Jika file Anda berada di Azure Storage, Anda dapat menggunakan identitas terkelola daripada membuat Tanda Tangan Akses Berbagi untuk file sumber.

ResourceFile inputFile = ResourceFile.FromUrl(yourURLFromAzureStorage, 
    identityReference: new ComputeNodeIdentityReference() { ResourceId = "/subscriptions/SUB/resourceGroups/RG/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity-name"},
    filePath: filepath
);

Catatan

Autentikasi identitas terkelola hanya akan berfungsi dengan file di Azure Storage. Identitas nanaged memerlukan penetapan peran Storage Blob Data Reader untuk kontainer tempat file berada, dan identitas nanaged juga harus ditetapkan ke kumpulan Batch.

Tips dan saran

Tugas Azure Batch dapat menggunakan file dalam banyak cara, itulah sebabnya Batch menyediakan berbagai opsi untuk mengelola file pada tugas. Skenario berikut tidak dimaksudkan untuk menjadi komprehensif, tetapi mencakup beberapa situasi umum dan memberikan rekomendasi.

Banyak file sumber daya

Jika file tugas umum dibagikan di antara banyak tugas dalam pekerjaan Batch Anda, Anda mungkin ingin menggunakan paket aplikasi untuk memuat file-file tersebut. Paket aplikasi menyediakan pengoptimalan untuk kecepatan unduhan, dan data dalam paket aplikasi ditembolokkan di antara tugas. Dengan paket aplikasi, Anda tidak perlu mengelola beberapa file sumber daya secara manual atau membuat URL SAS untuk mengakses file di Azure Storage. Batch bekerja di latar belakang dengan Azure Storage untuk menyimpan dan menggunakan paket aplikasi ke simpul komputasi. Jika file tugas Anda tidak sering berubah, paket aplikasi mungkin cocok untuk solusi Anda.

Sebaliknya, jika tugas Anda masing-masing memiliki banyak file yang unik untuk tugas itu, file sumber daya mungkin adalah opsi terbaik. Tugas yang menggunakan file unik seringkali perlu diperbarui atau diganti, yang tidak mudah dilakukan dengan konten paket aplikasi. File sumber daya memberikan fleksibilitas tambahan untuk memperbarui, menambahkan, atau mengedit file individual.

Jumlah file sumber daya per tugas

Ketika tugas menentukan sejumlah besar file sumber daya, Batch mungkin menolak tugas sebagai terlalu besar. Ini tergantung pada panjang total nama file atau URL (serta referensi identitas) untuk semua file yang ditambahkan ke tugas. Sebaiknya jaga tugas Anda tetap kecil dengan mengecilkan jumlah file sumber daya pada tugas itu sendiri.

Jika tidak ada cara untuk mengecilkan jumlah file yang dibutuhkan tugas, Anda dapat mengoptimalkan tugas dengan membuat satu file sumber daya yang mereferensikan kontainer penyimpanan file sumber daya. Untuk melakukan ini, masukkan file sumber daya Anda ke dalam kontainer Azure Storage dan gunakan salah satu metode yang dijelaskan di atas untuk menghasilkan file sumber daya sesuai kebutuhan.

Langkah berikutnya