Trabalhar com hierarquias de parâmetros no Parameter Store - AWS Systems Manager

Trabalhar com hierarquias de parâmetros no Parameter Store

Gerenciar dezenas ou centenas de parâmetros como uma lista simples é um processo demorado e propenso a erros. Também pode ser difícil identificar o parâmetro correto para uma tarefa. Isso significa que você pode usar acidentalmente o parâmetro errado ou pode criar vários parâmetros que usam os mesmos dados de configuração.

Você pode usar hierarquias de parâmetros para ajudar você a organizar e gerenciar parâmetros. Uma hierarquia é um nome de parâmetro que inclui um caminho definido usando barras (/).

Entender a hierarquia de parâmetros por meio de exemplos

O exemplo a seguir usa três níveis de hierarquia no nome para identificar o seguinte:

/Environment/Type of computer/Application/Data

/Dev/DBServer/MySQL/db-string13

É possível criar uma hierarquia com um máximo de 15 níveis. Sugerimos que você crie hierarquias que reflitam uma estrutura hierárquica existente no seu ambiente, conforme indicado nos exemplos a seguir:

  • Seu ambiente de integração contínua e entrega contínua (fluxos de trabalho de CI/CD)

    /Dev/DBServer/MySQL/db-string

    /Staging/DBServer/MySQL/db-string

    /Prod/DBServer/MySQL/db-string

  • Seus aplicativos que utilizam contêineres

    /MyApp/.NET/Libraries/my-password
  • Sua organização empresarial

    /Finance/Accountants/UserList

    /Finance/Analysts/UserList

    /HR/Employees/EU/UserList

As hierarquias de parâmetros padronizam a maneira de criar parâmetros e facilitam o gerenciamento de parâmetros ao longo do tempo. Uma hierarquia de parâmetros também pode ajudar você a identificar o parâmetro correto para uma tarefa de configuração. Isso ajuda você a evitar a criação de vários parâmetros com os mesmos dados de configuração.

Você pode criar uma hierarquia que permite compartilhar parâmetros em diferentes ambientes, como mostram os exemplos a seguir, que usam senhas em ambientes de desenvolvimento e teste.

/DevTest/MyApp/database/my-password

Você poderia então criar uma senha exclusiva para o seu ambiente de produção, conforme mostrado no exemplo a seguir:

/prod/MyApp/database/my-password

Não é necessário especificar uma hierarquia de parâmetros. Você pode criar parâmetros no nível um. Estes são chamados de parâmetros raiz. Por motivo de compatibilidade com versões anteriores, todos os parâmetros criados no Parameter Store antes do lançamento de hierarquias são parâmetros raiz. Os sistemas tratam ambos os parâmetros a seguir como parâmetros raiz.

/parameter-name

parameter-name

Consultar parâmetros em uma hierarquia

Outro benefício de usar hierarquias é a capacidade de consultar todos os parâmetros sob um determinado nível em uma hierarquia usando a operação da API GetParametersByPath. Por exemplo, se você executar o seguinte comando na AWS Command Line Interface (AWS CLI), o sistema retornará todos os parâmetros no nível do Oncall.

aws ssm get-parameters-by-path --path /Dev/Web/Oncall

Exemplo de resultado:

{
    "Parameters": [
        {
            "Name": "/Dev/Web/Oncall/Week1",
            "Type": "String",
            "Value": "John Doe",
            "Version": 1,
            "LastModifiedDate": "2024-11-22T07:18:53.510000-08:00",
            "ARN": "arn:aws:ssm:us-east-2:123456789012:parameter/Dev/Web/Oncall/Week1",
            "DataType": "text"
        },
        {
            "Name": "/Dev/Web/Oncall/Week2",
            "Type": "String",
            "Value": "Mary Major",
            "Version": 1,
            "LastModifiedDate": "2024-11-22T07:21:25.325000-08:00",
            "ARN": "arn:aws:ssm:us-east-2:123456789012:parameter/Dev/Web/Oncall/Week2",
            "DataType": "text"
        }
    ]
}

Para visualizar os parâmetros de SecureString descriptografados em uma hierarquia, você especifica o caminho e o parâmetro --with-decryption, como mostra o exemplo a seguir.

