Condividi tramite


Generare un SAS URI per un'immagine di macchina virtuale

Nota

È possibile usare un URI di firma di accesso condiviso (SAS) per pubblicare la macchina virtuale. In alternativa, è possibile condividere un'immagine nel Partner Center tramite la galleria dei calcoli di Azure. Per altre istruzioni, fare riferimento a Creare una macchina virtuale usando un di base approvato o Creare una macchina virtuale usando un'immagine personalizzata.

Prima di iniziare, è necessario quanto segue:

Estrarre VHD da VM

Nota

È possibile ignorare questo passaggio se avete già caricato un VHD in un account di archiviazione.

Per estrarre il disco rigido virtuale dalla macchina virtuale, è prima necessario creare uno snapshot del disco della macchina virtuale e quindi estrarre il disco rigido virtuale dallo snapshot nell'account di archiviazione.

Creare uno snapshot del disco della macchina virtuale

  1. Accedere al portale di Azure .
  2. Selezionare Crea una risorsa, quindi cercare e selezionare Snapshot.
  3. Nella schermata Snapshot selezionare Crea.
  4. Selezionare la sottoscrizione . Selezionare un gruppo di risorse esistente all'interno della sottoscrizione selezionata o Crea nuovo e immettere il nome di un nuovo gruppo di risorse da creare. Si tratta del gruppo di risorse a cui verrà associato lo snapshot.
  5. Immettere un Nome per lo snapshot.
  6. Per Tipo di origine, selezionare Disco.
    1. Selezionare la sottoscrizione di origine , ovvero la sottoscrizione che contiene il disco della macchina virtuale. Questo potrebbe essere diverso dall'abbonamento di destinazione del nuovo snapshot.
  7. Per il disco di origine , selezionare il disco gestito da cui effettuare uno snapshot.
  8. Per il tipo di archiviazione , selezionare HDD Standard a meno che non sia necessario archiviarlo in un'unità SSD con prestazioni elevate.
  9. Selezionare Rivedi e crea. Al termine della convalida, selezionare Crea.

Estrarre il VHD nel tuo account di archiviazione

Utilizzare il seguente script per esportare lo snapshot in un VHD nel proprio account di archiviazione. Per ogni parametro, inserire le informazioni di conseguenza.

#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://learn.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.
storageAccountName=mystorageaccountname

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

#Provide the access key for the storage account that you want to copy the VHD to.
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

Questo script utilizza i seguenti comandi per generare il SAS URI per uno snapshot e copia il VHD sottostante in un account di archiviazione usando il SAS URI.

Comando Note
az disk grant-access Genera una firma di accesso condiviso di sola lettura usata per copiare il file VHD sottostante in un account di archiviazione o scaricarlo in locale.
az storage blob copy start (inizia la copia del blob di archiviazione) Copia un BLOB in modo asincrono da un account di archiviazione a un altro. Usare az storage blob show per controllare lo stato del nuovo blob.

Generare l'URI SAS

Esistono due strumenti comuni usati per creare un indirizzo SAS (URI):

  • browser di Archiviazione di Azure: disponibile nel portale di Azure.
  • Azure CLI – consigliata per i sistemi operativi non Windows e per gli ambienti di integrazione automatica o continua.

Uso dello strumento 1: browser di Archiviazione di Azure

  1. Vai al tuo account di archiviazione .
  2. Aprire del browser di archiviazione e selezionare contenitori BLOB.
  3. Nel tuo contenitore , fai clic con il pulsante destro del mouse sul file VHD e seleziona Genera SAS.
  4. Nel menu "Shared Access Signature" che appare, completare i seguenti campi:
    • Autorizzazioni: selezionare autorizzazioni di lettura. Non fornire autorizzazioni di scrittura o eliminazione.
    • Data/ora di inizio – Questa è la data di inizio dell'autorizzazione per l'accesso al VHD (disco rigido virtuale). Per proteggersi dalle modifiche all'ora UTC, specificare una data di un giorno prima della data corrente. Ad esempio, se la data corrente è il 15 luglio 2022, impostare la data su 07/14/2022.
    • Data/ora di scadenza: questa è la data di scadenza dell'autorizzazione per l'accesso al VHD (disco rigido virtuale). Specificare una data almeno tre settimane oltre la data corrente.
  5. Per creare l'URI SAS associato per questo disco rigido virtuale, selezionare Genera token SAS e URL.
  6. Copiare l'URL della firma di accesso condiviso BLOB e salvarlo in un file di testo in un percorso sicuro.
  7. Ripeti questi passaggi per ciascun disco rigido virtuale che desideri pubblicare.

Nota

Se è necessario generare un URI di firma di accesso condiviso con autorizzazioni di lettura ed elenco, è possibile farlo generandolo a livello di contenitore. Seguire gli stessi passaggi precedenti, ma assicurarsi di selezionare sia le autorizzazioni di lettura che di elenco. Al termine del passaggio 6, sarà quindi necessario aggiungere il nome del file BLOB prima di "?sp=rl" per fare riferimento al file VHD all'interno del contenitore. Ad esempio, se il file VHD era "mytestvhd.vhd", l'SAS URI sarebbe simile a:

