Neste artigo desenvolveremos uma visão ampla do processo de armazenamento e extração de dados de configuração no Parameter Store. Além disso, debateremos as vantagens de utilizar o Parameter Store e veremos a nível de código, utilizando o AWS SDK para GO, como armazenar e recuperar dados desta proveitosa feauture do AWS System Manager.
O que é o System Manager
O AWS System Manager — comumente conhecido como SSM — é um serviço AWS que pode ser usado para visualizar e controlar sua infraestrutura.
O SSM fornece uma interface de usuário unificada, que permite a visualização de diferentes tipos de dados operacionais de diferentes serviços AWS. Permite também que seja automatizados diferentes tarefas em torno de recursos utilizados dentro da AWS.
Dentro do SSM, as funcionalidades são dividas em 5 atribuições. Estão entre elas:
- Operations Management
- Application Management
- Change Management
- Node Management
- Shared Resources
Dentre as atribuições listadas, aprofundaremos sobre a Application Management. A atribuição mencionada é responsável por ajudar a investigar e tratar questões com seus recursos AWS no contexto de suas aplicações. O Application Manager agrega informações de operação de diferentes serviços AWS em um único console.
O que é o Parameter Store
O Parameter Store é parte do Application Management, uma das atribuições do SSM.
O Parameter Store fornece armazenamento hierárquico seguro para gerenciar dados de configuração e segredos. É possível armazenar diferentes tipos de dados. Entre eles:
- Senhas
- Strings de Banco de Dados
- IDs de AMIs
- Códigos de Licença como Valores de Parâmetros
O Parameter Store fornece a possibilidade de armazenar dados de forma simples, e também, criptografados.
Portanto, é possível referenciar parâmetros, seguros e simples, em seus scripts, comandos, documentos SSM e automação e configuração de workflows usando nomenclaturas únicas especificadas anteriormente em sua criação.
As maiores vantagens do uso da Parameter Store é a possibilidade de usar um serviço de gerenciamento seguro e escalável, sem servidores para gerenciar; aumenta a abordagem de segurança separando as informações do código; Armazena dados de configuração e strings criptografadas em versões monitoradas e hierarquizadas; e por fim, ajuda a controlar e auditar acessos em seus níveis mais granulares.
Neste artigo, a seguir, veremos como armazenar e recuperar parâmetros no Parameter Store utilizando GO.
Armazenando Parâmetros com Go
Agora iremos armazenar parâmetros no Parameter Store utilizando uma simples aplicação em GO.
O primeiro passo, em um package chamado connector, é criarmos uma struct chamada AWS, recebendo como fields as informações de conexão, sessão e interface do SSM.
Em seguida, criamos uma função de conexão com a AWS:
Em um outro package chamado adder, criamos uma função que recebe como parâmetros name, value e paramType para adicionar os parâmetros no Parameter Store. Nesta função, utilizamos a função PutParameter() do AWS SDK para GO.
No package main, chamamos a função do package adder e retornamos em tela o resultado — se o parâmetro foi, de fato, armazenado.
Desta forma, utilizando GO, adicionamos um parâmetro de teste.
Recuperando Parâmetros com Go
Agora iremos, utilizando uma outra aplicação em GO, retornaremos o parâmetro armazenado no passo anterior.
O primeiro e segundo passo são, essencialmente, os mesmos. Criamos a struct e a conexão em um package chamado connector.
Em um package chamado receiver, criamos uma função que recebe como parâmetro o caminho do parâmetro anteriormente armazenado no Parameter Store. Nesta função, utilizamos a função GetParameter() do AWS SDK para GO.
No package main, chamamos a função do package receiver e retornamos em tela o resultado — o valor do parâmetro requerido.
Desta forma, utilizando GO, retornamos o valor do parâmetro previamente armazenado no Parameter Store.
Conclusão
Neste artigo, podemos conhecer características do AWS System Manager e seu funcionamento.
Podemos observar também as vantagens de utilizar o Parameter Store para armazenamento de dados de configuração de forma segura e escalável, e como poderíamos manipular estes parâmetros de formas simples em uma aplicação em GO.