Membuat URI SAS untuk citra VM

Catatan

Anda tidak memerlukan URI SAS untuk menerbitkan VM Anda. Anda cukup berbagi gambar di Pusat Mitra. Lihat petunjuk Membuat komputer virtual menggunakan basis yang disetujui atau Buat komputer virtual menggunakan citra Anda sendiri.

Persyaratan untuk menghasilkan URI SAS untuk VHD Anda:

  • Hanya izin Daftar dan Baca yang diperlukan. Jangan berikan akses Tulis atau Hapus.
  • Durasi untuk akses (tanggal habis masa berlaku) harus minimal tiga minggu sejak URI SAS dibuat.
  • Agar terlindung dari perubahan waktu UTC, atur tanggal mulai menjadi satu hari sebelum tanggal hari ini. Misalnya, jika tanggal hari ini adalah 16 Juni 2020, pilih 15/6/2020.

Mengekstrak vhd dari VM

Catatan

Anda dapat melompati langkah ini jika Anda sudah mengunggah vhd di Akun Penyimpanan.

Untuk mengekstrak vhd dari VM Anda, Anda perlu mengambil rekam jepret disk VM Anda dan mengekstrak vhd dari rekam jepret.

Mulailah dengan mengambil rekam jepret dari disk VM:

  1. Masuk ke portal Azure.
  2. Mulai dari kiri atas, pilih Buat sumber daya, lalu cari dan pilih Rekam Jepret.
  3. Di bilah Rekam Jepret, pilih Buat.
  4. Masukkan Nama untuk rekam jepret tersebut.
  5. Pilih grup sumber daya yang sudah ada atau masukkan nama untuk yang baru.
  6. Untuk Disk sumber, pilih disk yang terkelola untuk melakukan rekam jepret.
  7. Pilih jenis Akun yang akan digunakan untuk menyimpan rekam jepret. Gunakan HDD Standar kecuali Anda perlu menyimpannya di SSD performa tinggi.
  8. Pilih Buat.

Mengekstrak VHD

Gunakan skrip berikut untuk mengekspor rekam jepret ke VHD di akun penyimpanan Anda.

#Provide the subscription Id where the snapshot is created
$subscriptionId=yourSubscriptionId

#Provide the name of your resource group where the snapshot is created
$resourceGroupName=myResourceGroupName

#Provide the snapshot name
$snapshotName=mySnapshot

#Provide Shared Access Signature (SAS) expiry duration in seconds (such as 3600)
#Know more about SAS here: https://docs.microsoft.com/azure/storage/storage-dotnet-shared-access-signature-part-1
$sasExpiryDuration=3600

#Provide storage account name where you want to copy the underlying VHD file. Currently, only general purpose v1 storage is supported.
$storageAccountName=mystorageaccountname

#Name of the storage container where the downloaded VHD will be stored.
$storageContainerName=mystoragecontainername

#Provide the key of the storage account where you want to copy the VHD 
$storageAccountKey=mystorageaccountkey

#Give a name to the destination VHD file to which the VHD will be copied.
$destinationVHDFileName=myvhdfilename.vhd

az account set --subscription $subscriptionId

$sas=$(az snapshot grant-access --resource-group $resourceGroupName --name $snapshotName --duration-in-seconds $sasExpiryDuration --query [accessSas] -o tsv)

az storage blob copy start --destination-blob $destinationVHDFileName --destination-container $storageContainerName --account-name $storageAccountName --account-key $storageAccountKey --source-uri $sas

Penjelasan skrip

Skrip ini menggunakan perintah berikut untuk menghasilkan URI SAS untuk rekam jepret dan menyalin VHD yang mendasarinya ke akun penyimpanan menggunakan URI SAS. Setiap perintah dalam tabel menautkan ke dokumentasi perintah tertentu.

Perintah Catatan
az disk grant-access Menghasilkan SAS baca-saja yang digunakan untuk menyalin file VHD yang mendasarinya ke akun penyimpanan atau mengunduhnya ke lokal
az storage blob copy start Menyalin blob secara asinkron dari satu akun penyimpanan ke akun penyimpanan lainnya. Gunakan lihat blob penyimpanan az untuk memeriksa status blob baru.

