Contoh skrip PowerShell
Azure Remote Rendering menyediakan dua API REST berikut ini:
Repositori sampel ARR berisi contoh skrip di folder Skrip untuk berinteraksi dengan REST API layanan. Artikel ini menjelaskan penggunaannya.
Tip
Ada juga alat berbasis UI yang disebut ARRT untuk berinteraksi dengan layanan, yang merupakan alternatif praktis untuk menggunakan skrip.
Perhatian
Panggilan REST API yang terlalu sering akan menyebabkan server dibatasi dan akhirnya menampilkan kegagalan. ID kode kegagalan HTTP dalam kasus ini adalah 429 ("terlalu banyak permintaan"). Sebagai aturan praktis, harus ada penundaan 5-10 detik antara panggilan berikutnya.
Prasyarat
Untuk menjalankan contoh skrip, Anda memerlukan pengaturan fungsional Azure PowerShell.
Pasang Azure PowerShell:
- Buka jendela PowerShell dengan hak admin.
- Jalankan:
Install-Module -Name Az -AllowClobber
Jika Anda mendapatkan kesalahan tentang menjalankan skrip, pastikan kebijakan eksekusi Anda ditetapkan dengan tepat:
- Buka jendela PowerShell dengan hak admin.
- Jalankan:
Set-ExecutionPolicy -ExecutionPolicy Unrestricted
Masuk ke langganan Anda yang berisi akun Azure Remote Rendering Anda:
- Buka jendela PowerShell.
- Jalankan:
Connect-AzAccount
dan ikuti petunjuk di layar.
Catatan
Jika organisasi Anda memiliki lebih dari satu langganan, Anda mungkin perlu menentukan argumen SubscriptionId dan Tenant. Temukan detailnya dalam dokumentasi Connect-AzAccount.
Unduh folder Skrip dari repositori Azure Remote Rendering GitHub.
File konfigurasi
Di samping file .ps1
, terdapat arrconfig.json
yang perlu Anda isi:
{
"accountSettings": {
"arrAccountId": "<fill in the account ID from the Azure Portal>",
"arrAccountKey": "<fill in the account key from the Azure Portal>",
"arrAccountDomain": "<select from available regions: australiaeast, eastus, eastus2, japaneast, northeurope, southcentralus, southeastasia, uksouth, westeurope, westus2 or specify the full url>"
},
"renderingSessionSettings": {
"remoteRenderingDomain": "<select from available regions: australiaeast, eastus, eastus2, japaneast, northeurope, southcentralus, southeastasia, uksouth, westeurope, westus2 or specify the full url>",
"vmSize": "<select standard or premium>",
"maxLeaseTime": "<hh:mm:ss>"
},
"assetConversionSettings": {
"resourceGroup": "<resource group which contains the storage account you created, only needed when uploading or generating SAS>",
"storageAccountName": "<name of the storage account you created>",
"blobInputContainerName": "<input container inside the storage container>",
"blobOutputContainerName": "<output container inside the storage container>",
"localAssetDirectoryPath": "<fill in a path to a local directory containing your asset (and files referenced from it like textures)>",
"inputFolderPath": "<optional: base folderpath in the input container for asset upload. uses / as dir separator>",
"inputAssetPath": "<the path to the asset under inputcontainer/inputfolderpath pointing to the input asset e.g. box.fbx>",
"outputFolderPath": "<optional: base folderpath in the output container - the converted asset and log files will be placed here>",
"outputAssetFileName": "<optional: filename for the converted asset, this will be placed in the output container under the outputpath>"
}
}
Perhatian
Pastikan untuk menghindari garis miring terbalik dengan benar di jalur LocalAssetDirectoryPath dengan menggunakan garis miring terbalik ganda: "\\" dan gunakan garis miring ke depan "/" di semua jalur lain seperti inputFolderPath dan inputAssetPath.
Perhatian
Nilai opsional perlu diisi atau Anda harus menghapus semua kunci dan nilai. Misalnya, jika Anda tidak menggunakan "outputAssetFileName"
parameter , Anda perlu menghapus seluruh baris di dalam arrconfig.json
.
accountSettings
Untuk arrAccountId
dan arrAccountKey
, lihat Buat akun Azure Remote Rendering.
arrAccountDomain
harus menjadi wilayah dari daftar wilayah yang tersedia.
renderingSessionSettings
Struktur ini harus diisi jika Anda ingin menjalankan RenderingSession.ps1:
- vmSize: Memilih ukuran komputer virtual. Pilih standar atau premium. Matikan sesi penyajian saat Anda tidak membutuhkannya lagi.
- maxLeaseTime: Durasi penyewaan VM. VM dimatikan ketika sewa kedaluwarsa. Waktu sewa dapat diperpanjang nanti (lihat di sini).
-
remoteRenderingDomain: Wilayah tempat VM remote rendering berada.
- Dapat berbeda dari arrAccountDomain, tetapi masih harus menjadi wilayah dari daftar wilayah yang tersedia
assetConversionSettings
Struktur ini harus diisi jika Anda ingin menjalankan Conversion.ps1.
Untuk detailnya, lihat Menyiapkan akun Azure Storage.
Skrip: RenderingSession.ps1
Skrip ini digunakan untuk membuat, mengkueri, dan menghentikan sesi penyajian.
Penting
Pastikan Anda telah mengisi bagian accountSettings dan renderingSessionSettings di arrconfig.json.
Membuat sesi penyajian
Penggunaan normal dengan arrconfig.json yang terisi penuh:
.\RenderingSession.ps1
Skrip memanggil REST API manajemen sesi untuk memutar VM penyajian dengan pengaturan yang ditentukan. Setelah berhasil, ia mengambil sessionId. Setelah itu polling properti sesi sampai sesi siap atau terjadi kesalahan.
Untuk menggunakan file konfigurasi alternatif:
.\RenderingSession.ps1 -ConfigFile D:\arr\myotherconfigFile.json
Anda dapat menimpa pengaturan individual dari file konfigurasi:
.\RenderingSession.ps1 -ArrAccountDomain <arrAccountDomain> -RemoteRenderingDomain <remoteRenderingDomain> -VmSize <vmsize> -MaxLeaseTime <hh:mm:ss>
Untuk memulai sesi tanpa polling saja, Anda dapat menggunakan:
.\RenderingSession.ps1 -CreateSession
sessionId yang diambil skrip harus diteruskan ke sebagian besar perintah sesi lainnya.
Ambil properti sesi
Untuk mendapatkan properti sesi, jalankan:
.\RenderingSession.ps1 -GetSessionProperties -Id <sessionID> [-Poll]
Gunakan -Poll
untuk menunggu hingga sesi siap atau terjadi kesalahan.
Buat daftar sesi aktif
.\RenderingSession.ps1 -GetSessions
Hentikan sesi
.\RenderingSession.ps1 -StopSession -Id <sessionID>
Ubah properti sesi
Saat ini, kami hanya mendukung perubahan maxLeaseTime sesi.
Catatan
Waktu sewa selalu dihitung dari waktu ketika sesi VM awal dibuat. Jadi, untuk memperpanjang sewa sesi satu jam lagi, tingkatkan maxLeaseTime menjadi satu jam.
.\RenderingSession.ps1 -UpdateSession -Id <sessionID> -MaxLeaseTime <hh:mm:ss>
Skrip: Conversion.ps1
Skrip ini digunakan untuk mengonversi model input ke dalam format runtime spesifik Azure Remote Rendering.
Penting
Pastikan Anda telah mengisi bagian accountSettings dan assetConversionSettings , dan opsi remoteRenderingDomain di renderingSessionSettings di arrconfig.json.
Skrip menunjukkan dua opsi penggunaan akun penyimpanan dengan layanan:
- Akun penyimpanan ditautkan dengan Akun Azure Remote Rendering
- Menyediakan akses ke penyimpanan melalui Tanda Tangan Akses Bersama (SAS)
Akun penyimpanan tertaut
Setelah Anda sepenuhnya mengisi arrconfig.json dan menautkan akun penyimpanan, Anda dapat menggunakan perintah berikut. Menautkan akun penyimpanan Anda dijelaskan di Buat Akun.
Menggunakan akun penyimpanan tertaut adalah cara yang lebih disukai untuk menggunakan layanan konversi karena tidak perlu membuat Tanda Tangan Akses Bersama.
.\Conversion.ps1
- Unggah semua file yang terkandung dalam
assetConversionSettings.modelLocation
ke kontainer blob input di bawah yang diberikaninputFolderPath
. - Panggil REST API konversi model untuk memulai konversi model
- Polling status konversi hingga konversi berhasil atau gagal.
- Detail output dari lokasi file yang dikonversi (akun penyimpanan, kontainer output, jalur file dalam kontainer).
Akses ke penyimpanan melalui Tanda Tangan Akses Bersama
.\Conversion.ps1 -UseContainerSas
Ini akan:
- Mengunggah file lokal dari
assetConversionSettings.localAssetDirectoryPath
ke kontainer blob input. - Membuat SAS URI untuk kontainer input.
- Membuat SAS URI untuk kontainer output.
- Panggil REST API konversi model untuk memulai konversi model.
- Polling status konversi hingga konversi berhasil atau gagal.
- Detail output dari lokasi file yang dikonversi (akun penyimpanan, kontainer output, jalur file dalam kontainer).
- Keluarkan SAS URI ke model yang dikonversi dalam kontainer blob output.
Opsi baris perintah tambahan
Untuk menggunakan file konfigurasi alternatif:
.\Conversion.ps1 -ConfigFile D:\arr\myotherconfigFile.json
Untuk memulai konversi model tanpa polling saja, Anda dapat menggunakan:
.\Conversion.ps1 -ConvertAsset
Anda dapat menimpa pengaturan individual dari file konfigurasi menggunakan sakelar baris perintah berikut:
- Id: ConversionId digunakan dengan GetConversionStatus
- ArrAccountId: arrAccountId dari accountSettings
- ArrAccountKey: menimpa arrAccountKey dari accountSettings
- ArrAccountDomain: menimpa arrAccountDomain dari accountSettings
- RemoteRenderingDomain: menimpa remoteRenderingDomain dari renderingSessionSettings
- ResourceGroup: menimpa resourceGroup dari assetConversionSettings
- StorageAccountName: menimpa storageAccountName dari assetConversionSettings
- BlobInputContainerName: menimpa blobInputContainer dari asetConversionSettings
- LocalAssetDirectoryPath: menimpa localAssetDirectoryPath dari assetConversionSettings
- InputAssetPath: menimpa inputAssetPath dari assetConversionSettings
- BlobOutputContainerName: menimpa blobOutputContainerName dari assetConversionSettings
- OutputFolderPath: menimpa outputFolderPath dari assetConversionSettings
- OutputAssetFileName: menimpa outputAssetFileName dari asetConversionSettings
Misalnya, Anda dapat menggabungkan opsi yang diberikan seperti ini:
.\Conversion.ps1 -LocalAssetDirectoryPath "C:\\models\\box" -InputAssetPath box.fbx -OutputFolderPath another/converted/box -OutputAssetFileName newConversionBox.arrAsset
Jalankan tahap konversi individual
Jika Anda ingin menjalankan langkah-langkah individual proses, Anda bisa menggunakan:
Hanya unggah data dari LocalAssetDirectoryPath yang diberikan.
.\Conversion.ps1 -Upload
Hanya mulai proses konversi model yang sudah diunggah ke penyimpanan blob (jangan jalankan Unggah, jangan polling status konversi) Skrip mengembalikan conversionId.
.\Conversion.ps1 -ConvertAsset
Dan Anda dapat mengambil status konversi dari konversi ini menggunakan:
.\Conversion.ps1 -GetConversionStatus -Id <conversionId> [-Poll]
Gunakan -Poll
untuk menunggu hingga konversi selesai atau terjadi kesalahan.