aws ssm get-parameters-by-path --path /Prod/ERP/SAP --with-decryption

Gerenciar parâmetros com hierarquias usando a AWS CLI

Esta demonstração explica como trabalhar com parâmetros e hierarquias de parâmetros usando a AWS CLI.

Para gerenciar parâmetros usando hierarquias
  1. Instale e configure a AWS Command Line Interface (AWS CLI), caso ainda não o tenha feito.

    Para obter informações, consulte Instalar ou atualizar a versão mais recente da AWS CLI.

  2. Execute o seguinte comando para criar um parâmetro que usa o parâmetro allowedPattern e o tipo de parâmetro String. O padrão permitido neste exemplo significa que o valor para o parâmetro deve ter entre 1 e 4 dígitos.

    Linux & macOS
    aws ssm put-parameter \ --name "/MyService/Test/MaxConnections" \ --value 100 --allowed-pattern "\d{1,4}" \ --type String
    Windows
    aws ssm put-parameter ^ --name "/MyService/Test/MaxConnections" ^ --value 100 --allowed-pattern "\d{1,4}" ^ --type String

    O comando retornará o número da versão do parâmetro.

  3. Execute o seguinte comando para tentar substituir o parâmetro que você acabou de criar por um novo valor.

    Linux & macOS
    aws ssm put-parameter \ --name "/MyService/Test/MaxConnections" \ --value 10,000 \ --type String \ --overwrite
    Windows
    aws ssm put-parameter ^ --name "/MyService/Test/MaxConnections" ^ --value 10,000 ^ --type String ^ --overwrite

    O sistema lança o seguinte erro porque o novo valor não atende aos requisitos do padrão permitido que você especificou na etapa anterior.

    An error occurred (ParameterPatternMismatchException) when calling the PutParameter operation: Parameter value, cannot be validated against allowedPattern: \d{1,4}
  4. Execute o comando a seguir para criar um parâmetro SecureString que usa uma Chave gerenciada pela AWS. O padrão permitido neste exemplo significa que o usuário pode especificar qualquer caractere, e o valor deve estar entre 8 e 20 caracteres.

    Linux & macOS
    aws ssm put-parameter \ --name "/MyService/Test/my-password" \ --value "p#sW*rd33" \ --allowed-pattern ".{8,20}" \ --type SecureString
    Windows
    aws ssm put-parameter ^ --name "/MyService/Test/my-password" ^ --value "p#sW*rd33" ^ --allowed-pattern ".{8,20}" ^ --type SecureString
  5. Execute os seguintes comandos para criar mais parâmetros que usam a estrutura hierárquica da etapa anterior.

    Linux & macOS
    aws ssm put-parameter \ --name "/MyService/Test/DBname" \ --value "SQLDevDb" \ --type String
    aws ssm put-parameter \ --name "/MyService/Test/user" \ --value "SA" \ --type String
    aws ssm put-parameter \ --name "/MyService/Test/userType" \ --value "SQLuser" \ --type String
    Windows
    aws ssm put-parameter ^ --name "/MyService/Test/DBname" ^ --value "SQLDevDb" ^ --type String
    aws ssm put-parameter ^ --name "/MyService/Test/user" ^ --value "SA" ^ --type String
    aws ssm put-parameter ^ --name "/MyService/Test/userType" ^ --value "SQLuser" ^ --type String
  6. Execute o seguinte comando para obter o valor de dois parâmetros.

    Linux & macOS
    aws ssm get-parameters \ --names "/MyService/Test/user" "/MyService/Test/userType"
    Windows
    aws ssm get-parameters ^ --names "/MyService/Test/user" "/MyService/Test/userType"
  7. Execute o comando a seguir para consultar todos os parâmetros sob um único nível.

    Linux & macOS
    aws ssm get-parameters-by-path \ --path "/MyService/Test"
    Windows
    aws ssm get-parameters-by-path ^ --path "/MyService/Test"
  8. Execute o seguinte comando para excluir dois parâmetros

    Linux & macOS
    aws ssm delete-parameters \ --names "/IADRegion/Dev/user" "/IADRegion/Dev/userType"
    Windows
    aws ssm delete-parameters ^ --names "/IADRegion/Dev/user" "/IADRegion/Dev/userType"