Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Uma tarefa do Lote do Azure geralmente requer algum tipo de dado para processar. Os arquivos de recurso são a maneira de fornecer esses dados à VM (máquina virtual) do Batch por meio de uma tarefa. Todos os tipos de tarefas dão suporte a arquivos de recurso: tarefas, tarefas de início, tarefas de preparação de trabalho, tarefas de liberação de trabalho etc. Este artigo aborda alguns métodos comuns sobre como criar arquivos de recursos e colocá-los em uma VM.
Os arquivos de recurso copiam dados para uma VM no Batch, mas o tipo de dado e a forma como esses dados são usados são flexíveis. No entanto, há alguns casos de uso comuns:
- Provisionar arquivos comuns em cada VM usando arquivos de recurso em uma tarefa de início.
- Provisionar dados de entrada a serem processados por tarefas.
Os arquivos comuns podem ser, por exemplo, arquivos de uma tarefa de inicialização usada para instalar aplicativos que suas tarefas executam. Os dados de entrada podem ser dados brutos de imagem ou de vídeo, bem como qualquer informação a ser processada pelo Lote.
Tipos de arquivos de recurso
Há algumas opções diferentes disponíveis para gerar arquivos de recursos, cada um com seus próprios métodos. O processo de criação de arquivos de recursos varia dependendo de onde os dados originais estão armazenados e se vários arquivos devem ser criados.
- URL do contêiner de armazenamento: Gera arquivos de recursos a partir de qualquer contêiner de armazenamento no Azure.
- Nome do contêiner de armazenamento: Gera arquivos de recurso a partir do nome de um contêiner na conta de armazenamento do Azure vinculada à sua conta do Batch (a conta de armazenamento automático).
- Arquivo de recurso único do ponto de extremidade da Web: gera um arquivo de recurso único a partir de URL HTTP válida.
URL do contêiner de armazenamento
Usar uma URL de contêiner de armazenamento significa que, com as permissões corretas, você pode acessar arquivos em qualquer contêiner de armazenamento no Azure.
Neste exemplo de C#, os arquivos já foram enviados para um contêiner de armazenamento do Azure como blobs. Para acessar os dados necessários para criar um arquivo de recurso, primeiro precisamos obter acesso ao contêiner de armazenamento. Isso pode ser feito de várias maneiras.
Assinatura de Acesso Compartilhado
Crie um URI de SAS (assinatura de acesso compartilhado ) com as permissões corretas para acessar o contêiner de armazenamento. Defina o tempo de expiração e as permissões para a SAS. Nesse caso, nenhuma hora de início é especificada. Portanto, a SAS se torna válida imediatamente e expira duas horas após sua geração.
SharedAccessBlobPolicy sasConstraints = new SharedAccessBlobPolicy
{
SharedAccessExpiryTime = DateTime.UtcNow.AddHours(2),
Permissions = SharedAccessBlobPermissions.Read | SharedAccessBlobPermissions.List
};
Observação
Para acesso ao contêiner, você deve ter as permissões Read e List. Já para acessar o Blob, você precisa apenas da permissão Read.
Depois que as permissões forem configuradas, crie o token SAS e formate a URL de SAS para acesso ao contêiner de armazenamento. Usando a URL SAS formatada para o contêiner de armazenamento, gere um arquivo de recurso com StorageContainerUri.
CloudBlobContainer container = blobClient.GetContainerReference(containerName);
string sasToken = container.GetSharedAccessSignature(sasConstraints);
string containerSasUrl = String.Format("{0}{1}", container.Uri, sasToken);
ResourceFile inputFile = ResourceFile.FromStorageContainerUrl(containerSasUrl);
Se desejar, você pode usar a propriedade blobPrefix para limitar os downloads apenas aos blobs cujo nome começa com um prefixo especificado:
ResourceFile inputFile = ResourceFile.FromStorageContainerUrl(containerSasUrl, blobPrefix = yourPrefix);
Identidade gerenciada
Crie uma identidade gerenciada atribuída pelo usuário e atribua a ela a função Storage Blob Data Reader em seu contêiner de Armazenamento do Azure. Em seguida, atribua a identidade gerenciada ao seu pool para suas VMs possam acessar a identidade. Por fim, você pode acessar os arquivos no seu contêiner especificando a identidade que o Batch deve usar.
CloudBlobContainer container = blobClient.GetContainerReference(containerName);
ResourceFile inputFile = ResourceFile.FromStorageContainerUrl(container.Uri, identityReference: new ComputeNodeIdentityReference() { ResourceId = "/subscriptions/SUB/resourceGroups/RG/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity-name" });
Acesso público
Uma alternativa para gerar uma URL de SAS ou usar uma identidade gerenciada é habilitar o acesso de leitura pública anônima para um contêiner e seus blobs no armazenamento de Blobs do Azure. Ao fazer isso, você poderá conceder acesso somente leitura a esses recursos sem compartilhar a chave da conta nem exigir uma SAS. O acesso público é geralmente usado para cenários em que você quer que determinados blobs estejam sempre disponíveis para acesso de leitura anônimo. Se esse cenário se adequar à sua solução, confira Configurar acesso público de leitura anônimo a contêineres e blobs para saber mais sobre como gerenciar o acesso aos seus dados de blob.
Nome do contêiner de armazenamento (armazenamento automático)
Em vez de configurar e criar uma URL de SAS, você pode usar o nome do seu contêiner de armazenamento do Azure para acessar os dados de blob. O contêiner de armazenamento que você usa deve estar na conta de armazenamento do Azure vinculada à conta do Lote, ocasionalmente chamada de conta de armazenamento automático. O uso do contêiner de armazenamento automático permite ignorar a configuração e criação de uma URL de SAS para acessar um contêiner de armazenamento. Em vez disso, você fornece o nome do contêiner de armazenamento à conta de armazenamento vinculada.
Se você ainda não tiver uma conta de armazenamento automático, consulte as etapas em Criar uma conta do Lote para obter detalhes sobre como criar e vincular uma conta de armazenamento.
O exemplo a seguir usa AutoStorageContainerName para gerar o arquivo a partir de dados na conta de autostorage.
ResourceFile inputFile = ResourceFile.FromAutoStorageContainer(containerName);
Assim como para uma URL de contêiner de armazenamento, é possível usar a propriedade blobPrefix para especificar quais blobs serão baixados:
ResourceFile inputFile = ResourceFile.FromAutoStorageContainer(containerName, blobPrefix = yourPrefix);
Arquivo de recurso único do ponto de extremidade da Web
Para criar um arquivo de recurso único, você pode especificar uma URL HTTP válida contendo os dados de entrada. A URL é fornecida à Batch API e, em seguida, os dados são usados para criar um arquivo de recursos. Esse método pode ser usado quer os dados para criar o arquivo de recurso estejam no Armazenamento do Azure ou em qualquer outro local na Web, como um endpoint do GitHub.
O exemplo a seguir usa HttpUri para recuperar o arquivo de uma cadeia de caracteres que contém uma URL válida e, em seguida, gera um arquivo de recurso a ser usado pela tarefa. Nenhuma credencial é necessária para este cenário. (As credenciais serão necessárias se estiver usando o armazenamento de blobs, a menos que o acesso de leitura público esteja habilitado no contêiner de blobs.)
ResourceFile inputFile = ResourceFile.FromUrl(yourURL, filePath);
Adicionalmente, é possível usar uma cadeia de caracteres que você define como uma URL (ou uma combinação de cadeia de caracteres que, em conjunto, criam a URL completa para o arquivo).
ResourceFile inputFile = ResourceFile.FromUrl(yourDomain + yourFile, filePath);
Se o arquivo estiver no Armazenamento do Azure, você poderá usar uma identidade gerenciada em vez de gerar uma Assinatura de Acesso Compartilhado para o arquivo de recurso.
ResourceFile inputFile = ResourceFile.FromUrl(yourURLFromAzureStorage,
identityReference: new ComputeNodeIdentityReference() { ResourceId = "/subscriptions/SUB/resourceGroups/RG/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity-name"},
filePath: filepath
);
Observação
A autenticação de identidade gerenciada só funcionará com arquivos no Armazenamento do Azure. A identidade gerenciada precisa da atribuição da função Storage Blob Data Reader para o contêiner no qual o arquivo está e também deve ser atribuída ao pool do Lote.
Dicas e sugestões
As tarefas do Lote do Azure podem usar arquivos de várias maneiras e por isso o Lote fornece várias opções para gerenciar arquivos em tarefas. Os cenários a seguir não pretendem ser abrangentes, mas abordam algumas situações comuns e fornecem recomendações.
Muitos arquivos de recurso
Se arquivos comuns de tarefas forem compartilhados entre muitas tarefas no seu trabalho do Batch, talvez você queira usar um pacote de aplicativo para armazenar esses arquivos. Os pacotes de aplicativos fornecem otimização para velocidade de download e os dados em pacotes de aplicativos são armazenados em cache entre as tarefas. Com os pacotes de aplicativos, você não precisa gerenciar manualmente vários arquivos de recurso nem gerar URLs de SAS para acessar os arquivos no Armazenamento do Azure. O Batch opera em segundo plano com o Armazenamento do Azure para armazenar e implantar pacotes de aplicativo em nós de computação. Se os arquivos da sua tarefa não mudam com frequência, os pacotes de aplicativos podem ser uma boa opção para a sua solução.
Se ao invés disso cada tarefa tiver muitos arquivos exclusivos para uma determinada tarefa, os arquivos de recursos provavelmente serão a melhor opção. Tarefas que usam arquivos exclusivos frequentemente precisam ser atualizadas ou substituídas, o que não é tão fácil de fazer com o conteúdo do pacote de aplicativos. Os arquivos de recurso fornecem flexibilidade adicional para atualizar, adicionar ou editar arquivos individuais.
Número de arquivos de recurso por tarefa
Quando uma tarefa especifica um grande número de arquivos de recursos, o Batch pode rejeitar a tarefa por ser grande demais. Isso depende do tamanho total dos nomes de arquivo ou URLs (bem como referência de identidade) para todos os arquivos adicionados à tarefa. É melhor manter suas tarefas em tamanho pequeno, minimizando o número de arquivos de recurso na própria tarefa.
Se não houver como reduzir o número de arquivos de que sua tarefa precisa, você poderá otimizar a tarefa criando um único arquivo de recurso que faça referência a um contêiner de armazenamento de arquivos de recurso. Para fazer isso, coloque os arquivos de recursos em um contêiner do Armazenamento do Microsoft Azure e use um dos métodos descritos acima para gerar os arquivos de recursos, conforme necessário.
Próximas etapas
- Saiba mais sobre pacotes de aplicativos como uma alternativa aos arquivos de recurso.
- Saiba mais sobre como usar contêineres para arquivos de recursos.
- Saiba como coletar e salvar os dados de saída de suas tarefas.
- Saiba mais sobre as APIs e ferramentas do Batch disponíveis para criar soluções do Batch.