Olá pessoal, tudo bem? Bem-vindos de volta à nossa jornada Cloud. Vamos falar agora sobre um dos serviços, alguns dos serviços, que os desenvolvedores mais terão contato dentro da Cloud AWS. Vamos começar a falar um pouco sobre containerização, gerenciamento de containers, né? Então, pensando nisso, a AWS tem soluções muito boas, práticas, simples e por que não dizer também robustas, tá bom? Para que a gente possa estar executando nossas tarefas dentro da AWS. Uma parte interessante de saber é que para esses gerenciamentos acontecerem de forma segura e escamada, a gente não faz uso de um serviço apenas na verdade a gente começa por esse serviço mas por trás tem vários serviços que a gente está chamando a boa e roubando em uma coisa só bom a gente vai entender um pouquinho disso um pouquinho mais à frente mas vamos falar principalmente dos dois principais que a gente vai precisar usar aqui, tá bom? Vamos falar primeiramente do ECS, tá? Então, o que é o ECS? O ECS, Elastic Container Service, ele é o gerenciador de containers criado e manutenciado pela própria AWS, tá bom? Ele é um serviço totalmente gerenciado de orquestração de containers, tá bom? E ele ajuda a implantar, a gerenciar, ele trabalha aqui também nas configurações de escalabilidade e tudo mais das nossas, dos nossos containers ali da AWS que a gente for publicando dentro dele, tá? Eu tenho duas formas de usar ele, tá bom bom eu posso usar esse s com máquinas e c2 tá bom que é o que nós vamos fazer também e usando esse com máquinas e c2 a gente vai ser cobrado apenas pelo uso da máquina. A gente não é cobrado pelo uso do ECS em si. Então, o ECS é uma forma de manter as nossas tasks, os nossos serviços orquestrados dentro de máquinas EC2. Eu não pago objetivamente pelo ECS, o pago por aquilo que ele manipula no caso de c2 as nossas máquinas tá bom as nossas imagens também ali no outro item que é o e se é que a gente vai falar daqui a pouco mais sobre bom mas que mais eu posso fazer aqui qual é outra forma de usar o e se eu posso fazer aqui? Qual é outra forma de usar o ECS? Eu posso usar o ECS com Fargate. Tá bom? O que é o ECS com Fargate? Fargate, ele é o modelo serverless da AWS gerenciar containers. A gente já viu aqui sobre as funções lambda. A gente já viu aqui sobre a função containers. A gente já viu aqui sobre as funções lambda, a gente já viu aqui sobre a função lambda, a gente já viu aqui sobre como usar, como integrar ela nativamente com serviços AWS. E o Fargate, ele segue um conceito muito próximo. A diferença é que ele é de fato apenas uma imagem não estou escolhendo uma máquina quando eu falo de ss com os dois eu falo de máquinas nem eu falo de olha eu preciso de máquinas para fazer determinado gerenciamento quando eu falo de ss com fargate eu estou fazendo um casalzinho igual eu faço lá com a lambda lá na lambda se eu precisar de mais processamento, eu peço mais memória. É o mesmo intervalo de pensamento com o Fargate. Eu crio containers gerenciados pela AWS, eles não são funções Lambda, ele não tem aquele timeout de mínimo de 5 ou até 15 minutos que eu posso configurar na Lambda, ele não tem aquele timeout de mínimo de 5 ou até 15 minutos ali que eu posso configurar na Lambda, ele não tem isso, tá? Ele simplesmente vai provisionar um container com base na imagem que eu pedir para ele e vai me garantir o quanto eu quero de CPU e o quanto eu quero de memória, tá? E com isso, ele me entrega um serviço escalável, um serviço observável, tá bom? Dentro de toda a infraestrutura da AWS. Então, vamos voltar aqui ao pensamento. ECS com EC2, estou falando de containerização em máquina. ECS com Fargate, estou falando de containerização sem servidor, tá? Servless, eu vou para a AWS, eu peço para a AWS me dê esse serviço, tá bom? Me dê aqui, eu requisito memória e falo para ela, vou rodar um serviço aqui dentro e eu pago por isso dentro do Fargate. Com EC2 eu pago pela máquina, tá bom? Então, como que funciona aqui? Vamos pensar aqui no modelo de execução do Fargate. Eu pago pela quantidade de memória e CPU que eu solicito. Então, quanto mais memória, mais CPU eu solicitar, mais eu vou pagar, tá bom? Então, ele cobra por segundo executado. mais CPU eu vou solicitar, mais eu vou pagar, tá bom? Então, ele cobra por segundo executado, ele não cobra ali por hora fechada, tá? Ele cobra por segundo executado e com base nas requisições no Firegate. Para EC2, eu não tenho custo nenhum adicional, como eu falei, eu pago apenas a máquina e o volume EBS, tudo que está atrelado ao EC2, tá bom? É isso que eu pago pensando no EC2. Mas, vamos lá. Eu tenho aqui um gerenciador de container, correto? Então, eu preciso minimamente ter também um container para que eu possa executar, tá bom? Então, se eu estou falando que eu preciso de um gerenciador de container, eu vou ter que ter um espaço na AWS para ensinar ela quais são os meus containers. E para isso nós temos o ECR, Elastic Container Registry. Dentro do ECR é onde eu coloco as minhas imagens Docker. Basicamente isso. Tem formas de eu apontar para outros repositórios Docker? Tem, eu posso. Como eu posso usar o próprio da AWS, que é o caso que nós vamos fazer aqui neste momento, tá bom? Então, como que funciona o ECR? Ele é basicamente um repositório de imagens, tá bom? Onde eu crio ali um repositório e build a minha imagem, ou fazer a build da minha imagem em uma máquina, em uma pipeline, e eu faço a entrega dessa imagem dentro do ECR e a partir disso depois eu construo tarefas que vão executar dentro do ECS, tá bom? Vamos olhar como que isso aqui é cobrado, você deve estar pensando, pô, isso aqui deve ser bastante caro, né? Mas na verdade, como a gente já tem visto, tudo na AWS do ponto de vista de custo, ele acaba sendo barato, tá bom? Então, eu tenho aqui ele no nível gratuito, eu tenho o ECR no nível gratuito, porém, dados para dentro, ou seja, mandar os meus repositórios para o ECR, fazer o upload disso para lá, eu não sou cobrado. para lá eu não sou cobrado vai ser sempre gratuito tá bom eu sou cobrado toda vez que eu transfiro dados é de saída quando eu tiro esse item da AWS, aí a AWS me cobra pela rede tá bom mas é muito barato olha só os próximos 9,999 terabytes do mês eu vou pagar aqui 9 centavos por giga de transferência, tá? É um serviço que a gente já nota que dentro do que a AWS oferece é um pouquinho mais caro que os outros, mas ainda assim bem barato, né? Porque eu estou pagando aqui 9 centavos de dólar por giga transferido na saída, tá bom? Então, o que isso quer dizer? Eu poderia usar o ECR como repositório de imagens para outros serviços aí, pensando numa cloud privada, tá? Poderia fazer essa transferência ali também. O que nós não vamos testar aqui, tá bom? Porque o objetivo é trabalhar a cloud pública, mas é interessante saber que a AWS tem também essas possibilidades, essas comunicações com a Cloud privada. Vamos brincar aqui um pouquinho, vamos diagramar o que a gente vai fazer. Primeiramente, a gente vai criar uma imagem no ECR. Vou criar aqui uma imagem no ECR. Vamos pensar as pecinhas que eu preciso. criar aqui uma imagem no ECR, vamos pensar as pecinhas que eu preciso. Eu vou criar um container do ECS, vou colocar aqui ó, no Amazon ECS. Esse container, ele vai ter ali algumas, alguns containers de uma aplicação que nós vamos subir dentro de máquinas EC2. Eu vou usar esse aqui, que fica muito mais fácil. Então, vamos jogar aqui dentro. Então, eu vou criar aqui também, vamos precisar de uma task definition. também vamos precisar de uma task definition. Vou ensinar, mostrar para vocês o que é isso também. Então, acho que seria, no momento, seria essa arquitetura aqui. Eu vou linkar a minha imagem dentro de uma task. dentro de uma task, essa task vai estar sendo apontada para um container dentro do EC2, ela vai gerenciar e quem gerencia tudo isso aqui, deixa eu ver aqui se eu tenho aqueles quadradinhos legais acho que aqui deixa eu excluir aqui eu vou ter sim um itemzinho de corporação aqui quem gerencia todos esses itens pegar um outro aqui é a aw, então eu estou falando que a AWS ela vai gerenciar para mim o ECS no caso, esse quadradinho aqui assim, então ela vai ter um repositório que vai entregar uma imagem em uma test, vai estar aqui dentro rodando dentro do EC2 então aqui o ECS controlando tudo isso isso tudo dentro da AWS pensando no EC2 ok então nós também vamos fazer esse mesmo desenhozinho aqui. Vou até copiar. Só que no lugar de EC2, no lugar de EC2, eu vou ter aqui o Fargate. Nota que parece que é muito igual a arquitetura, porém, neste modelo com Fargate, eu não tenho controle sobre servidor, porém, a forma como o ECS lida com isso é muito similar. Então, vamos lá para a prática? muito similar, ok? Então, vamos lá para a prática? Gente, a primeira coisa que a gente precisa garantir é que os seus usuários, tá bom? Que o seu usuário tenha credenciais de acesso, tá bom? Chaves de acesso. Eu não recomendo que você use chaves de acesso para fazer o upload de imagens dentro da AWS com o seu usuário root, tá bom? Por quê? Porque o usuário root, o usuário que você criou a sua conta, esse usuário tem muita permissão, ele faz tudo na AWS. Objetivamente, qualquer credencial ligada a ele, qualquer chave ligada a ele, vai também fazer qualquer coisa na AWS. Então, recomendo que você crie um usuário se você puder, vai lá em usuários, crie um outro usuário, crie uma função pra ele, entendeu? E se possível, dentro da sua corporação inclusive, faça isso, coloque todas as permissões, porque aí se for o caso, você deleta aquele usuário se necessário, né? E você automaticamente acaba com qualquer tipo de impacto. Coisa que você não pode fazer com o usuário root, tá bom? Coisa que você não vai fazer facilmente, melhor dizendo, com o usuário root, tá? Então, vamos lá. No meu caso, eu já tenho aqui chaves de acesso. Vamos para o ECR. ECR. A primeira coisa que nós vamos fazer é criar o nosso repositório dentro do ECR. Então, pode clicar aqui dentro, se você não tiver, se você já tiver, pode ir para repositories, se não, clica aqui. Meu repositório é privado, eu vou colocar aqui o nome de ECS API, colocar aqui o nome de ECS API, então o que eu vou criar é uma API, somente para a gente testar isso aqui dentro de um container, nós não vamos instanciar gate, nós vamos chamar diretamente pelo container, porque esse seria o objetivo, a integração disso com outros itens como gate a gente vai observar um pouco mais à frente. Então, neste momento, é apenas criar o repositório. Vou criar aqui esse repositório, não vou configurar mais nada, vou deixar todas as outras verificações aqui desabilitadas, e vou criar o repositório. Pronto! Repositório criado, tá, pessoal? Então, com isso aqui criadoado agora eu vou subir uma imagem como que eu subo essa imagem primeiramente você vai ter que instalar na sua máquina o aws-li tá bom aws-li Então, o que é isso aí? Ele é o cliente de linha de comando da AWS. Sabe tudo isso que a gente tem feito usando a console da AWS? formando desde listar bucket, criar bucket, criar lambda, fazer upload de pacote, verificar status, inclusive criar esses clusters, tudo que a gente está fazendo, criar máquina VC2, parar máquina VC2. Ou seja, tudo que você faz pelo console da AWS, você pode fazer com o CLI. você pode fazer com o CLI. Exclusivamente para fazer deploy de imagens, você não faz deploy de outra forma se não usando a WSLI. Ele é facilmente integrável a pipelines ou com a WSSDK, que é ali via aplicação. Então, você não consegue sem usar essas formas. É muito comum que as imagens em pipelines das empresas sejam publicadas via shell script depois de terem passado por build dentro do contexto de entrega de cada empresa. Então, você entrar aqui dentro, você consegue instalar a AWS CLI e você vai fazer upload disso, tá bom? Da sua imagem buildada. Eu já tenho uma imagem buildada, eu vou só subir ela aqui dentro, tá bom? Um minutinho. Como que eu faço isso? Clica no teu repositório, ele vai te dar os comandos de push. É exclusivamente para esse repositório, vai te dar os comandos de push é exclusivamente para esse repositório bom então vamos lá copia primeiramente aqui os seus comandos para recuperar a autenticação porque quando você coloca a WSCLive é importante que você configure seu usuário ele vai pedir lá qual que é o ID, qual que é a chave de acesso, em qual é a região principal, qual o formato um pouco disso, tá bom? Porque dentro desse baixo aqui, a gente consegue já ter acesso ao CLI, tá bom? Pra rodar aqui coisas dentro da própria AWS. Claro que você não vai ter todos os acessos se o seu baixo não tiver aí com todas as permissões, né? Que ele precisa aí pra fazer suas execuções. Mas olha, é basicamente isso aqui. Por exemplo, você pode jogar um AWS Configure depois de instalar o CLI e ele vai pedir, vai fazer uma configuração de usuário bem simples, tá pessoal? Então, basicamente isso, não tem muitos segredos, tá bom? É instalar o CLI, configurar o CLI na máquina Com as chaves de acesso do seu usuário E aí você já pode simplesmente Copiar os comandos Aqui de push do ECR Que é o que eu vou estar fazendo agora Copiei aqui O login Tá? Então Vamos garantir o login, vamos garantir o login dentro da nossa interface, depois você pega aqui a sua build, copia ela, roda ali no seu docker para que ele faça ali a compilação da imagem coloca a tag da tua imagem preparando já pra você subir e por último passa o push aí do seu docker e ele já vai mandar para a sua conta na aws a imagem que você preparou na sua máquina a imagem que foi preparada ali na sua pipeline. Claro que via pipeline esses comandos seriam em um movimento mais shell script, talvez, em um movimento mais SDK. Vai depender muito de... o que a gente de fato, da estratégia que a nossa empresa adotou para fazer deploy e gerenciamento das nossas imagens. Então terminando isso aqui todos esses comandos você vai olhar aqui dentro entrar no seu repositório e olha aí eu já tenho uma imagem aqui dentro já tem uma imagem aqui dentro. Já tem uma etiqueta da imagem, sempre a última, um latest. Então, aqui o R, isso aqui é muito importante, tá bom? Então, isso aqui é muito importante, a URI da sua imagem, por quê? Porque agora a gente vai criar já algumas coisinhas que a gente vai precisar primeiramente vamos para o nosso ECS, Relast Container Service e vamos criar um cluster primeiramente vamos fazer com EC2 criar um cluster, essa etapa é um pouco demorada tá bom então assim porque ele vai instanciar máquinas ele vai fazer todo um gerenciamento para você tudo que você teria que fazer na mão aqui ó, cluster api, eu quero somente EC2, vou criar um novo security group, o sg, não é um novo sg, é um grupo de outscaling no caso aqui tá, o que que seria isso aqui como a ws ela vai gerenciar pra mim ela vai criar uma escalabilidade dentro do meu cluster então vamos imaginar que ele vai ter algumas regras ali ele pode ser inclusive isso é editável a gente pode criar outras regras de auto scaling depois mas imagina aí que você está usando muita CPU ele sobe uma segunda máquina para distribuir mais tarefas estou usando muita memória ele sobe outras máquinas distribui mais tarefas então vai criar um novo grupo de auto-scaling eu vou escolher o modelo de provisionamento ele pode ser sob demanda ou spot, qualquer diferença. Sob demanda eu pago por hora e capacidade e aí eu vou garantir que eu vou pagar aquilo que eu tô pedindo, né, pelo preço fechado da máquina, tá bom? A instância spot são aquelas instâncias bobinhas da AWS, tá bom? São aquelas instâncias Bopinhas da AWS Tá bom? São aquelas instâncias que a AWS Não está usando naquele momento Mas está lá parado, ninguém está requisitando Então O que acontece? A Spot, ela é mais barata Só que ela também é menos confiável Ela vai falar, olha, eu vou te dar uma instância Aqui com todas as características da T2 Micro Vou te dar aqui memória Vou te dar, no nosso caso aqui que estamos usando a T2 Micro, vou te dar um VCP, vou te dar um jogo de memória, só que em algum momento, do nada, sem prévio aviso, eu posso precisar dessa máquina que eu estou te dando coisa que estava aqui na minha reserva. E se eu precisar dessa máquina, eu vou tomar ela de você, vou provisionar outra logo em seguida, conforme suas configurações. Mas, se você tiver algum serviço rodando aí, ele vai ser interrompido. Então, Instance Spot ou Firegate Spot, tudo que for Spot dentro da AWS, você usa aí no seu ambiente de desenvolvimento, tá bom? Onde você quer ter menos custo, porque estança spot ela é mais barata tá ela chega a ser aí muito mais barata que a estança sob demanda então é basicamente você vai pedir pra ele qual é o tipo que agora que você quer eu vou usar o sob demanda táeste momento, para o nosso teste, mas você pode usar o Spot que vai ser mais barato. Vou manter o kernel do Linux aqui normal. T2.8 não vou mudar. Capacidade desejada, eu quero um de 1, vou colocar aqui com máximo de 2, para não criar um grupo muito alto. Par de chave SSH é o mesmo que a gente já usou em outras aulas tamanho do volume não vou mexer a minha VPC é aquela VPC de teste eu quero que essa máquina seja pública, minhas máquinas sejam todas públicas no meu caso aqui eu vou manter aqui o acesso apenas a sub subredes públicas, tá bom? Vou usar um grupo de segurança existente, ele pede para eu colocar, vou colocar aquele público também que a gente já criou. Vou ligar a atribuição de IP público, eu poderia só deixar a configuração da subrede, mas eu vou ligar aqui porque eu já é uma subrede pública. Já é um IP público, eu já estou pedindo, então eu vou deixar ligado. Mais nada, vamos revisar. Quero sob demanda, Bluetooth auto-scaling, tudo certo. Clique em criar. Agora ele começa a criar o meu cluster, tá bom? Só que tem um ponto muito interessante aqui, ele não cria o cluster, esses recursos provisionados, como ele tem um controle grande sobre isso, ele não cria simplesmente como a gente solicitando uma máquina, ele cria lá no CloudFormation. O que é o CloudFormation? Ele é um recurso de criação na AWS, tá bom? Então, eu posso criar pilhas, colocar códigos em emos, solicitar, e de boa, ele é a melhor parte, né? Ele não é cobrado, ele cobra apenas aquilo que ele provisiona. Então, se ele provisionar um EC2, ele cobra apenas EC2, ele não cobra chamadas aqui no CloudFormation. Tá bom? Então, ele usa o CloudFormation para criar. Tá? Eu posso, objetivamente, colocar um modelo meu. Olha aqui, tá vendo? Por que que isso aqui é interessante? Imagina que você tem aí na sua empresa, ambiente de desenvolvimento, ambiente de desenvolvimento, ambiente de homologação, ambiente de produção. Vamos dizer que isso está separado em três contas diferentes. Objetivamente eu quero um ambiente de desenvolvimento com máquinas menores, eu quero um ambiente de homologação mais parecido com produção, e eu quero produção talvez aí com uma escalabilidade maior. Mas a receita de um pro outro é igual, vai mudar o que? Família de máquina, em desenvolvimento eu quero uma T2, em produção eu quero uma máquina maior, né? E por aí vai. Eu posso dentro da minha corporação ter repositórios que abrigam meus CloudFormations. Eu não precisaria vir na console e criar, eu poderia criar essa receita, está vendo, usando CloudFormation, eu poderia criar essa receita, seria em JSON, poderia ser com YAML, e eu posso fazer publicações direto no CloudFormation. Ao invés de eu chamar via console, via SDK, via pipeline, eu chamar ali os recursos do EC2, não, eu vou chamar, pegar essa receitinha, chamar no CloudFormation, e o CloudFormation vai executar, ele vai criar uma pilha e vai executar. Objetivamente, se eu tiver que tirar toda uma infra, eu não deleto tudo que o cluster criou, eu vou aqui e deleto a pilha. Automaticamente, quando eu deleto a pilha, tudo aquilo que ela provisionou, a AWS vai lá e retire e para de cobrar. Então, CloudFormation é uma estrutura muito importante da AWS, é uma estrutura muito recomendada para uso de provisionamento, ele é nativo da AWS, tá bom? Ele pode ser estando aqui como aqui no formato JSON, como ele também poderia estar no formato YAML, ok? Então, é isso. Eu tenho aqui um cluster criado, tá bom? tenho aqui um cluster criado, tá bom? Tá aqui dentro, não tenho nada muito especial nele, tá bom? Tudo que eu precisava aqui dentro estão criados, todos os recursos que ele provisionou do AWS mostra aqui, o CloudFormation, tá bom? Template de lançamento, grupo de auto-scale, tá aqui o cluster, tudo que eu preciso pra que o cluster funcione, ele já tem. E se eu tivesse outra conta e quisesse copiar esse modelo, ele seria exatamente o mesmo. Ó, instance type, entendeu que é parâmetro? Aqui eu tenho até 2.000 a produção seria apenas o valor do parâmetro que mudaria entende? todo o provisionamento seria o mesmo poderia copiar isso aqui e já usar em outro lugar inclusive tá bom? então vamos voltar aqui para o nosso cluster vamos ver o que ele provisionou para a gente aqui dentro desse 2 e olha ele provisionou aqui para mim uma máquina, eu tinha aqui no bastionhost e ele me provisionou aqui uma máquina numa instância do cluster API. Ela já vem com toda a configuração que eu preciso, com tudo aquilo que eu já defini de configuração no próprio cluster. Então, já tenho imagem, já tenho cluster, já tenho máquina. Já tenho aqui grupo de auto-scaling, que é onde ele está gerenciando a escalabilidade em máquina, dessas minhas máquinas. E agora, eu preciso, então, de fato, colocar o meu serviço. Então, volto aqui para o meu cluster. Se eu olhar aqui dentro do menu do amazon ecs eu tenho um item aqui chamado definições de tarefa ou task definition e eu vou criar aqui uma nova definição de tarefa bom vou falar que ela é do ec2 vou dar um nome para essa família Teste API Vou falar que é DC2 E aqui é onde começa a ficar um pouquinho complicado Quando eu uso máquinas DC2 Por quê? Porque como eu estou usando máquinas DC2 Eu tenho que saber quanto de memória Quanto de CPU eu vou pedir Que não comprometa o uso da máquina pelo sistema operacional, pelos outros recursos de máquina que vai estar rodando lá. Então, essa é a parte aqui onde a gente tem que controlar um pouco mais quando a gente usa a estratégia de ECS com EC2. Pensando aí que eu vou ter, sei lá, três máquinas rodando, né? E eu vou ter ali cinco, seis containers de início. Vai depender do como eu quero balancear essa carga para as minhas APIs. Então, eu vou ter que configurar muito bem ali quantos containers vão caber dentro de uma máquina, quantos containers vão escalar dentro de uma máquina, quando ele vai precisar de outra máquina, senão essa conta acaba ficando um pouco difícil e cara de manter. No nosso caso, ele está falando aqui de 3 GB de memória, mas minha máquina já não tem 3 GB, minha máquina só tem 1 GB, então, e ele está falando de uma CPU, mas, poxa, a minha máquina também só tem uma CPU, né? Então, eu vou usar metade para a minha taxa de finitivo. Vou colocar aqui como 0.5, tá? E aqui eu vou pôr apenas 512. Não põe o GB, somente 512 ele já entende que é mega. Então, eu quero meia CPU e quero metade da memória, tá bom? Aqui tem duas coisas, tá, pessoal? Função de execução, ele já cria uma função lá dentro do IAM, tá? Esse é esse task, esse é o cushion role, que é para pegar a imagem, para fazer tudo, ele já pega toda uma role que a AWS gerencia, mas a minha task poderia ter que acessar um S3, poderia ter que acessar um SQS, acessar um SNS, e eu não deveria, por boa prática, ter que incluir coisas nessa task, eu poderia criar uma função apartada, onde eu posso usar aqui. Nesse caso, neste momento, eu vou usar a mesma porque é para simples teste, tá bom? Mas eu peço para vocês que não façam isso. Quando você for fazer isso produtivamente ou na sua empresa, como a gente tem feito, crie uma role lá no IAM, crie as policies específicas para ele e traz aqui já qual que é a função e ele já vai atrelar as policies que forem herdadas, anexadas a esta função. Tá bom? Agora vem a parte do ECR dentro dessa task. Eu vou colocar aqui um nome para esse container. Eu vou chamar de testapi e eu tenho que ir lá no meu ecr pegar o ri da imagem que eu subi aqui dentro tá bom então vou jogar ele aqui dentro e tenho que falar qual que é a porta no meu caso a minha aplicação está entrando na 8080 tá bom então vou colocar aqui essa imagem essa é a porta do container o container é essencial daqui para baixo pessoal grupo de logs tá bom eu posso mudar aqui para vários modelos de grupos de log, eu posso mandar para um splunk, eu posso mandar log para fazer stream, para um kinesis, certo? Eu posso fazer vários tipos aqui de log, que ele está pronto, eu vou manter no Cloud Watch, que é onde a gente tem se mantido, tá? Então, vou continuar aqui, prefixo, CSS, posso mudar tudo aqui dentro, mas não vou mudar nada. Uma coisa importante é, eu poderia configurar um health check, o que seria isso? Ele só falaria que minha aplicação está em pé, se após ele instanciar o container, ele bater internamente nele um comandinho que eu colocar pra ver se a aplicação está de fato em pé se você está acostumado com aplicações java por exemplo eu tenho actuator que é muito utilizado para isso não poderia colocar o comandinho curr da minha rota né poderia colocar um intervalo um tempo limite falar que ele inicia vamos dizer que tem uma aplicação que demora 30 segundos para iniciar então eu vou falar que eu inicia, vamos dizer que eu tenho uma aplicação que demora aí 30 segundos para iniciar, então eu vou falar que eu quero half-check a partir do 40, por exemplo, entendeu? Para ele não procurar half-check antes e falar que a task não está em pé e ele fica aquela ali de sobe task, derruba task, porque ele não consegue testar a saúde. Para esse momento, nós não vamos usar a RevShare, tá bom? Não vou mexer mais nada aqui, eu posso colocar muito mais outras coisas, muito mais outras configurações, mas elas são todas opcionais. Para que funcione, é apenas isso. Clica em criar. Está aqui. Tem uma task definida. Se você clicar aqui, teste API, e ele criou uma versão dela aqui, quer dizer o que? Eu posso dentro de uma task definition ter várias versões de imagem, vamos dizer que você subiu para a produção a versão 1 da sua aplicação, aí daqui duas semanas você subiu a versão 2, se você está usando a contenderização na AWS, usando definições de tarefa, hoje você subiu a 1, daqui a duas semanas ele vai ter aqui uma versão 2, depois no próximo deploy uma 3, depois uma 4. E objetivamente, se eu tiver um incidente, um problema na implantação e produção, eu simplesmente venho aqui, mudo a família no serviço, que nós vamos criar agora, mudo a família no serviço, que nós vamos criar agora, muda a família no serviço e estabiliza o sistema, ou seja, ele tem esse histórico para a gente. Então, criei aqui uma definição de tarefa, criei aqui, ele já tem a versão recente. Vou voltar para o meu cluster, não tenho serviço nenhum, eu tenho uma tarefa, não tenho serviço nenhum eu tenho uma tarefa eu tenho uma máquina eu tenho uma imagem, eu tenho um container mas eu não tenho nada sendo gerenciado ainda vou criar clica aqui em criar serviço ou aqui neste cluster a estratégia você vai usar a do provedor lembra que a gente já aflegou lá que esse cluster é apenas esse dois então a estratég a do provedor lembra que a gente já fregou lá que esse cluster é apenas esse dois então a estratégia do provedor usar o padrão do cluster tá bom não vou mexer em nada aqui tipo de configuração é serviço família vou colocar aqui na testfi que a gente criou e a revisão aqui é aqui no serviço que eu coloco 1, 2, 3 conforme eu tiver eu posso atualizar vamos para 1 nome do serviço vou colocar como teste API também apenas uma tarefa desejada se eu colocar duas ele so ele sobe duas testes. Três testes, com base nesse mesmo item aqui. Lembrando que a gente só tem um jíter de memória aqui. Então, se eu colocasse aqui três testes, ele automaticamente tentaria escalar máquinas para poder aportar todas essas testes, tá bom? Vou manter apenas uma para a gente não ter nenhuma escalabilidade aqui. Não preciso mexer em mais nada, pessoal, tá bom? Vou apenas alterar aqui a minha PPC, a minha subrede, porque a minha subrede, minhas marcas estão somente no público, né? E não faz sentido eu colocar lá coisas que não estão na pública, porque senão ele não vai conseguir e também vou colocar o mesmo grupo de segurança pública bom que é o mesmo lado a minha aplicação não vou usar balanceadores como falei não estamos usando balanceadores neste momento não vou fazer escalabilidade eu posso usar o automático tá bom e aí eu coloco aqui ao mínimo máximo de tarefas coloca aqui ó nome de política colocando aqui por cpu tá vendo por memória então ele vai escalar a minha task dentro do meu da minha máquina c2 conforme o uso de memória ou CPU posso agrupar políticas inclusive, tá bom? não vou fazer isso não vou usar balanceamento, não vou usar serviço de auto scale para esse teste, mas essas são coisas opcionais que são importantíssimas você olhar dentro da sua empresa você vai precisar disso então com isso agora eu vou criar o meu serviço. Novamente, ele faz o quê? Ele entende que ele está provisionando um recurso para a gente. Então, ele vai novamente no CloudFormation. Eu já tinha a minha pilha aqui, do cluster, e agora ele está criando uma de serviço e está provisionando o serviço. Mesmo conceito, ele usaria a mesma configuração para outros ambientes se eu pegasse ali o modelo ou se eu estivesse trazendo esse modelo a partir de algum git, de alguma pipeline, por exemplo, também, tá bom? Então, é somente isso aqui que ele está provisionando. Se a gente for olhar aqui dentro, ele já tem um serviço aqui que ele já provisionou para a gente. Não quer dizer que ainda não está rodando tudo, porque ele ainda tem coisas a criar. Mas olha, já tem coisas acontecendo aqui para a gente. Se olha, já tem coisas acontecendo aqui pra gente. Se eu clicar no serviço, eu consigo ter algumas coisas aqui dentro. Por exemplo, daqui a pouco, isso aqui vem do CloudWatch, né? Utilização de CPU, utilização de memória, logs, ó, já tá acontecendo. Minha aplicação já subiu lá dentro, tá vendo? As implantações, ele já fez uma implantação aqui, os eventos que aconteceram, né, de publicação, posso olhar aqui, mas o mais interessante pra gente é tarefa, tá bom? Que é aqui, de fato, aonde as coisas estão acontecendo, tá bom? Que é aqui de fato aonde as coisas estão acontecendo, tá bom? Então aqui está a minha task que eu configurei, ele está falando, olha, ela tem essa família aqui, ela tem uma instância, vamos olhar lá nessa task? Está aqui, olha. E roda dentro de uma instância, tá bom? Um Linux. Opa, olha só uma coisa interessante, pessoal. 0.5, está vendo? Ele já mostra quanto eu tenho de CPU, quanto eu tenho de memória, certo? Ele está lá subindo bonito na minha máquina. Vamos ver nossas máquinas S2? Estão aqui dentro. Vamos testar se esse serviço está acontecendo? Eu vou acessar via baixo, bom? Para a gente continuar naquele modelinho que a gente já tinha feito de acesso a SSH. Eu quero acessar essa máquina via SSH. Ela não é uma máquina gerenciada por mim, então eu não tenho... teria que configurar muitas políticas para que eu pudesse estar acessando ela de forma à vontade. Então a gente não fez algumas configurações apenas por acelerar, vamos fazer por baixo on-roof, tá? Então, primeira coisa que eu quero saber é qual instância que ele tá, ele tá falando que tá nessa instância aqui, se eu clicar nela já vou pro EC2. Vou acessar o SSH dessa máquina, tá aqui. dessa máquina aqui eu coloquei um comando bem já está aqui dentro tá e olha a wf ela colocou aqui ó os agentes dele para fazer acompanhamento de serviço que a partir disso que elas controlam o programa está rodando aqui dentro em para o seu pra poder controlar todas as configurações que essa máquina máquina do excesso né então ele está fazendo envio de métricas ele tá fazendo várias coisas aqui dentro então vamos continuar com o nosso comandinho Então, vou lá. Docker, exec, zitter. Acho que é o container ID. Container ID. BIM. Barra. Dash. Para eu entrar dentro do container. Entrei dentro do container. Agora, eu vou chamar a minha API. Tá bom? Vou chamar ela aqui e vou ver se ela de fato está funcionando. Chamei. Olha, se você conseguir ver, ele devolveu um resultadozinho aqui pra mim bem vindo com o nomezinho que eu passei aqui foi teste vamos ver outro desse então vou colocar aqui só que em vez de teste vou por meu nome vou colocar a mina d'água mina W. Opa! Vamos lá? Aqui, ó, o retorno da API tem vindo a mina W. Certo? Vamos ver mais alguns detalhes. Vamos colocar um "-v", aqui, pra gente ter mais alguns detalhes do curto. A mesma coisa. Viu? Bateu certinho É um comando E temos aí o resultado Bem-vindo a minha dada Estamos dentro de um container Estamos dentro de um container Ele já mostra aqui 2CS E é basicamente isso Tá pessoal? Então Essa é a matéria de E é basicamente isso, pessoal. Essa é a matéria de ECS com EC2. É assim que eu provisiono uma máquina e um serviço para uso dentro da minha corporação e a gente vai explorar ainda o ECS com o Fargate que vai ser uma outra forma bem legal também de trabalharmos as nossas aplicações mas agora vai ser um pouquinho mais simples então vamos até a próxima muito obrigado por termos aguardado até aqui mais uma vez, boa sorte