Menghasilkan alamat SAS

Ada dua alat umum yang digunakan untuk membuat alamat SAS (URL):

  1. Azure Storage Explorer – Tersedia di portal Microsoft Azure.
  2. Azure CLI – Direkomendasikan untuk sistem operasi non-Windows dan lingkungan integrasi otomatis atau berkelanjutan.

Menggunakan Tool 1: Azure Storage Explorer

  1. Buka Akun Penyimpanan Anda.

  2. Buka Storage Explorer.

    Storage account window.

  3. Pada Kontainer, klik kanan file VHD dan pilih Dapatkan Tanda Tangan Berbagi Akses.

  4. Dalam kotak dialog Tanda Tangan Akses Bersama, lengkapi bidang berikut ini:

    1. Waktu mulai – Tanggal mulai izin untuk akses VHD. Berikan tanggal yang adalah satu hari sebelum tanggal saat ini.
    2. Waktu habis masa berlaku – Tanggal habis masa berlaku izin untuk akses VHD. Berikan tanggal setidaknya tiga minggu setelah tanggal saat ini.
    3. Izin – Pilih izin Baca dan Daftar.
    4. Tingkat kontainer – Centang kotak centang Hasilkan URI tanda tangan akses bersama tingkat kontainer.

    Shared access signature dialog box.

  5. Untuk membuat URI SAS terkait untuk VHD ini, pilih Buat.

  6. Salin URI dan simpan ke file teks di lokasi yang aman. URI SAS yang dihasilkan ini adalah untuk akses tingkat kontainer. Untuk membuatnya spesifik, edit file teks untuk menambahkan nama VHD.

  7. Masukkan nama VHD Anda setelah string vhd di URI SAS (sertakan garis miring). URI SAS terakhir akan terlihat seperti ini:

    <blob-service-endpoint-url> + /vhds/ + <vhd-name>? + <sas-connection-string>

  8. Ulangi langkah-langkah ini untuk setiap VHD dalam paket yang akan Anda terbitkan.

Menggunakan Alat 2: Azure CLI

  1. Unduh dan pasang Microsoft Azure CLI. Versi tersedia untuk Windows, macOS, dan berbagai distro Linux.

  2. Buat file PowerShell (ekstensi file .ps1), salin kode berikut, lalu simpan secara lokal.

    az storage container generate-sas --connection-string 'DefaultEndpointsProtocol=https;AccountName=<account-name>;AccountKey=<account-key>;EndpointSuffix=core.windows.net' --name <container-name> --permissions rl --start '<start-date>' --expiry '<expiry-date>'
    
  3. Edit file untuk menggunakan nilai parameter berikut. Berikan tanggal dalam format tanggal waktu UTC, seperti 2020-04-01T00:00:00Z.

    • nama-akun – Nama akun penyimpanan Azure Anda.
    • kunci-akun – Kunci akun penyimpanan Azure Anda.
    • tanggal-mulai – Tanggal mulai izin untuk akses VHD. Berikan tanggal yang adalah satu hari sebelum tanggal hari ini.
    • tanggal-kedaluwarsa – Tanggal kedaluwarsa izin untuk akses VHD. Berikan tanggal setidaknya tiga minggu setelah tanggal hari ini.

    Berikut adalah contoh nilai parameter yang tepat (pada saat penulisan ini):

    az storage container generate-sas --connection-string 'DefaultEndpointsProtocol=https;AccountName=st00009;AccountKey=6L7OWFrlabs7Jn23OaR3rvY5RykpLCNHJhxsbn9ON c+bkCq9z/VNUPNYZRKoEV1FXSrvhqq3aMIDI7N3bSSvPg==;EndpointSuffix=core.windows.net' --name <container-name> -- permissions rl --start '2020-04-01T00:00:00Z' --expiry '2021-04-01T00:00:00Z'
    
  4. Simpan perubahan.

  5. Menggunakan salah satu metode berikut, jalankan skrip ini dengan hak istimewa admin untuk membuat string koneksi SAS untuk akses tingkat kontainer:

    • Jalankan skrip dari konsol. Di Windows, klik kanan skrip dan pilih Jalankan sebagai admin.
    • Jalankan skrip dari editor skrip PowerShell seperti Windows PowerShell ISE. Layar ini menunjukkan pembuatan string koneksi SAS dalam editor ini:

    creation of a SAS connection string within the PowerShell editor

  6. Salin string koneksi SAS dan simpan ke file teks di lokasi yang aman. Edit string ini untuk menambahkan informasi lokasi VHD untuk membuat URI SAS final.

  7. Di portal Azure, buka penyimpanan blob yang menyertakan VHD yang terkait dengan URI baru.

  8. Salin URL titik akhir layanan blob:

    Copying the URL of the blob service endpoint.

  9. Edit file teks dengan string koneksi SAS dari langkah 6. Buat URI SAS lengkap menggunakan format ini:

    <blob-service-endpoint-url> + /vhds/ + <vhd-name>? + <sas-connection-string>

