Olá pessoal, tudo bem? Bem-vindos de volta a nossa jornada cloud. Vamos falar agora sobre uma feature interessantíssima para a configuração e gerenciamento das nossas aplicações dentro do ecossistema da AWS. Nós vamos falar agora sobre AWS Systems Manager, gerenciador de sistemas aqui da AWS. Não vamos falar de todas as features dele, vou escolher uma feature bem legalzinha aqui para a gente fazer um teste e mostrar para vocês, que para mim é uma das mais interessantes dentro do System Manager. Primeira coisa que a gente tem que entender novamente é que esse é um serviço de prateleira, então ele é totalmente gerenciado pela AWS, é mais um daqueles serviços que eu apenas faço uso, tá bom? E ele é muito interessante para o gerenciamento das minhas aplicações e configuração também de alguns itens, tá? Quem nunca precisou, por exemplo, dentro de qualquer movimento de aplicação, qualquer estrutura de aplicação mais robusta, gerenciar parâmetros, onde eu posso ter ali um determinado cadastro de regras, determinados movimentos, onde eu precise, dado parâmetro A, segue por este caminho, dado parâmetro B, segue por outro caminho, se o valor do parâmetro for C, segue por caminho tal. Isso é muito comum acontecer e quando a gente fala disso, a gente logo pensa em, vou criar aqui uma base de dados, vou criar aqui um grande sistema, vou procurar um sistema comercial aí que eu possa fazer gerenciamento de todas essas regras, de tudo isso. E a AWS tem essa feature dentro do Systems Manager para a gente poder usar. Estou falando do parâmetro, parâmetro store ou armazém de parâmetros tá bom esse carinha aqui é uma feature dentro do do systems manager tá que a gente vai estar usando exatamente para armazenar parâmetros armazenar valores e versionar então ele tem ali por exemplo se eu tiver o parâmetro teste A, teste B, teste C, tenho ali meus parâmetros. Aí eu vou lá e o teste A está no valor tal. Eu vou lá e coloco o valor tal mais 1. Ele vai ter ali o valor tal na versão 1, o valor tal mais 1 na versão 2, o valor tal tal na versão 3, desde que o parâmetro seja o mesmo que a gente está criando. Então, ao invés da gente procurar um grande serviço, uma grande base de dados ou algo muito diferenciado no mercado, eu posso usar isso de forma muito barata dentro da própria AWS com gerenciamento pelo console, pelo AWS CLI. Então, assim, como eu vou gerenciar, é uma forma muito... Eu posso até, inclusive, ter aplicação gerenciando esses parâmetros. Eu poderia fazer isso, por que não? Isso por isso via API para a gente. É um pouco estranho falar isso, porque o parâmetro de sólido também tem as suas próprias APIs aqui dentro da AWS. Ele acessa via SDK, como qualquer outro serviço da AWS, mas está aí alguns sabores para a gente experimentar, tá bom? Então, como que eu posso, então, falar um pouquinho de preço, né? Falar um pouquinho de preço aqui do Parâmetro Store, tá? Então, quando eu estou falando dentro do Systems Manager para parâmetros store, vamos ver aqui armazenamento de parâmetros, eu tenho duas formas de parâmetros aqui dentro. Eu tenho parâmetros standard e parâmetros avançados. Quanto eu pago para cadastrar esses parâmetros no Systems Manager? Se ele tiver o parâmetro standard, até 4 KB, não pago nada, é totalmente gratuito para eu cadastrar. Se eu usar um parâmetro avançado, eu vou pagar 5 centavos de dólar por parâmetro avançado por mês. Mas como tudo na na ws não é apenas é o cadastro né eu também pago pelo consumo daquilo ali então eu cadastrar o parâmetro no nível estando ele não tem custos e no nível estando entendeu eu também não vou pagar por transferência da api entendeu a não ser que eu esteja em um consumo muito alto, que eu esteja aí passando por mais de 10 mil iterações de API, mais de 10 mil consultas de parâmetro, eu vou pagar 5 centavos de dólar. Se não chegar nisso, em consultas muito altas, eu simplesmente não vou pagar essas consultas dentro da AWS. Isso aqui é uma forma interessante de ressaltar porque essas soluções podem sair às vezes quase de graça, usando o Systems Manager e usando, por exemplo, o parâmetro só para gerenciamento de parâmetros. Como que isso pode sair quase de graça para mim? Eu posso, vamos dizer, cadastrar um parâmetro ali dentro, tá? E eu falar, poxa, cada vez que alterar esse parâmetro aqui, a minha aplicação subiu, eu vou guardar esse parâmetro em cache, então eu vou vir uma vez somente aqui e guardo em cache na minha aplicação. Ela está ali dentro e está com parâmetro gerenciado. Mas e se eu for lá durante o dia no runtime atualizar isso? Eu consigo fazer uma notificação via EventBridge. Eu posso ir lá no EventBridge, criar uma notificação lá dentro do EventBridge, criar uma forma para que ele fique olhando o System Manager, olhando esse parâmetro. E se tiver uma alteração, ele dispara um evento que vai para um SNS, que atualiza a minha aplicação, por exemplo. Então, quer dizer, eu não vou ficar consultando a API cada vez que eu precisar consultar o parâmetro, eu posso guardar em cache e essa aplicação vai consultar, obviamente, em cada rampada dela, cada vez que ela subir, rampar uma instância dessa aplicação, ela vai ler e guardar isso em cache e todas as alterações ela faz ali com base no que ela tem em memória, e se eu alterar, eu posso notificar via event, fazendo event bridge, SNS, aplicação. Tá vendo que legal? Então, eu posso ter uma aplicação, um gerenciamento de parâmetros, até mesmo que saia de graça pra mim dentro da AWS, tá? Porque dentro do parâmetro standard, e eu posso inclusive atrelar, KMS é o parâmetro standard, eu posso inclusive atrelar dentro disso um pouco mais de segurança, tá bom? Posso atrelar um pouco mais de garantias ali dentro, tá? E o que é que eu posso colocar nele? Exatamente qualquer coisa. A partir que eu definir o nome do parâmetro eu posso pôr um simples string oposição jason lá dentro com vários itens para serem verificados em determinada cadeia de parâmetros são assim é o sabor é a escolha tá como que eu posso é usar onde eu me beneficio disso então vamos lá que ele me garante então para onde ele só lhe oferece alguns benefícios. O uso de serviços de gerenciamento totalmente escalável, hospedável, sem servidor e gerenciado por mim, revisado pela AWS, mas gerenciado por mim. Eu posso ter uma melhor postura na segurança, porque eu estou separando dados de código, então eu não vou ter lá no código um determinado arquivo de ambientes ali é onde eu tenho que ficar colocando esses valores não e atualizando nas aplicações eu vou tá separando dados de código ele armazena dados e configura essa string criptografada se eu quiser e ele também faz as versões dessas trilhas então como eu falei eu posso ter ali o parâmetro na versão 1 eu eu posso ter o parâmetro na versão 2, eu posso ter o parâmetro na versão 3, efetivamente eu posso na pesquisa, quando eu estou usando a SDK da AWS para pesquisar esse parâmetro, trazer para dentro da minha aplicação, eu posso efetivamente colocar a versão que eu quero, eu posso ainda fazer esse tipo de separação, como eu posso voltar versões, ou eu posso simplesmente buscar o parâmetro, buscando o parâmetro, a AWS vai me devolver sempre a última versão, tá? Tem uma coisa interessante aqui, que esse versionamento não é infinito, tá bom? Então, assim, ele sempre vai subir, mas ele não vai ter uma visibilidade muito grande para trás, eu acho que ele traz sempre as últimas 99 versões. Pô, parece ser bastante, né? Mas ele traz aí somente as últimas 99 versões, se eu não me engano. E ele sempre vai estar trazendo para você a última, se você não setar a versão. Então, parando para pensar em inversionamento, gente, é 100 versões aí, então, arredondando, né? Eu poderia estar olhando, acho que nenhum sistema se escala dessa forma para olhar todas essas versões de um único parâmetro. Mas eu poderia aqui, por exemplo, cadastrar ali um parâmetro de custo e falar assim, olha, a minha aplicação vai variar, ela vai variar, 80% vai olhar parâmetro na versão A, o restante, os outros links, vai olhar para a versão 2, 1 ou 2, e por aí vai, na minha cadeia de gerenciamento, tá? Então, vamos fazer uma POC com isso, para você ver a simplicidade que é usar o parâmetro Store, e você pode usar ele para muitas coisas dentro da tua organização, tá bom? Como eu falei, eu posso fazer notificação de alterações, então para cada alteração que eu tiver no parâmetro que vai gerar uma versão nova desse parâmetro, eu posso cadastrar um Event Bridge que olha para esse parâmetro e publica essa alteração no SNS. Eu vou ter as versões de rótulo, tá bom? Que é aquilo que eu já estou dizendo. Um outro uso disso. Eu posso usar parâmetros não apenas para aplicações, mas eu posso usar esse parâmetro para gerenciar parte do meu ecossistema. Por exemplo, eu vou criar máquinas EC2. Eu não quero usar as M's da AWS. Eu não quero usar aquela MDFull lá do Amazon Linux. Eu quero ali na AWS criar uma MIMinha, colocar uma Golden Image, quero colocar uma máquina validada, uma imagem de máquina validada pela minha empresa tá bom? e que tenha todos os requintos de segurança que eu tenho necessidade então, com isso eu posso dentro do parâmetro História, criar lá um parâmetro golden image empresa, tal, tal, posso criar um nome, uma nomenclatura para esse parâmetro e atualizar toda vez que eu tiver uma atualização de imagem, eu coloco lá. E eu posso criar um template para que ao invés de ir criando pelo console, ou mesmo pelo console, ou se eu for criar ali via CloudFormation, ou for criar via Terraform, ou for criar ali via CloudFormation, ou for criar via Terraform, ou for criar por vários parâmetros de escalonamento do próprio EC2, ele vai olhar para essa configuração de Golden Image e setar isso na MI. Então, eu poderia, por exemplo, olhar ali, normalizar a criação de máquinas dentro da minha corporação e falar assim, toda vez que for subir um EC2, você vai olhar para esse parâmetro aqui vai pegar a golden image que tiver lá então ele vai pegar sempre a última versão por exemplo e ele vai criar já a máquina essa golden image então tem uma forma de gerenciar inclusive esteiras tá com coisas dentro do parameter store porque porque ele é totalmente gerenciável e escalável acessívelível por aplicações, acessível por esteiras, por pipelines, desde que eu configure isso lá dentro. Tá bom? Então vamos fazer uma brincadeirinha aqui com o parâmetro store? Eu vou colocar aqui um parâmetro store, vamos ver, da AWS aqui, bonitinho, vai ser verdinho aqui. Vou colocar um parâmetro store, vou criar um parâmetro e eu vou criar um log vamos pegar jogar aqui um logzinho qualquer só pra gente ter a noção de que eu estou logando, né? E eu quero logar lá no CloudWatch o valor desse parâmetro, tá vendo? Então, eu vou fazer isso aqui, vou criar um parâmetro, vou criar uma Lambda, vou fazer um teste ali na Lambda, facinho, somente o teste de console mesmo, eu vou subgate, nada do tipo, eu vou logar o valor desse parâmetro pra ver se essa integração que tá funcionando, pra ver se eu poderia tomar decisões quanto a isso, tá bom? vamos lá, então pensando nisso, como que eu faço parâmetro store? vários caminhos eu posso ir por systems manager e achar a feature lá dentro ou eu posso digitar parâmetro store e ele já vai estar aqui ó, system manager feature, tá vendo? ele é um menu lá dentro vamos lá primeiramente para o nosso parâmetro store, tá? vou criar um parâmetro e vou chamar esse parâmetro de lambda test. A AWS costuma usar esse padrão para parâmetros, você não precisa seguir, mas ele separa sempre ali, a semântica dele pode ser separada por barra, como um caminho ali dentro. Essa seria a forma que mais se usa o parâmetro store, tá bom? Mas eu posso só colocar uma string separada por traços, separada por if, vai depender muito do seu modelo de uso, tá? Então tá aqui, vou criar aqui um lambda test, vou colocar uma descrição, test apenas, aqui eu escolho se ele é um padrão default, standard ou um avançado. Então, eu posso armazenar até 10 mil parâmetros padrão. Muito parâmetro por conta, AWS. Ou eu posso guardar até 100 mil parâmetros avançados. Ou eu posso guardar até 100 mil parâmetros avançados. Lembrando, para cada um desses parâmetros, eu pago 5 centavos de dólar se eu usar o avançado. Tá bom? No padrão, ele tem que ter o parâmetro até 4 kilobytes. E no avançado, ele tem que ter até 8 kilobytes. Tá bom? Aqui eu posso usar vários tipos de string, string list. Tá bom? Ou seja, aqui eu vou colocar um valor dele ali separado por vírgula, tá bom? Ou eu posso falar security string e usar um KMS. Eu posso usar o default, posso usar uma chave KMS que eu tenha gerenciado. Lembrando que se eu criar uma chave KMS, eu pago por ela, tá? Eu pago pela chave. Então, ah, você falou aí que o parâmetro seria de graça, sim, o parâmetro seria de graça dentro do modelo padrão, mas o KMS é uma outra feature, a gente já falou sobre ela, eu estaria usando ela, então eu pagaria ali os 20 centavos por chave por mês do KMS, tá? Vou colocar aqui uma string, como é uma string, tipos de dados, eu poderia, ó, uma C2Image, como eu falei, eu poderia criar aqui. Mas eu vou jogar aqui como texto. Eu posso só colocar um valor, como eu posso colocar um JSON. Aqui é o que você precisar para gerenciamento desse parâmetro, tá bom? Isso é um teste. Vou colocar aqui o valor, como isso é um teste. Os dados o valor como isso é um teste tá opcionais então lambda teste criar o parâmetro opa não está qualificado vou mudar aqui talvez ele reclamou do nulo lambda na frente. Então, vou colocar aqui apenas teste. É isso mesmo. Teste. Está aí. Criamos o parâmetro, está bom? Default. Vamos acessar ele, vamos ver. Tipo string. O valor está na versão 1. Descrição. Tipo de dados. Modificado. Ele guarda o histórico. Não tem nenhuma alteração. Apenas a criação. A versão 1 desse parâmetro. Parâmetro criado. Vamos criar a nossa lambda. Vamos criar a nossa lambda? Vamos criar a nossa lambda. Vamos lá pra lambda. Bom, vou criar uma função, criar do zero. Vou colocar aqui como teste para meter store. É uma lambda em Python. Vou alterar a função padrão para aquela nossa função que nós já agregamos algumas coisas criei tenho aqui um código tá que vai fazer um log disso pra mim jogar esse código aqui. Vou fazer um deploy. Então, como você está vendo aqui, toda vez que eu buscar um parâmetro, eu vou colocar aqui o valor dele. Vai ficar como log, tá bom? Do valor do parâmetro para a gente aqui dentro. Tá bom? Então, vamos testar isso aqui? Ainda não. Falta uma coisa. A gente não atualizou nossa política. Não dá para testar ainda se eu não falar que a minha Lambda tem essa permissão. Por quê? Dentro dessa política aqui, eu posso ir no Dynamo que a gente já tinha testado, no EC2, no S3, no SNS, SQS, mas ainda não pode ir no Systems Manager. Então, vou criar uma política aqui, vou chamá-la, vou achar ele chegar aqui, o Systems Manager. Aqui no Systems Manager ele tem vários, eu vou na leitura, eu vou querer o Get Parameter apenas. Como eu falei, eu posso fazer 30 coisas. Está vendo? Depois você pode dar uma olhada em todas as features do Systems Manager. Ele tem aqui várias coisas legais. Ele tem aqui mais uns gerenciamentos de aplicações. Umas coisas que também são bem usuais. Eu escolhi trazer aqui o parameter store porque ele é o mais presente do dia a dia em questão de necessidade das pessoas. Então está aqui para a gente usar o parâmetro store. Vou colocar aqui getparameter, tudo, próximo, nome da política, vou chamar de SSM, policy, criei a política. Vou vir aqui na minha função e vou anexar essa política. SSM policy. Pronto. Agora a lambda, que tem essa role aqui, pode falar com a SSM. Vamos confirmar aqui? Vamos voltar lá no parâmetro store vamos pegar o nosso parâmetro vamos pegar o nosso parâmetro nosso valor é isso, é um teste, vamos ver vou clicar aqui no teste, vou mandar aqui, eu não estou fazendo validação no Lambda vou só testar executou com sucesso, vamos lá no CloudWatch agora opa, peraí vamos lá no cloud watch grupos de logs parameter store olha aqui parameter value isso é um teste vamos alter ter a versão venho aqui no parâmetro e agora o funcionamento do edital parâmetros é um teste 2 salvei aqui o parâmetro entrei no parâmetro o valor dele dentro para já faz um teste 2 se olhar aqui o histórico, olha aqui. Está vendo? Ele tem histórico de versão. Ele fala quando foi modificado a última vez, qual o horário. Então, eu consigo fazer todo um gerenciamento de versão. Então, qual é a versão desse parâmetro? 2. Vamos executar de novo? Vamos ver se esse carinha aqui vai funcionar pra gente. Vou testar novamente. Rodou, olha aqui o log já aparecendo aqui, a saída do log. Isso é um teste 2, vamos ver se aqui no CloudWatch ele trouxe alguma coisa pra gente. Vamos dar uma olhadinha, olha aqui, carregou o log, isso é um teste 2. Então você vê que ele é bem fácil ele é bem runtime e lembrando, se eu quiser fazer a notificação eu só faço aqui a arquitetura diferente eu posso pegar aqui um event bridge posso jogar aqui um event bridge que fica olhando esse parâmetro Então quando eu tiver uma alteração de versão Ele comunica o EventBridge Que comunica o seu SNS Por exemplo Joga aqui o SNS Que pode estar sendo lido por uma lambda Por exemplo E aí você limpa do cache O que tiver lá De valor de parâmetro já atualiza esse cara aqui dentro tá vendo não precisaria nem buscar posso só usar as próprias estruturas da AWS para fazer a notificação e como a SMS ele tem capacidade de notificar para um monte eu posso notificar para qualquer um que esteja escrito aqui dentro. Entendeu? Então, gente, isso aqui é um feature muito legal com uma capacidade de uso incrível dentro do ecossistema AWS. É uma coisa que eu escolhi aqui para trazer para a gente porque pode estar presente no seu dia a dia. Então, você pode fazer muita coisa com o Parameter Store de forma simples, porque ele tem uma estrutura de chave-valor. Então, é isso, obrigado aqui por nos acompanhar e mais uma vez faça uso do ParameterStore e boa sorte aí para vocês.