Partilhar via


Gerar um URI SAS para uma imagem de VM

Nota

Um URI de assinatura de acesso compartilhado (SAS) pode ser usado para publicar sua máquina virtual (VM). Como alternativa, você pode compartilhar uma imagem no Partner Center por meio da galeria de computação do Azure. Consulte Criar uma máquina virtual usando uma base aprovada ou Criar uma máquina virtual usando sua própria imagem para obter mais instruções.

Antes de começar, você precisará do seguinte:

Extrair VHD de uma VM

Nota

Pode ignorar este passo se já tiver um VHD carregado para uma conta de armazenamento.

Para extrair o VHD da VM, você precisa primeiro tirar um instantâneo do disco da VM e, em seguida, extrair o VHD do instantâneo para a conta de armazenamento.

Tire um instantâneo do disco da VM

  1. Inicie sessão no Portal do Azure.
  2. Selecione Criar um recurso e, em seguida, procure e selecione Instantâneo.
  3. Na folha Instantâneo, selecione Criar.
  4. Selecione a Assinatura. Selecione um grupo de recursos existente na assinatura selecionada ou Criar novo e insira o nome de um novo grupo de recursos a ser criado. Este é o grupo de recursos ao qual o instantâneo será associado.
  5. Insira um Nome para o instantâneo.
  6. Em Tipo de origem, selecione Disco.
    1. Selecione a assinatura de origem, que é a assinatura que contém o disco da VM. Isso pode ser diferente da assinatura de destino do novo snapshot.
  7. Em Disco de origem, selecione o disco gerenciado para instantâneo.
  8. Para o tipo de armazenamento, selecione HDD padrão, a menos que necessite que seja armazenado numa SSD de elevado desempenho.
  9. Selecione Rever + Criar. Após a validação bem-sucedida, selecione Criar.

Extraia o VHD para sua conta de armazenamento

Use o script a seguir para exportar o instantâneo para um VHD em sua conta de armazenamento. Para cada um dos parâmetros, insira suas informações de acordo.

#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

Este script acima usa os seguintes comandos para gerar o URI SAS para um instantâneo e copia o VHD subjacente para uma conta de armazenamento usando o URI SAS.

Comando Notas
az disk grant-access Gera SAS somente leitura que é usada para copiar o arquivo VHD subjacente para uma conta de armazenamento ou baixá-lo para o local.
az storage blob copy start Copia um blob de forma assíncrona de uma conta de armazenamento para outra. Use az storage blob show para verificar o status do novo blob.

Gerar o URI SAS

Há duas ferramentas comuns usadas para criar um endereço SAS (URI):

  • Navegador de Armazenamento do Azure – Disponível no portal do Azure.
  • CLI do Azure – Recomendada para sistemas operacionais não Windows e ambientes de integração automatizados ou contínuos.

Usando a Ferramenta 1: Navegador de Armazenamento do Azure

  1. Aceda à sua conta de armazenamento.
  2. Abra o navegador de armazenamento e selecione contêineres de blob.
  3. No contêiner, clique com o botão direito do mouse no arquivo VHD e selecione Gerar SAS.
  4. No menu Assinatura de Acesso Compartilhado exibido, preencha os seguintes campos:
    • Permissões – Selecione permissões de leitura. Não forneça permissões de gravação ou exclusão.
    • Data/hora de início – Esta é a data de início da permissão para acesso VHD. Para se proteger contra alterações de hora UTC, forneça uma data que seja um dia antes da data atual. Por exemplo, se a data atual for 15 de julho de 2022, defina a data como 14/07/2022.
    • Data/hora de expiração – Esta é a data de expiração da permissão para acesso VHD. Forneça uma data pelo menos três semanas após a data atual.
  5. Para criar o URI SAS associado para este VHD, selecione Gerar token SAS e URL.
  6. Copie o URL do Blob SAS e salve-o em um arquivo de texto em um local seguro.
  7. Repita estas etapas para cada VHD que você deseja publicar.

Nota

Se você precisar gerar um URI SAS com permissões de leitura e lista, poderá fazê-lo gerando-o no nível do contêiner. Siga as mesmas etapas acima, mas certifique-se de selecionar as permissões de leitura e lista. Quando a etapa 6 for concluída, você precisará adicionar o nome do arquivo blob antes do "?sp=rl" para fazer referência ao seu arquivo VHD dentro do contêiner. Por exemplo, se o arquivo VHD fosse "mytestvhd.vhd", o URI SAS teria a seguinte aparência:

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

