Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
As referências snapshot são chaves de valor especiais que apontam para um snapshot específico num repositório de configuração de aplicações. Permitem combinar a segurança da configuração imutável (snapshots) com a flexibilidade de alterar dinamicamente qual snapshot uma aplicação consome em tempo de execução.
Com o uso direto de snapshots, uma aplicação seleciona um snapshot pelo nome em código. Alterar o snapshot alvo requer uma nova implementação ou alteração de configuração no caminho do código que constrói a configuração. As referências snapshot removem essa restrição: carrega-se uma referência-chave-valor uma vez e, se o nome do snapshot alvo mudar mais tarde, os fornecedores de configuração recarregam automaticamente a configuração para o novo conjunto imutável.
Porque é que usar referências de snapshot?
As referências snapshot fornecem:
- Atualizações fáceis: Atualize o snapshot referenciado sem tocar no código da aplicação, mesmo durante a execução.
- Conjuntos de configuração imutáveis: Cada snapshot permanece inalterado, preservando garantias de auditabilidade e rollback.
Como funcionam
Uma referência de snapshot é armazenada como um valor-chave cujo valor contém o nome do snapshot a consumir. Quando um fornecedor de configuração carrega valores-chave, quaisquer referências de snapshots entre os itens selecionados são automaticamente resolvidas. Os valores-chave do snapshot referenciado são fundidos na configuração da aplicação. Se a referência mudar para apontar para um snapshot diferente, a atualização do fornecedor de configuração faz com que o novo conteúdo do snapshot seja carregado.
Observação
Não precisas de chamar uma API especializada para ativar o uso de referências snapshot. Se selecionares o valor-chave que é uma referência snapshot, a resolução é automática.
Criação de uma referência instantânea
- Abra sua loja de Configuração de Aplicativo no portal do Azure.
- Selecione Configuration Explorer.
- Selecione Criar.
- Selecione Referência instantânea.
- Insere uma chave para a referência. Opcionalmente, define uma etiqueta.
- Escolhe o nome do snapshot alvo da lista (ou insere-o).
- Selecione Criar.
Uma vez criada, a referência snapshot aparece juntamente com outros valores-chave no Explorador de Configuração.
Consumo de referências instantâneas
Não é necessário código novo para usar uma referência de snapshot. Se a chave para uma referência de snapshot fizer parte dos valores-chave selecionados ao construir a configuração, o fornecedor resolve e carrega automaticamente os valores-chave do snapshot referenciado. Compare isto com o uso direto de snapshots, onde se chama explicitamente uma API, como SelectSnapshot("SnapshotName"), fixando a escolha do snapshot no arranque, o que faz com que qualquer alteração posterior exija uma mudança de código ou reimplantação.
Comportamento de atualização
Quando a atualização está configurada, alterar o nome do snapshot de destino dentro de uma referência de snapshot faz a aplicação usar o novo snapshot de forma fluida:
- A aplicação inicia.
- O fornecedor de configuração obtém valores-chave selecionados, incluindo uma referência instantânea.
- O fornecedor de configuração resolve a referência em snapshot
Snapshot_Ae carrega os seus valores-chave. - A referência do snapshot é atualizada para apontar para
Snapshot_B(ainda imutável). - O fornecedor de configuração deteta que a chave-valor da referência do instantâneo foi alterada.
- O fornecedor de configuração resolve novamente. Os valores-chave de
Snapshot_Asão removidos. A recarga da configuração produz os valores-chave deSnapshot_B.
Observação
Esta sequência assume que configurou a atualização para a sua aplicação. Para detalhes sobre como configurar a atualização, veja configuração dinâmica.
Exemplo de referência de instantâneo
O exemplo seguinte demonstra uma referência de snapshot
{
"key": "app1/snapshot-reference",
"value": "{\"snapshot_name\":\"referenced-snapshot\"}",
"content_type": "application/json; profile=\"https://azconfig.io/mime-profiles/snapshot-ref\"; charset=utf-8",
"tags": {}
}
Como mencionado, uma referência snapshot é um valor-chave normal com algumas restrições adicionais. Os fornecedores de configuração identificam referências de instantâneos pelo seu tipo de conteúdo específico. O valor de uma referência de snapshot é um objeto JSON com uma propriedade de nome que aponta para o snapshot alvo.
Tipo de conteúdo de referência instantânea: application/json; profile="https://azconfig.io/mime-profiles/snapshot-ref"; charset=utf-8
Resolução de conflitos chave
Os snapshots referenciados podem conter chaves que entram em conflito com os valores-chave normais (aqueles fora de um snapshot). Os fornecedores de configuração resolvem estes conflitos utilizando o valor da última chave vista. No caso dos snapshots, uma vez que são resolvidos imediatamente após serem vistos, a ordenação lexicográfica da chave de referência snapshot é um detalhe importante ao considerar o valor final de uma dada chave quando existem conflitos.
Exemplo simplificado
Assuma que a sua loja tem estes valores-chave normais:
key: message
value: hello-world
key: request-limit
value: 100
E uma captura de imagem contendo:
key: message
value: bye
key: request-limit
value: 8000
Se for adicionada uma referência de instantâneo que aponta para o instantâneo mencionado, então a configuração final efetiva depende da posição lexicográfica da chave de referência de instantâneo.
| Chave de referência de snapshot | Posição lexicográfica vs message, request-limit |
Valor final message |
Valor final request-limit |
Porquê |
|---|---|---|---|---|
a-snapshot-reference |
Antes de ambos | olá-mundo | 100 | A referência snapshot é resolvida primeiro; as teclas normais sobrepõem-se aos seus duplicados. |
my-snapshot-reference |
Depois message, mas antes request-limit |
Adeus | 100 |
message é o primeiro a ser visto. A referência snapshot é então resolvida e sobrepõe message. Finalmente, o valor do request-limit do snapshot é sobreposto pelo request-limit normal. |
some-snapshot-reference |
Depois de ambos | Adeus | oito mil | A referência snapshot é resolvida por último; os seus valores sobrepõem-se a duplicados anteriores. |
Considerações e casos excepcionais
- Snapshot alvo em falta: Se a referência apontar para um nome de snapshot que não existe ou foi arquivado fora do prazo de retenção, o fornecedor ignora a referência.
- Sem resolução transitiva: Se um snapshot referenciado contiver um valor-chave que é ele próprio uma referência snapshot, essa referência interna não é resolvida.
- Controlo de acesso: Ler um snapshot através de uma referência requer permissões de leitura de snapshot, de forma semelhante a ler um snapshot diretamente.
- Retenção/arquivamento: Tenha cuidado ao consultar snapshots arquivados, pois quando o snapshot expirar, a aplicação deixará de conseguir aceder à configuração contida.
Disponibilidade do idioma
| Linguagem | Versão mínima / estado |
|---|---|
| .NET | 8.4.0+ |
| Java | Trabalho em curso |
| JavaScript | Trabalho em curso |
| Python | Trabalho em curso |
| Go | Trabalho em curso |
Próximos passos
Para um contexto mais profundo, veja a visão geral dos Snapshots.