<container-service-endpoint>/mytestvhd.vhd?<sas-connection-string>

Uso dello strumento 2: Interfaccia della riga di comando di Azure

  1. Nell'interfaccia della riga di comando di Azure eseguire il comando seguente: Azure CLICopy

  2. Aprire Cloud Shell, eseguire il comando seguente:

    az storage container generate-sas --connection-string 'DefaultEndpointsProtocol=https;AccountName=\<account-name\>;AccountKey=\<account-key\>;EndpointSuffix=core.windows.net' --name \<container-name\> --permissions r --start '\<start-date\>' --expiry '\<expiry-date\>'

  3. Prima di eseguire il comando precedente, ricordarsi di inserire i valori dei parametri seguenti.

    Valore del parametro Descrizione
    account-name Nome dell'account di archiviazione di Azure.
    chiave dell'account La chiave dell'account di archiviazione di Azure.
    nome-container Il tuo contenitore BLOB che ospita il file VHD.
    data di inizio Questa è la data di inizio del permesso per l'accesso al VHD. Specificare una data un giorno prima della data corrente. Ad esempio, se la data corrente è il 15 luglio 2022, impostare la data su 07/14/2022. Specificare le date nel formato di data/ora UTC (AAAA-MM-DDT00:00:00Z), ad esempio 2022-04-01T00:00:00Z.
    data di scadenza Questa è la data di scadenza dell'autorizzazione per l'accesso al disco rigido virtuale. Specificare una data almeno tre settimane dopo la data corrente. Specificare le date nel formato di data/ora UTC (AAAA-MM-DDT00:00:00Z), ad esempio 2022-04-01T00:00:00Z.
  4. Copiare la stringa di connessione SAS e salvarla in un file di testo in una posizione sicura. Modificare questa stringa per aggiungere le informazioni sul percorso del disco rigido virtuale per creare l'URI SAS (firma di accesso condiviso) finale.

  5. Nel portale di Azure, vai al contenitore blob che include il VHD associato al nuovo URI.

  6. Copiare l'URL dell'endpoint del servizio BLOB.

  7. Modificare il file di testo con la stringa di connessione SAS del passaggio 2. Crea l'URI SAS completo usando questo formato. Assicurarsi di inserire "?" tra l'URL dell'endpoint e la stringa di connessione.

    <blob-service-endpoint-url>?<sas-connection-string>

Messaggi di errore SAS della macchina virtuale

Questa tabella mostra gli errori comuni riscontrati quando si fornisce un URI di firma di accesso condiviso nel Centro per i partner, insieme alle risoluzioni suggerite.

Questione Messaggio di errore Correzione
"?" non trovato nel SAS URI Must be a valid Azure shared access signature URI. Assicurarsi che l'URI SAS fornito usi la sintassi corretta e includa il carattere "?".
Sintassi: <blob-service-endpoint-url>?<sas-connection-string>
Parametro "st" non nella SAS URI Specified SAS URL cannot be reached. Aggiornare l'SAS URI con il valore corretto Data di Inizio ("st").
Parametro "se" non presente nell'URI SAS The end date parameter (se) is required. Aggiornare il SAS URI con il valore corretto Data di fine ("se").
"sp=r" non è presente nell'URI di SAS Missing Permissions (sp) must include 'read' (r). Aggiornare l'URI SAS con le autorizzazioni impostate come Read ("sp=r").
Errore di autorizzazione dell'URI SAS Failure: Copying Images. Not able to download blob due to authorization error. Esaminare e correggere il formato del SAS URI. Rigenerare, se necessario.
I parametri "st" e "se" dell'URI SAS non contengono una specifica completa di data e ora. The start time parameter (st) is not a valid date string.
O
The end date parameter (se) is not a valid date string.
L'URI SAS i parametri data di inizio e fine ("st" e "se") devono avere un formato di data e ora completa (AAAA-MM-DDT00:00:00Z), ad esempio 11-02-2017T00:00:00Z. Le versioni abbreviate non sono valide (alcuni comandi nell'interfaccia della riga di comando di Azure potrebbero generare valori abbreviati per impostazione predefinita).

Per informazioni dettagliate, vedere Concedere l'accesso limitato alle risorse di Archiviazione di Azure usando firme di accesso condiviso (SAS).

Verificare l'URI SAS

Controllare l'URI SAS prima di pubblicarlo su Partner Center per evitare problemi legati all'URI SAS dopo l'invio della richiesta. Questo processo è facoltativo ma consigliato.

  • L'URI include il nome del file dell'immagine del disco rigido virtuale, compresa l'estensione del nome del file .vhd.
  • Sp=r viene visualizzato vicino al centro dell'URI. Questa stringa indica che l'autorizzazione di lettura è concessa.
  • Quando viene visualizzata sr=c, significa che viene specificato l'accesso a livello di contenitore.
  • Copiare e incollare l'URI in un browser per testare il download del BLOB (è possibile annullare l'operazione prima del completamento del download).