Genereer een SAS-URI voor een VM-image
Notitie
Een SAS-URI (Shared Access Signature) kan worden gebruikt om uw virtuele machine (VM) te publiceren. U kunt ook een afbeelding delen in Partner Center via de Azure Compute Gallery. Raadpleeg Een virtuele machine maken met een goedgekeurde basisinstallatie of Een virtuele machine maken met uw eigen afbeelding voor meer instructies.
Voordat u aan de slag gaat, hebt u het volgende nodig:
- Een virtuele machine
- Een opslagaccount met een container voor het opslaan van de virtuele harde schijf (VHD)
- De sleutel van uw opslagaccount
Notitie
U kunt deze stap overslaan als u al een VHD hebt geüpload naar een opslagaccount.
Als u de VHD wilt extraheren uit uw virtuele machine, moet u eerst een momentopname van de VM-schijf maken en vervolgens de VHD uit de momentopname uitpakken in uw opslagaccount.
- Meld u aan bij de Azure Portal.
- Selecteer Een resource makenen zoek en selecteer Momentopname.
- In de Momentopname-blade selecteer maken.
- Selecteer het -abonnement. Selecteer een bestaande resourcegroep binnen het geselecteerde abonnement of maak een nieuwe aan en voer de naam in voor een nieuwe resourcegroep die moet worden aangemaakt. Dit is de resourcegroep waarmee de momentopname wordt gekoppeld.
- Voer een naam in voor de momentopname.
- Voor brontype, selecteer Schijf.
- Selecteer het bronabonnement, het abonnement dat de VM-schijf bevat. Dit kan afwijken van het abonnement van bestemming voor de nieuwe momentopname.
- Selecteer voor bronschijfde beheerde schijf om een momentopname te maken.
- Selecteer voor het Storage-typeStandard HDD, tenzij u deze op een ssd met hoge prestaties wilt opslaan.
- Selecteer Controleren enmaken. Selecteer na geslaagde validatie Maken.
Gebruik het volgende script om de momentopname te exporteren naar een VHD in uw opslagaccount. Voeg voor elk van de parameters uw gegevens dienovereenkomstig in.
#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
In dit script hierboven worden de volgende opdrachten gebruikt om de SAS-URI voor een momentopname te genereren en de onderliggende VHD te kopiëren naar een opslagaccount met behulp van de SAS-URI.
Bevelen | Notities |
---|---|
az disk grant-access | Genereert alleen-lezen-SAS die wordt gebruikt om het onderliggende VHD-bestand naar een opslagaccount te kopiëren of naar on-premises te downloaden. |
Begin het kopiëren van az opslagsysteem blobjes | Kopieert een blob asynchroon van het ene opslagaccount naar het andere. Gebruik az storage blob show om de status van de nieuwe blob te controleren. |
Er zijn twee veelgebruikte hulpprogramma's voor het maken van een SAS-adres (URI):
- Azure Storage-browser: beschikbaar in Azure Portal.
- Azure CLI: aanbevolen voor niet-Windows-besturingssystemen en geautomatiseerde of continue integratieomgevingen.
- Ga naar uw Storage-account.
- Open Storage-browser en selecteer blobcontainers.
- Klik in uw Containermet de rechtermuisknop op het VHD-bestand en selecteer SAS-genereren.
- Vul in het menu Shared Access Signature dat wordt weergegeven de volgende velden in:
- Machtigingen: leesmachtigingen selecteren. Geef geen schrijf- of verwijdermachtigingen op.
- Begindatum/-tijd: dit is de begindatum van de machtiging voor VHD-toegang. Als u wilt beveiligen tegen wijzigingen in UTC-tijd, geeft u een datum op die één dag vóór de huidige datum valt. Als de huidige datum bijvoorbeeld 15 juli 2022 is, stelt u de datum in op 14-07-2022.
- Vervaldatum/-tijd: dit is de vervaldatum van de machtiging voor VHD-toegang. Geef een datum op ten minste drie weken na de huidige datum.
- Als u de bijbehorende SAS-URI voor deze VHD wilt maken, selecteert u SAS-token en URL genereren.
- Kopieer de SAS-URL voor blob en sla deze op een veilige locatie op in een tekstbestand.
- Herhaal deze stappen voor elke VHD die u wilt publiceren.
Notitie
Als u een SAS-URI wilt genereren met zowel lees- als lijstmachtigingen, kunt u dit doen door deze op containerniveau te genereren. Volg dezelfde stappen hierboven, maar zorg ervoor dat u zowel lees- als lijstmachtigingen selecteert. Zodra stap 6 is voltooid, moet u de naam van het blobbestand vóór de '?sp=rl' toevoegen om te verwijzen naar uw VHD-bestand in de container. Als het VHD-bestand bijvoorbeeld 'mytestvhd.vhd' is, ziet de SAS-URI er als volgt uit:
<container-service-endpoint>/mytestvhd.vhd?<sas-connection-string>
Voer in Azure CLI de volgende opdracht uit:
Azure CLICopy
Open Cloud Shell en voer de volgende opdracht uit:
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\>'
Voordat u de bovenstaande opdracht uitvoert, moet u de volgende parameterwaarden invoegen.
Parameterwaarde Beschrijving accountnaam De naam van uw Azure-opslagaccount. accountsleutel Uw Azure Storage-accountsleutel. containernaam Uw blobcontainer die als host fungeert voor het VHD-bestand. begindatum Dit is de begindatum van de machtiging voor VHD-toegang. Geef een datum op één dag vóór de huidige datum. Als de huidige datum bijvoorbeeld 15 juli 2022 is, stelt u de datum in op 14-07-2022. Geef datums op in de UTC-datum-/tijdtijdnotatie (JJJJ-MM-DDT00:00:00Z), zoals 2022-04-01T00:00:00Z. vervaldatum Dit is de vervaldatum van de machtiging voor VHD-toegang. Geef ten minste drie weken na de huidige datum een datum op. Geef datums op in de UTC datum-/tijdnotatie (YYYY-MM-DDT00:00:00Z), zoals 2022-04-01T00:00:00Z. Kopieer de SAS-verbindingsreeks en sla deze op een veilige locatie op in een tekstbestand. Bewerk deze tekenreeks om de locatiegegevens van de VHD toe te voegen om de uiteindelijke SAS-URI te maken.
Ga in Azure Portal naar de blobcontainer met de VHD die is gekoppeld aan de nieuwe URI.
Kopieer de URL van het blobservice-eindpunt.
Bewerk het tekstbestand met de SAS-verbindingsreeks uit stap 2. Maak de volledige SAS-URI met deze indeling. Zorg ervoor dat u een '?' invoegt tussen de eindpunt-URL en de verbindingsreeks.
<blob-service-endpoint-url>?<sas-connection-string>
In deze tabel ziet u de veelvoorkomende fouten die zijn opgetreden bij het opgeven van een SAS-URI (Shared Access Signatures) in partnercentrum, samen met voorgestelde oplossingen.
Probleem | Foutbericht | Repareren |
---|---|---|
'? is niet gevonden in SAS URI' | Must be a valid Azure shared access signature URI. |
Zorg ervoor dat de opgegeven SAS-URI de juiste syntaxis gebruikt en het '?'-teken bevat. Syntaxis: <blob-service-endpoint-url>?<sas-connection-string> |
Parameter 'st' niet in SAS-URI | Specified SAS URL cannot be reached. |
Werk de SAS-URI bij met de juiste Begindatum ("st")-waarde. |
Parameter 'se' niet in SAS-URI | The end date parameter (se) is required. |
Werk de SAS-URI bij met de juiste einddatum ("se") waarde. |
"sp=r" niet in SAS-URI | Missing Permissions (sp) must include 'read' (r). |
Werk de SAS-URI bij met machtigingen die zijn ingesteld als Read ('sp=r'). |
Sas-URI-autorisatiefout | Failure: Copying Images. Not able to download blob due to authorization error. |
Controleer en corrigeer de SAS-URI-indeling. Genereer indien nodig opnieuw. |
Sas-URI -parameters 'st' en 'se' hebben geen volledige datum-tijdspecificatie | The start time parameter (st) is not a valid date string. OF The end date parameter (se) is not a valid date string. |
SAS-URI begindatum en einddatum parameters ("st" en "se" subtekenreeksen) moeten de volledige datum/tijdnotatie hebben (JJJJ-MM-DDT00:00:00Z), zoals 11-02-2017T00:00:00Z. Verkorte versies zijn ongeldig (sommige opdrachten in Azure CLI genereren standaard verkorte waarden). |
Zie Beperkte toegang verlenen tot Azure Storage-resources met sas-(Shared Access Signatures) voor meer informatie.
Controleer de SAS-URI voordat u deze publiceert in Het Partnercentrum om problemen met betrekking tot sas-URI na indiening van de aanvraag te voorkomen. Dit proces is optioneel, maar wordt aanbevolen.
- De URI bevat de VHD-bestandsnaam, inclusief de bestandsnaamextensie
.vhd
. -
Sp=r
wordt midden in uw URI weergegeven. Deze zin geeft aan dat de machtiging Lezen is verleend. - Wanneer
sr=c
wordt weergegeven, betekent dit dat toegang op containerniveau is opgegeven. - Kopieer en plak de URI in een browser om de blob te testen en te downloaden (u kunt de bewerking annuleren voordat het downloaden is voltooid).