Usando a ferramenta 2: CLI do Azure

  1. Na CLI do Azure, execute o seguinte comando: Azure CLICopy

  2. Abra o Cloud Shell, execute o seguinte comando:

    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. Antes de executar o comando acima, lembre-se de inserir os seguintes valores de parâmetro.

    Valor do parâmetro Description
    account-name (nome da conta) Seu nome de conta de armazenamento do Azure.
    account-key (chave da conta) Sua chave de conta de armazenamento do Azure.
    container-name Seu contêiner de blob que hospeda o arquivo VHD.
    data de início Esta é a data de início da permissão para acesso VHD. Forneça uma data um dia antes da data atual. Por exemplo, se a data atual for 15 de julho de 2022, defina a data como 14/07/2022. Forneça datas no formato de data/hora UTC (AAAA-MM-DDT00:00:00Z), como 2022-04-01T00:00:00Z.
    data de expiração Esta é a data de expiração da permissão para acesso VHD. Forneça uma data pelo menos três semanas após a data atual. Forneça datas no formato de data/hora UTC (AAAA-MM-DDT00:00:00Z), como 2022-04-01T00:00:00Z.
  4. Copie a cadeia de conexão SAS e salve-a em um arquivo de texto em um local seguro. Edite essa cadeia de caracteres para adicionar as informações de local do VHD para criar o URI SAS final.

  5. No portal do Azure, vá para o contêiner de blob que inclui o VHD associado ao novo URI.

  6. Copie a URL do ponto de extremidade do serviço de blob.

  7. Edite o arquivo de texto com a cadeia de conexão SAS da etapa 2. Crie o URI SAS completo usando este formato. Certifique-se de inserir um "?" entre a URL do ponto de extremidade e a cadeia de conexão.

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

Mensagens de falha SAS da máquina virtual

Esta tabela mostra os erros comuns encontrados ao fornecer um URI de assinaturas de acesso compartilhado (SAS) no Partner Center, juntamente com resoluções sugeridas.

Problema Mensagem de falha Fix
"?" não é encontrado no URI SAS Must be a valid Azure shared access signature URI. Certifique-se de que o URI SAS fornecido usa a sintaxe adequada e inclui o "?" caráter.
Sintaxe: <blob-service-endpoint-url>?<sas-connection-string>
O parâmetro "st" não está no URI SAS Specified SAS URL cannot be reached. Atualize o URI SAS com o valor adequado de Data de Início ("st").
O parâmetro "se" não está no URI SAS The end date parameter (se) is required. Atualize o URI SAS com o valor adequado de Data de término ("se").
"sp=r" não está no URI SAS Missing Permissions (sp) must include 'read' (r). Atualize o URI SAS com permissões definidas como Read ("sp=r").
Erro de autorização de URI SAS Failure: Copying Images. Not able to download blob due to authorization error. Revise e corrija o formato URI SAS. Regenere, se necessário.
Os parâmetros "st" e "se" do URI SAS não têm especificação completa de data-hora The start time parameter (st) is not a valid date string.
OU
The end date parameter (se) is not a valid date string.
Os parâmetros Data de Início e Data de Término do URI SAS ("substrings st" e "se") devem ter formato de data-hora completo (AAAA-MM-DDT00:00:00Z), como 11-02-2017T00:00:00Z. As versões abreviadas são inválidas (alguns comandos na CLI do Azure podem gerar valores abreviados por padrão).

Para obter detalhes, consulte Conceder acesso limitado aos recursos do Armazenamento do Azure usando assinaturas de acesso compartilhado (SAS).

Verifique o URI do SAS

Verifique o URI do SAS antes de publicá-lo no Partner Center para evitar quaisquer problemas relacionados ao URI do SAS após o envio da solicitação. Este processo é opcional, mas recomendado.

  • O URI inclui o nome do arquivo da imagem VHD, incluindo a extensão .vhddo nome do arquivo .
  • Sp=r aparece perto do meio do seu URI. Esta cadeia de caracteres mostra permissão de Ler é concedido.
  • Quando sr=c aparece, isso significa que o acesso no nível do contêiner é especificado.
  • Copie e cole o URI em um navegador para testar o download do blob (você pode cancelar a operação antes que o download seja concluído).