Pesan kegagalan SAS komputer virtual

Berikut ini adalah masalah yang biasa dihadapi saat menggunakan tanda tangan akses bersama (yang digunakan untuk mengidentifikasi dan membagikan VHD yang diunggah untuk solusi Anda), bersama dengan resolusi yang disarankan.

Masalah Pesan Kegagalan Perbaikan
Kegagalan dalam menyalin gambar
"?" tidak ditemukan di SAS URI Failure: Copying Images. Not able to download blob using provided SAS Uri. Perbarui SAS URI menggunakan alat yang direkomendasikan.
Parameter "st" dan "se" tidak berada di SAS URI Failure: Copying Images. Not able to download blob using provided SAS Uri. Perbarui SAS URI dengan nilai Tanggal Mulai dan Tanggal Selesai yang sesuai.
"sp=rl" tidak berada di SAS URI Failure: Copying Images. Not able to download blob using provided SAS Uri. Perbarui SAS URI dengan izin yang ditetapkan sebagai Read dan List.
SAS URI memiliki spasi kosong pada nama VHD Failure: Copying Images. Not able to download blob using provided SAS Uri. Perbarui SAS URI untuk menghapus spasi kosong.
Kesalahan Otorisasi SAS URI Failure: Copying Images. Not able to download blob due to authorization error. Tinjau dan perbaiki format SAS URI. Hasilkan ulang jika perlu.
Parameter "st" dan "se" Sas URI tidak memiliki spesifikasi tanggal dan waktu yang lengkap Failure: Copying Images. Not able to download blob due to incorrect SAS Uri. Parameter Tanggal Mulai dan Tanggal Selesai SAS URI (substring st dan se) harus memiliki format tanggal dan waktu yang lengkap, seperti 11-02-2017T00:00:00Z. Versi yang dipersingkat tidak valid (beberapa perintah di Azure CLI dapat menghasilkan nilai yang dipersingkat secara default).

Untuk detailnya, lihat Memberikan akses terbatas ke sumber daya Azure Storage menggunakan tanda tangan akses bersama (SAS).

Memverifikasi URI SAS

Periksa URI SAS sebelum menerbitkannya di Pusat Mitra untuk menghindari masalah apa pun yang terkait dengan URI SAS pasca pengajuan permintaan. Proses ini bersifat opsional tetapi direkomendasikan.

  • URI menyertakan nama file citra VHD Anda, termasuk ekstensi nama file .vhd.
  • Sp=rl muncul di dekat tengah URI Anda. String ini memperlihatkan akses Baca dan Daftar ditentukan.
  • Ketika sr=c muncul, ini berarti bahwa akses tingkat kontainer ditentukan.
  • Salin dan tempel URI ke browser untuk menguji unduhan blob (Anda dapat membatalkan operasi sebelum pengunduhan selesai).

Langkah berikutnya