[{"content":"Eaí pessoal!\nHoje queria trazer um tópico muito importante e que me causou certa confusão quando iniciei meus estudos. Só fui ter clareza sobre o assunto quando precisei implementar em um projeto real.\nQuando vamos projetar redes na AWS, uma das decisões mais importantes é definir como diferentes ambientes irão se comunicar de forma segura, escalável e econômica.\nA AWS oferece diversas opções para conectividade privada entre recursos, porém três serviços costumam gerar dúvidas frequentes:\nVPC Peering AWS Transit Gateway AWS PrivateLink Logo de cara, eles parecem resolver o mesmo problema, porém cada um foi criado para cenários completamente diferentes.\nNeste artigo vamos analisar quando utilizar cada solução, suas vantagens, limitações e exemplos práticos encontrados no dia a dia de arquitetos de cloud.\nApresentando o problema: Imagine uma empresa com os seguintes ambientes:\nConta de Produção Conta de Homologação Conta de Desenvolvimento Conta de Segurança Conta de Serviços Compartilhados Cada ambiente possui sua própria VPC e agora surge a necessidade de comunicação entre eles. A pergunta é:\nComo conectar essas VPCs da forma correta?\nA resposta depende do objetivo da comunicação.\nNem sempre a melhor solução é conectar toda a rede. Em muitos casos basta expor apenas um serviço específico.\nÉ justamente aí que aparecem as diferenças entre Peering, Transit Gateway e PrivateLink.\nVPC Peering O VPC Peering cria uma conexão privada direta entre duas VPCs. Após a criação da conexão, as instâncias podem se comunicar usando IP privado.\nComo funciona VPC A \u0026lt;-------\u0026gt; VPC B O tráfego permanece na rede da AWS e não passa pela internet.\nQuando usar O Peering funciona melhor quando existem poucas VPCs que precisam se comunicar. Exemplos:\nAmbiente de Produção acessando uma VPC de Banco de Dados Duas aplicações que compartilham serviços internos Comunicação simples entre contas diferentes Vantagens Simples de configurar Baixa latência Sem ponto central de falha Não requer appliance ou gateway adicional Limitações Não possui roteamento transitivo Considere:\nVPC A \u0026lt;--\u0026gt; VPC B VPC B \u0026lt;--\u0026gt; VPC C A VPC A não consegue acessar a VPC C através da VPC B.\nÉ necessário criar outro Peering:\nVPC A \u0026lt;--\u0026gt; VPC C Crescimento exponencial Com poucas VPCs funciona muito bem, mas imagine 20 VPCs totalmente conectadas.\nA quantidade de conexões cresce rapidamente.\nN x (N-1) / 2 20 VPCs = 190 Peerings\nA administração se torna complexa.\nCenário real Uma empresa possui:\nVPC Aplicação VPC Banco de Dados Apenas essas duas redes precisam conversar.\nNeste caso, o VPC Peering é geralmente a solução mais simples e econômica.\nAWS Transit Gateway O Transit Gateway foi criado para resolver o problema de escala do Peering.\nEle funciona como um hub central de conectividade.\nComo funciona VPC A | | VPC B ---- TGW ---- VPC C | | VPC D Todas as VPCs se conectam ao Transit Gateway e o roteamento ocorre através dele.\nQuando usar Ideal quando existem muitas VPCs. Exemplos:\nAmbientes multi-account AWS Organizations Landing Zones Ambientes corporativos grandes Vantagens Escalabilidade Adicionar uma nova VPC exige apenas uma nova attachment.\nNão é necessário criar dezenas de Peerings.\nRoteamento transitivo Diferentemente do Peering:\nVPC A -\u0026gt; TGW -\u0026gt; VPC B VPC A -\u0026gt; TGW -\u0026gt; VPC C Todas podem se comunicar conforme as tabelas de rota permitirem.\nIntegração com redes on-premises O Transit Gateway pode concentrar conexões provenientes de:\nVPN Site-to-Site AWS Direct Connect SD-WAN Governança Muito útil para equipes de plataforma e Cloud Center of Excellence.\nPermite controle centralizado de conectividade.\nLimitações Custo Possui cobrança por:\nAttachments Volume de tráfego processado Para ambientes pequenos pode sair mais caro que Peering.\nComplexidade Exige entendimento de:\nRoute Tables do TGW Attachments Segmentação de tráfego Cenário real Uma empresa possui:\n50 contas AWS Ambiente de Produção Homologação Desenvolvimento Segurança Shared Services Criar Peerings entre todas as VPCs seria inviável. O Transit Gateway se torna a arquitetura natural.\nAWS PrivateLink O PrivateLink resolve um problema diferente.\nEle não foi criado para conectar redes, ele foi criado para expor serviços. Essa é a principal diferença que costuma confundir candidatos de certificação.\nComo funciona Imagine que existe uma API rodando na VPC A.\nA VPC B precisa consumir essa API.\nCom PrivateLink:\nConsumidor (VPC B) | | Endpoint | | PrivateLink | | NLB | | Serviço (VPC A) O consumidor acessa apenas o serviço, ele não ganha acesso à rede inteira.\nQuando usar Sempre que você quiser compartilhar um serviço sem compartilhar a VPC.\nExemplos:\nAPIs internas Serviços SaaS Banco de dados corporativo Ferramentas compartilhadas Vantagens Menor superfície de ataque O cliente não enxerga:\nSub-redes Rotas Recursos internos Apenas o serviço publicado.\nIsolamento Não existe conectividade completa entre VPCs.\nApenas acesso ao endpoint definido.\nCompartilhamento entre contas Muito utilizado por provedores SaaS.\nLimitações Não substitui conectividade de rede Se você precisa acessar múltiplos recursos da VPC remota, o PrivateLink provavelmente não é a solução correta.\nRequer NLB O serviço publicado normalmente fica atrás de um Network Load Balancer.\nIsso adiciona componentes e custos.\nCenário real Uma equipe central disponibiliza um serviço corporativo de autenticação.\nDezenas de contas AWS precisam consumir esse serviço. Permitir acesso total à VPC seria um risco.\nCom PrivateLink cada consumidor acessa somente a API necessária.\nComparação rápida Característica VPC Peering Transit Gateway PrivateLink Conecta redes completas Sim Sim Não Compartilha apenas um serviço Não Não Sim Escala para dezenas de VPCs Não Sim Sim Roteamento transitivo Não Sim Não aplicável Integração com On-Premises Limitada Excelente Não Complexidade Baixa Média/Alta Média Melhor para Poucas VPCs Muitas VPCs Compartilhar serviços O que costuma cair na certificação Uma forma simples de memorizar:\nPoucas VPCs? Use VPC Peering.\nMuitas VPCs? Use Transit Gateway.\nPrecisa compartilhar apenas uma aplicação ou API? Use PrivateLink.\nConclusão A escolha entre VPC Peering, Transit Gateway e PrivateLink não depende apenas de conectividade, mas principalmente do modelo arquitetural desejado.\nO VPC Peering é excelente para cenários simples e diretos.\nO Transit Gateway se torna essencial quando a quantidade de VPCs cresce e a gestão de conectividade precisa ser centralizada.\nJá o PrivateLink é a melhor opção quando o objetivo é compartilhar serviços específicos sem expor toda a rede.\nEm projetos corporativos modernos é comum encontrar os três serviços coexistindo:\nTransit Gateway conectando ambientes corporativos VPC Peerings em cenários específicos de baixa complexidade PrivateLink expondo APIs e serviços compartilhados entre contas Entender essa diferença é fundamental tanto para passar na certificação AWS Solutions Architect Associate quanto para construir arquiteturas escaláveis e seguras no mundo real.\n","permalink":"https://www.leocardozo.com/posts/vpc-peering-tgw-privatelink/","summary":"\u003cp\u003eEaí pessoal!\u003c/p\u003e\n\u003cp\u003eHoje queria trazer um tópico muito importante e que me causou certa confusão quando iniciei meus estudos. Só fui ter clareza sobre o assunto quando precisei implementar em um projeto real.\u003c/p\u003e\n\u003cp\u003eQuando vamos projetar redes na AWS, uma das decisões mais importantes é definir como diferentes ambientes irão se comunicar de forma segura, escalável e econômica.\u003c/p\u003e\n\u003cp\u003eA AWS oferece diversas opções para conectividade privada entre recursos, porém três serviços costumam gerar dúvidas frequentes:\u003c/p\u003e","title":"Diferença entre VPC Peering, Transit Gateway e PrivateLink"},{"content":"Quando uma empresa vai iniciar sua jornada na AWS sem o apoio de uma consultoria ou com uma equipe madura, normalmente tudo começa em uma única conta. Os primeiros serviços são criados rapidamente, os times possuem acesso administrativo e a preocupação principal é colocar os serviços em produção.\nNão foi diferente por aqui.\nQuando identificamos a oportunidade de iniciar nossa jornada em ambiente cloud, mesmo com algum apoio, não identificamos a necessidade de termos um ambiente multi-account.\nPorém, à medida que o ambiente vai crescendo, começamos a perceber novos desafios:\nComo separar ambientes de produção e homologação? Como controlar custos por área de negócio? Como impedir que usuários criem recursos fora dos padrões corporativos? Como garantir governança sem limitar a produtividade dos times? Foi com a necessidade de resolver essas questões que me aprofundei nos estudos em AWS Organizations e ele se mostrou uma peça fundamental. Neste artigo veremos como estruturar múltiplas contas AWS desde o início, exemplos reais de Service Control Policies (SCPs) e as principais práticas de governança utilizadas em ambientes corporativos.\nO que é AWS Organizations? O AWS Organizations é um serviço que permite gerenciar diversas contas AWS de forma centralizada. Em vez de administrar cada conta individualmente, é possível agrupá-las em uma única organização e aplicar políticas de governança em larga escala.\nNa prática, isso permite:\nCentralização do faturamento Delegação de acesso entre equipes Controle de segurança Aplicação de políticas corporativas Isolamento de ambientes A principal vantagem é que cada conta continua sendo uma fronteira de segurança independente, reduzindo o impacto de erros operacionais e problemas de configuração.\nO erro mais comum: separar tudo apenas por VPC Muitas empresas iniciam sua arquitetura criando apenas VPCs separadas para diferentes ambientes:\nProdução Homologação Desenvolvimento Embora funcione inicialmente, essa estratégia apresenta limitações pois todos os recursos continuam compartilhando:\nLimites de serviço Faturamento IAM Configurações globais Além disso, um erro administrativo pode afetar todos os ambientes simultaneamente. Por isso, a recomendação da AWS é utilizar múltiplas contas como unidade primária de isolamento.\nEstruturando uma organização AWS do zero Uma estrutura simples e eficiente para pequenas e médias empresas pode seguir o modelo abaixo:\nRoot │ ├── Security OU │ ├── Log Archive │ └── Security Tooling │ ├── Network OU │ └── Networking Hub │ ├── Shared Services OU │ ├── Sandbox │ └── Shared Services │ ├── Wokloads OU │ ├── DEV │ ├── HML │ └── PRD │ └── Management Account Security OU Contém contas responsáveis por:\nAWS Security Hub\nAWS GuardDuty\nAWS Config\nAWS IAM Identity Center\nCentralização de logs\nNetwork OU Responsável por serviços compartilhados:\nTransit Gateway\nDirect Connect\nDNS corporativo\nFerramentas de backup\nFerramentas de monitoramento\nWorkloads OU Hospeda os workloads (PRD, DEV e etc).\nShared Services OU Contém ambientes de Sandbox e serviços compartilhados. Normalmente possui políticas mais flexíveis para permitir experimentação.\nManagement Account Cada aplicação crítica pode possuir sua própria conta, facilitando:\nGovernança Custos Segurança Auditoria Controle de custos utilizando múltiplas contas Um dos maiores benefícios do AWS Organizations é a visibilidade financeira. Sem múltiplas contas, identificar quem está consumindo recursos torna-se complexo, mas com uma estrutura organizada, é possível responder rapidamente perguntas como:\nQuanto o ambiente de produção consumiu este mês? Qual aplicação está gerando maior custo? Qual equipe aumentou o consumo de armazenamento? Além disso, o Consolidated Billing permite consolidar toda a cobrança da organização em uma única fatura. Isso simplifica bastante o gerenciamento financeiro.\nEntendendo o papel das SCPs Uma dúvida comum é acreditar que uma SCP concede permissões. Na verdade, ela faz exatamente o contrário. Uma Service Control Policy define o limite máximo do que pode ser executado dentro de uma conta, mesmo que um usuário tenha permissões administrativas, uma SCP pode impedir determinadas ações. Pense na SCP como uma camada de proteção corporativa.\nExemplo 1: Bloquear exclusão do CloudTrail Uma prática comum é impedir que usuários desativem mecanismos de auditoria.\n{ \u0026#34;Version\u0026#34;: \u0026#34;2012-10-17\u0026#34;, \u0026#34;Statement\u0026#34;: [ { \u0026#34;Effect\u0026#34;: \u0026#34;Deny\u0026#34;, \u0026#34;Action\u0026#34;: [ \u0026#34;cloudtrail:DeleteTrail\u0026#34;, \u0026#34;cloudtrail:StopLogging\u0026#34; ], \u0026#34;Resource\u0026#34;: \u0026#34;*\u0026#34; } ] } Esse controle reduz significativamente o risco de perda de rastreabilidade durante incidentes.\nExemplo 2: Restringir regiões autorizadas Muitas organizações operam apenas em algumas regiões específicas. Uma SCP pode bloquear implantações fora dessas localidades.\n{ \u0026#34;Version\u0026#34;: \u0026#34;2012-10-17\u0026#34;, \u0026#34;Statement\u0026#34;: [ { \u0026#34;Sid\u0026#34;: \u0026#34;DenyOutsideApprovedRegions\u0026#34;, \u0026#34;Effect\u0026#34;: \u0026#34;Deny\u0026#34;, \u0026#34;NotAction\u0026#34;: [ \u0026#34;iam:*\u0026#34;, \u0026#34;route53:*\u0026#34; ], \u0026#34;Resource\u0026#34;: \u0026#34;*\u0026#34;, \u0026#34;Condition\u0026#34;: { \u0026#34;StringNotEquals\u0026#34;: { \u0026#34;aws:RequestedRegion\u0026#34;: [ \u0026#34;sa-east-1\u0026#34;, \u0026#34;us-east-1\u0026#34; ] } } } ] } Essa política ajuda a evitar recursos criados acidentalmente em regiões não aprovadas.\nExemplo 3: Impedir exclusão de backups Uma das SCPs mais valiosas em ambientes corporativos.\n{ \u0026#34;Version\u0026#34;: \u0026#34;2012-10-17\u0026#34;, \u0026#34;Statement\u0026#34;: [ { \u0026#34;Effect\u0026#34;: \u0026#34;Deny\u0026#34;, \u0026#34;Action\u0026#34;: [ \u0026#34;backup:DeleteBackupVault\u0026#34;, \u0026#34;backup:DeleteRecoveryPoint\u0026#34; ], \u0026#34;Resource\u0026#34;: \u0026#34;*\u0026#34; } ] } Esse tipo de proteção é extremamente útil em cenários de ransomware e recuperação de desastres.\nExemplo 4: Bloquear contas Sandbox de criar recursos caros Muitas empresas criam contas Sandbox para experimentação. Sem controles, usuários podem provisionar instâncias muito grandes ou serviços de alto custo. Uma SCP pode limitar a criação de determinados recursos e reduzir desperdícios financeiros.\n{ \u0026#34;Version\u0026#34;: \u0026#34;2012-10-17\u0026#34;, \u0026#34;Statement\u0026#34;: [ { \u0026#34;Sid\u0026#34;: \u0026#34;DenyExpensiveEC2Instances\u0026#34;, \u0026#34;Effect\u0026#34;: \u0026#34;Deny\u0026#34;, \u0026#34;Action\u0026#34;: \u0026#34;ec2:RunInstances\u0026#34;, \u0026#34;Resource\u0026#34;: \u0026#34;arn:aws:ec2:*:*:instance/*\u0026#34;, \u0026#34;Condition\u0026#34;: { \u0026#34;StringNotEquals\u0026#34;: { \u0026#34;ec2:InstanceType\u0026#34;: [ \u0026#34;t3.micro\u0026#34;, \u0026#34;t3.small\u0026#34;, \u0026#34;t3.medium\u0026#34;, \u0026#34;t2.micro\u0026#34;, \u0026#34;t2.small\u0026#34; ] } } }, { \u0026#34;Sid\u0026#34;: \u0026#34;DenyExpensiveRDSInstances\u0026#34;, \u0026#34;Resource\u0026#34;: \u0026#34;arn:aws:rds:*:*:db:*\u0026#34;, \u0026#34;Effect\u0026#34;: \u0026#34;Deny\u0026#34;, \u0026#34;Action\u0026#34;: \u0026#34;rds:CreateDBInstance\u0026#34;, \u0026#34;Condition\u0026#34;: { \u0026#34;StringNotEquals\u0026#34;: { \u0026#34;rds:DatabaseClass\u0026#34;: [ \u0026#34;db.t3.micro\u0026#34;, \u0026#34;db.t3.small\u0026#34;, \u0026#34;db.t3.medium\u0026#34; ] } } }, { \u0026#34;Sid\u0026#34;: \u0026#34;DenyExpensiveServices\u0026#34;, \u0026#34;Effect\u0026#34;: \u0026#34;Deny\u0026#34;, \u0026#34;Action\u0026#34;: [ \u0026#34;redshift:CreateCluster\u0026#34;, \u0026#34;elasticmapreduce:RunJobFlow\u0026#34;, \u0026#34;sagemaker:CreateTrainingJob\u0026#34;, \u0026#34;sagemaker:CreateEndpoint\u0026#34; ], \u0026#34;Resource\u0026#34;: \u0026#34;*\u0026#34; } ] } Governança além das SCPs Embora as SCPs sejam importantes, elas representam apenas uma parte da estratégia de governança.\nUma arquitetura madura normalmente inclui:\nServiço Função AWS Config Monitora conformidade de recursos AWS Security Hub Centraliza alertas de segurança AWS GuardDuty Detecta atividades suspeitas IAM Identity Center Gerencia identidade AWS Backup Centraliza backups Boas práticas para ambientes corporativos Após trabalhar com ambientes multi-account, algumas recomendações se destacam:\nNão utilize a conta Management para hospedar workloads. Mantenha uma conta exclusiva para logs e auditoria. Utilize OUs para refletir políticas de negócio e não apenas departamentos. Aplique SCPs inicialmente em modo controlado para evitar impactos inesperados. Centralize identidade através do IAM Identity Center. Implemente uma estratégia de tagging obrigatória desde o início. Automatize a criação de contas utilizando o AWS Control Tower sempre que possível. Revise regularmente contas não utilizadas e ambientes Sandbox. Conclusão O AWS Organizations é muito mais do que uma ferramenta de agrupamento de contas. Ele representa a base para uma estratégia escalável de segurança, governança e gestão financeira dentro da AWS.\nEmpresas que estruturam corretamente sua organização desde o início evitam problemas comuns relacionados a acesso, auditoria, custos e conformidade.\nA combinação de múltiplas contas, Organizational Units bem definidas e SCPs cuidadosamente planejadas cria uma fundação sólida para o crescimento da plataforma em longo prazo.\nQuanto mais cedo essa estrutura for implementada, menor será o esforço para manter o ambiente organizado e seguro à medida que novas aplicações e equipes forem surgindo.\n","permalink":"https://www.leocardozo.com/posts/aws-organizations-na-pratica/","summary":"\u003cp\u003eQuando uma empresa vai iniciar sua jornada na AWS sem o apoio de uma consultoria ou com uma equipe madura, normalmente tudo começa em uma única conta. Os primeiros serviços são criados rapidamente, os times possuem acesso administrativo e a preocupação principal é colocar os serviços em produção.\u003c/p\u003e\n\u003cp\u003eNão foi diferente por aqui.\u003c/p\u003e\n\u003cp\u003eQuando identificamos a oportunidade de iniciar nossa jornada em ambiente cloud, mesmo com algum apoio, não identificamos a necessidade de termos um ambiente multi-account.\u003c/p\u003e","title":"AWS Organizations na prática"},{"content":"Aprendizados na implantação do AWS Direct Connect + Transit Gateway A adoção de ambientes híbridos deixou de ser exceção e passou a ser parte da estratégia de muitas empresas. Integrar datacenters on-premises com a nuvem exige muito mais do que apenas criar recursos na cloud: exige entendimento profundo de redes, roteamento e conectividade.\nRecentemente, trabalhando em um cenário utilizando AWS Direct Connect integrado ao AWS Transit Gateway, ficou ainda mais evidente como o conhecimento de redes faz diferença na estabilidade e no funcionamento correto da arquitetura.\nO projeto parecia simples no início: permitir comunicação entre ambientes on-premises e múltiplas VPCs na AWS através de uma conexão privada. Porém, conforme a topologia evolui, pequenos detalhes de rede começam a impactar diretamente o funcionamento do ambiente.\nAlguns pontos que se mostraram críticos durante a configuração:\nPlanejamento correto dos blocos CIDR para evitar overlap de redes. Entendimento do fluxo de roteamento entre: Route Tables das subnets Route Tables do Transit Gateway Propagations e Associations do TGW Rotas do ambiente on-premises Controle do tráfego assimétrico, principalmente quando existe firewall entre os ambientes. Entendimento de como o Direct Connect encaminha o tráfego através do Virtual Interface (VIF) e BGP. Um ponto interessante é que, em muitos casos, o problema não está na AWS em si, mas sim em conceitos tradicionais de rede:\nrota de retorno / assimetria de tráfego propagação de anúncios BGP firewall stateful NAT MTU Durante os testes, por exemplo, foi possível validar cenários onde:\na EC2 conseguia alcançar interfaces do Transit Gateway, o Direct Connect estava operacional, mas o tráfego não retornava corretamente do ambiente on-premises por falta de rota de retorno.\nEsse tipo de situação reforça algo importante: cloud não elimina a necessidade de conhecimento de infraestrutura e redes. Na prática, ela exige ainda mais entendimento desses conceitos.\nO AWS Transit Gateway facilita muito a construção de arquiteturas centralizadas, principalmente em cenários multi-VPC e híbridos, mas ele também adiciona uma nova camada de roteamento que precisa ser compreendida em detalhes.\nAlguns aprendizados importantes desse projeto:\nSempre validar o fluxo completo de ida e volta do tráfego. Mapear claramente todas as tabelas de rota envolvidas. Documentar propagations e associations do TGW. Utilizar ferramentas como: traceroute, Reachability Analyzer, VPC Flow Logs, tcpdump, testes de conectividade ponta a ponta. Pensar na topologia antes da implementação para evitar complexidade desnecessária.\nNo final, projetos híbridos mostram como conhecimentos clássicos de redes continuam extremamente relevantes mesmo em ambientes modernos de cloud computing.\nAWS, Direct Connect e Transit Gateway são ferramentas poderosas, mas a base continua sendo networking.\n","permalink":"https://www.leocardozo.com/posts/redes-hibridas/","summary":"\u003ch2 id=\"aprendizados-na-implantação-do-aws-direct-connect--transit-gateway\"\u003eAprendizados na implantação do AWS Direct Connect + Transit Gateway\u003c/h2\u003e\n\u003cp\u003eA adoção de ambientes híbridos deixou de ser exceção e passou a ser parte da estratégia de muitas empresas. Integrar datacenters on-premises com a nuvem exige muito mais do que apenas criar recursos na cloud: exige entendimento profundo de redes, roteamento e conectividade.\u003c/p\u003e\n\u003cp\u003eRecentemente, trabalhando em um cenário utilizando AWS Direct Connect integrado ao AWS Transit Gateway, ficou ainda mais evidente como o conhecimento de redes faz diferença na estabilidade e no funcionamento correto da arquitetura.\u003c/p\u003e","title":"A importância do conhecimento de redes em ambientes híbridos"},{"content":"Tutorial: Gerenciamento de Tablespaces no Oracle Database O que é um Tablespace? Um tablespace é a unidade lógica de armazenamento no Oracle Database. Ele agrupa logicamente segmentos de dados (tabelas, índices, etc.) e é composto fisicamente por um ou mais datafiles no sistema operacional.\nTodo banco Oracle possui ao menos os seguintes tablespaces padrão:\nTablespace Descrição SYSTEM Dicionário de dados e objetos internos do Oracle SYSAUX Componentes auxiliares (AWR, statspack, etc.) TEMP Operações temporárias (sorts, joins, group by) UNDOTBS1 Armazenamento de dados de undo (rollback) USERS Tablespace padrão para objetos de usuários Listando Tablespaces Listar todos os tablespaces do banco SELECT tablespace_name, status, contents, logging, extent_management, segment_space_management FROM dba_tablespaces ORDER BY tablespace_name; Listar os datafiles associados a cada tablespace SELECT tablespace_name, file_name, bytes / 1024 / 1024 AS tamanho_mb, autoextensible, maxbytes / 1024 / 1024 AS tamanho_max_mb FROM dba_data_files ORDER BY tablespace_name, file_name; Listar tempfiles (tablespaces temporários) SELECT tablespace_name, file_name, bytes / 1024 / 1024 AS tamanho_mb, autoextensible FROM dba_temp_files ORDER BY tablespace_name; Verificando Uso e Espaço Livre Ver espaço livre por tablespace SELECT df.tablespace_name AS tablespace, ROUND(df.total_mb, 2) AS total_mb, ROUND(fs.free_mb, 2) AS livre_mb, ROUND(df.total_mb - fs.free_mb, 2) AS usado_mb, ROUND((df.total_mb - fs.free_mb) / df.total_mb * 100, 2) AS pct_usado FROM (SELECT tablespace_name, SUM(bytes) / 1024 / 1024 AS total_mb FROM dba_data_files GROUP BY tablespace_name) df JOIN (SELECT tablespace_name, SUM(bytes) / 1024 / 1024 AS free_mb FROM dba_free_space GROUP BY tablespace_name) fs ON df.tablespace_name = fs.tablespace_name ORDER BY pct_usado DESC; Atenção: Tablespaces com mais de 85% de uso merecem atenção imediata para evitar erros como ORA-01653: unable to extend table.\nVer detalhes completos incluindo autoextend SELECT d.tablespace_name, d.file_name, ROUND(d.bytes / 1024 / 1024, 2) AS tamanho_atual_mb, d.autoextensible, ROUND(d.maxbytes / 1024 / 1024, 2) AS tamanho_max_mb, ROUND(f.bytes / 1024 / 1024, 2) AS espaco_livre_mb FROM dba_data_files d LEFT JOIN dba_free_space f ON d.file_id = f.file_id ORDER BY d.tablespace_name; Aumentando Tablespaces Existem duas formas principais de aumentar um tablespace:\nRedimensionar um datafile existente (resize) Adicionar um novo datafile ao tablespace Opção 1: Redimensionar um datafile existente Use este comando quando quiser aumentar o tamanho de um arquivo já existente:\n-- Sintaxe ALTER DATABASE DATAFILE \u0026#39;\u0026lt;caminho_completo_do_arquivo\u0026gt;\u0026#39; RESIZE \u0026lt;novo_tamanho\u0026gt;; -- Exemplo: aumentar para 2 GB ALTER DATABASE DATAFILE \u0026#39;/u01/oradata/ORCL/users01.dbf\u0026#39; RESIZE 2048M; Verifique o caminho correto do datafile com a query dba_data_files antes de executar.\nOpção 2: Aumentar tablespace temporário Para tablespaces do tipo TEMP, use TEMPFILE no lugar de DATAFILE:\nALTER DATABASE TEMPFILE \u0026#39;/u01/oradata/ORCL/temp01.dbf\u0026#39; RESIZE 1024M; Habilitando Autoextend O autoextend permite que o Oracle expanda automaticamente o datafile quando o espaço acabar, até um limite definido.\nAtivar autoextend em um datafile existente -- Sintaxe ALTER DATABASE DATAFILE \u0026#39;\u0026lt;caminho_do_arquivo\u0026gt;\u0026#39; AUTOEXTEND ON NEXT \u0026lt;incremento\u0026gt; MAXSIZE \u0026lt;tamanho_maximo\u0026gt;; -- Exemplo: incremento de 512 MB até o máximo de 10 GB ALTER DATABASE DATAFILE \u0026#39;/u01/oradata/ORCL/users01.dbf\u0026#39; AUTOEXTEND ON NEXT 512M MAXSIZE 10240M; Desativar autoextend ALTER DATABASE DATAFILE \u0026#39;/u01/oradata/ORCL/users01.dbf\u0026#39; AUTOEXTEND OFF; Parâmetros do Autoextend Parâmetro Descrição NEXT Tamanho do incremento de cada extensão automática MAXSIZE Tamanho máximo que o arquivo pode atingir UNLIMITED Permite crescimento até o limite do sistema de arquivos (cuidado!) Adicionando Novos Datafiles Quando não é possível (ou desejável) aumentar os arquivos existentes, a melhor alternativa é adicionar um novo datafile ao tablespace.\nAdicionar datafile a um tablespace existente -- Sintaxe ALTER TABLESPACE \u0026lt;nome_tablespace\u0026gt; ADD DATAFILE \u0026#39;\u0026lt;caminho_novo_arquivo\u0026gt;\u0026#39; SIZE \u0026lt;tamanho\u0026gt; AUTOEXTEND ON NEXT \u0026lt;incremento\u0026gt; MAXSIZE \u0026lt;maximo\u0026gt;; -- Exemplo: adicionar novo datafile de 1 GB ao tablespace USERS ALTER TABLESPACE USERS ADD DATAFILE \u0026#39;/u01/oradata/ORCL/users02.dbf\u0026#39; SIZE 1024M AUTOEXTEND ON NEXT 256M MAXSIZE 4096M; Adicionar tempfile a tablespace temporário ALTER TABLESPACE TEMP ADD TEMPFILE \u0026#39;/u01/oradata/ORCL/temp02.dbf\u0026#39; SIZE 512M AUTOEXTEND ON NEXT 128M MAXSIZE 2048M; Boas Práticas Monitoramento Crie alertas para tablespaces que ultrapassem 80% de uso. Use a view dba_tablespace_usage_metrics para uma visão consolidada em bancos 11g+: SELECT tablespace_name, ROUND(used_space * 8192 / 1024 / 1024, 2) AS usado_mb, ROUND(tablespace_size * 8192 / 1024 / 1024, 2) AS total_mb, ROUND(used_percent, 2) AS pct_usado FROM dba_tablespace_usage_metrics ORDER BY used_percent DESC; Organização dos Datafiles Separe datafiles em diferentes discos para melhorar I/O. Evite usar MAXSIZE UNLIMITED; defina sempre um limite seguro. Prefira datafiles menores e múltiplos em vez de um único arquivo enorme. Nomeie os arquivos de forma consistente: \u0026lt;tablespace\u0026gt;NN.dbf (ex: users01.dbf, users02.dbf). Erros Comuns e Soluções Erro Oracle Causa provável Solução ORA-01653 Tablespace sem espaço livre Aumentar datafile ou adicionar novo ORA-01652 Tablespace TEMP sem espaço Aumentar tempfile ORA-19502 Erro ao escrever no datafile Verificar espaço em disco no SO ORA-01144 Tamanho do arquivo excede o limite Usar múltiplos datafiles menores Permissões necessárias: Para executar os comandos deste tutorial, o usuário precisa ter o privilégio DBA ou, no mínimo, ALTER TABLESPACE e acesso às views DBA_DATA_FILES, DBA_FREE_SPACE e DBA_TABLESPACES.\n","permalink":"https://www.leocardozo.com/tutoriais/ajustar-tablespaces-oracle/","summary":"\u003ch1 id=\"tutorial-gerenciamento-de-tablespaces-no-oracle-database\"\u003eTutorial: Gerenciamento de Tablespaces no Oracle Database\u003c/h1\u003e\n\u003chr\u003e\n\u003ch2 id=\"o-que-é-um-tablespace\"\u003eO que é um Tablespace?\u003c/h2\u003e\n\u003cp\u003eUm \u003cstrong\u003etablespace\u003c/strong\u003e é a unidade lógica de armazenamento no Oracle Database. Ele agrupa logicamente segmentos de dados (tabelas, índices, etc.) e é composto fisicamente por um ou mais \u003cstrong\u003edatafiles\u003c/strong\u003e no sistema operacional.\u003c/p\u003e\n\u003cp\u003eTodo banco Oracle possui ao menos os seguintes tablespaces padrão:\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003eTablespace\u003c/th\u003e\n          \u003cth\u003eDescrição\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003eSYSTEM\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003eDicionário de dados e objetos internos do Oracle\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003eSYSAUX\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003eComponentes auxiliares (AWR, statspack, etc.)\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003eTEMP\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003eOperações temporárias (sorts, joins, group by)\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003eUNDOTBS1\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003eArmazenamento de dados de undo (rollback)\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003eUSERS\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003eTablespace padrão para objetos de usuários\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003chr\u003e\n\u003ch2 id=\"listando-tablespaces\"\u003eListando Tablespaces\u003c/h2\u003e\n\u003ch3 id=\"listar-todos-os-tablespaces-do-banco\"\u003eListar todos os tablespaces do banco\u003c/h3\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-sql\" data-lang=\"sql\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#66d9ef\"\u003eSELECT\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e    tablespace_name,\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e    status,\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e    contents,\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e    logging,\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e    extent_management,\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e    segment_space_management\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#66d9ef\"\u003eFROM\u003c/span\u003e dba_tablespaces\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#66d9ef\"\u003eORDER\u003c/span\u003e \u003cspan style=\"color:#66d9ef\"\u003eBY\u003c/span\u003e tablespace_name;\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch3 id=\"listar-os-datafiles-associados-a-cada-tablespace\"\u003eListar os datafiles associados a cada tablespace\u003c/h3\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-sql\" data-lang=\"sql\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#66d9ef\"\u003eSELECT\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e    tablespace_name,\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e    file_name,\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e    bytes \u003cspan style=\"color:#f92672\"\u003e/\u003c/span\u003e \u003cspan style=\"color:#ae81ff\"\u003e1024\u003c/span\u003e \u003cspan style=\"color:#f92672\"\u003e/\u003c/span\u003e \u003cspan style=\"color:#ae81ff\"\u003e1024\u003c/span\u003e        \u003cspan style=\"color:#66d9ef\"\u003eAS\u003c/span\u003e tamanho_mb,\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e    autoextensible,\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e    maxbytes \u003cspan style=\"color:#f92672\"\u003e/\u003c/span\u003e \u003cspan style=\"color:#ae81ff\"\u003e1024\u003c/span\u003e \u003cspan style=\"color:#f92672\"\u003e/\u003c/span\u003e \u003cspan style=\"color:#ae81ff\"\u003e1024\u003c/span\u003e     \u003cspan style=\"color:#66d9ef\"\u003eAS\u003c/span\u003e tamanho_max_mb\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#66d9ef\"\u003eFROM\u003c/span\u003e dba_data_files\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#66d9ef\"\u003eORDER\u003c/span\u003e \u003cspan style=\"color:#66d9ef\"\u003eBY\u003c/span\u003e tablespace_name, file_name;\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch3 id=\"listar-tempfiles-tablespaces-temporários\"\u003eListar tempfiles (tablespaces temporários)\u003c/h3\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-sql\" data-lang=\"sql\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#66d9ef\"\u003eSELECT\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e    tablespace_name,\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e    file_name,\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e    bytes \u003cspan style=\"color:#f92672\"\u003e/\u003c/span\u003e \u003cspan style=\"color:#ae81ff\"\u003e1024\u003c/span\u003e \u003cspan style=\"color:#f92672\"\u003e/\u003c/span\u003e \u003cspan style=\"color:#ae81ff\"\u003e1024\u003c/span\u003e    \u003cspan style=\"color:#66d9ef\"\u003eAS\u003c/span\u003e tamanho_mb,\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e    autoextensible\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#66d9ef\"\u003eFROM\u003c/span\u003e dba_temp_files\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#66d9ef\"\u003eORDER\u003c/span\u003e \u003cspan style=\"color:#66d9ef\"\u003eBY\u003c/span\u003e tablespace_name;\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003chr\u003e\n\u003ch2 id=\"verificando-uso-e-espaço-livre\"\u003eVerificando Uso e Espaço Livre\u003c/h2\u003e\n\u003ch3 id=\"ver-espaço-livre-por-tablespace\"\u003eVer espaço livre por tablespace\u003c/h3\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-sql\" data-lang=\"sql\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#66d9ef\"\u003eSELECT\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e    df.tablespace_name                                      \u003cspan style=\"color:#66d9ef\"\u003eAS\u003c/span\u003e tablespace,\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e    ROUND(df.total_mb, \u003cspan style=\"color:#ae81ff\"\u003e2\u003c/span\u003e)                                   \u003cspan style=\"color:#66d9ef\"\u003eAS\u003c/span\u003e total_mb,\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e    ROUND(fs.free_mb, \u003cspan style=\"color:#ae81ff\"\u003e2\u003c/span\u003e)                                    \u003cspan style=\"color:#66d9ef\"\u003eAS\u003c/span\u003e livre_mb,\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e    ROUND(df.total_mb \u003cspan style=\"color:#f92672\"\u003e-\u003c/span\u003e fs.free_mb, \u003cspan style=\"color:#ae81ff\"\u003e2\u003c/span\u003e)                      \u003cspan style=\"color:#66d9ef\"\u003eAS\u003c/span\u003e usado_mb,\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e    ROUND((df.total_mb \u003cspan style=\"color:#f92672\"\u003e-\u003c/span\u003e fs.free_mb) \u003cspan style=\"color:#f92672\"\u003e/\u003c/span\u003e df.total_mb \u003cspan style=\"color:#f92672\"\u003e*\u003c/span\u003e \u003cspan style=\"color:#ae81ff\"\u003e100\u003c/span\u003e, \u003cspan style=\"color:#ae81ff\"\u003e2\u003c/span\u003e) \u003cspan style=\"color:#66d9ef\"\u003eAS\u003c/span\u003e pct_usado\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#66d9ef\"\u003eFROM\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e    (\u003cspan style=\"color:#66d9ef\"\u003eSELECT\u003c/span\u003e tablespace_name, \u003cspan style=\"color:#66d9ef\"\u003eSUM\u003c/span\u003e(bytes) \u003cspan style=\"color:#f92672\"\u003e/\u003c/span\u003e \u003cspan style=\"color:#ae81ff\"\u003e1024\u003c/span\u003e \u003cspan style=\"color:#f92672\"\u003e/\u003c/span\u003e \u003cspan style=\"color:#ae81ff\"\u003e1024\u003c/span\u003e \u003cspan style=\"color:#66d9ef\"\u003eAS\u003c/span\u003e total_mb\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e     \u003cspan style=\"color:#66d9ef\"\u003eFROM\u003c/span\u003e dba_data_files\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e     \u003cspan style=\"color:#66d9ef\"\u003eGROUP\u003c/span\u003e \u003cspan style=\"color:#66d9ef\"\u003eBY\u003c/span\u003e tablespace_name) df\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#66d9ef\"\u003eJOIN\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e    (\u003cspan style=\"color:#66d9ef\"\u003eSELECT\u003c/span\u003e tablespace_name, \u003cspan style=\"color:#66d9ef\"\u003eSUM\u003c/span\u003e(bytes) \u003cspan style=\"color:#f92672\"\u003e/\u003c/span\u003e \u003cspan style=\"color:#ae81ff\"\u003e1024\u003c/span\u003e \u003cspan style=\"color:#f92672\"\u003e/\u003c/span\u003e \u003cspan style=\"color:#ae81ff\"\u003e1024\u003c/span\u003e \u003cspan style=\"color:#66d9ef\"\u003eAS\u003c/span\u003e free_mb\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e     \u003cspan style=\"color:#66d9ef\"\u003eFROM\u003c/span\u003e dba_free_space\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e     \u003cspan style=\"color:#66d9ef\"\u003eGROUP\u003c/span\u003e \u003cspan style=\"color:#66d9ef\"\u003eBY\u003c/span\u003e tablespace_name) fs\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#66d9ef\"\u003eON\u003c/span\u003e df.tablespace_name \u003cspan style=\"color:#f92672\"\u003e=\u003c/span\u003e fs.tablespace_name\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#66d9ef\"\u003eORDER\u003c/span\u003e \u003cspan style=\"color:#66d9ef\"\u003eBY\u003c/span\u003e pct_usado \u003cspan style=\"color:#66d9ef\"\u003eDESC\u003c/span\u003e;\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cblockquote\u003e\n\u003cp\u003e\u003cstrong\u003eAtenção:\u003c/strong\u003e Tablespaces com mais de \u003cstrong\u003e85% de uso\u003c/strong\u003e merecem atenção imediata para evitar erros como \u003ccode\u003eORA-01653: unable to extend table\u003c/code\u003e.\u003c/p\u003e","title":"Ajustar Table Spaces Oracle"},{"content":"Introdução Neste artigo vamos configurar um AWS Transit Gateway.\nCenário Temos:\nVPC Produção VPC Serviços Firewall Criação do TGW Criar Transit Gateway aws ec2 create-transit-gateway ","permalink":"https://www.leocardozo.com/posts/criar-transit-gateway/","summary":"\u003ch1 id=\"introdução\"\u003eIntrodução\u003c/h1\u003e\n\u003cp\u003eNeste artigo vamos configurar um AWS Transit Gateway.\u003c/p\u003e\n\u003chr\u003e\n\u003ch1 id=\"cenário\"\u003eCenário\u003c/h1\u003e\n\u003cp\u003eTemos:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eVPC Produção\u003c/li\u003e\n\u003cli\u003eVPC Serviços\u003c/li\u003e\n\u003cli\u003eFirewall\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003ch1 id=\"criação-do-tgw\"\u003eCriação do TGW\u003c/h1\u003e\n\u003ch2 id=\"criar-transit-gateway\"\u003eCriar Transit Gateway\u003c/h2\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003eaws ec2 create-transit-gateway\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e","title":"AWS Transit Gateway"},{"content":"Eai pessoal!\nMeu nome é Leonardo Cardozo e criei este blog para compartilhar conhecimento, documentar minha jornada de aprendizado e contribuir com a comunidade de tecnologia que tanto me ajudou ao longo da minha carreira.\nTenho mais de 15 anos de experiência em Tecnologia da Informação, atuando com infraestrutura, redes, virtualização, soluções de backup e recuperação de desastres (disaster recovery), administração de Linux e Windows, e ambientes corporativos. Ao longo da minha trajetória, tive a oportunidade de participar de projetos envolvendo operação de datacenters, alta disponibilidade, modernização de infraestrutura e migração de serviços e recursos para nuvem.\nHoje, meu foco principal é Cloud Architecture, AWS e práticas DevOps. Estou diariamente aprimorando meus conhecimentos em Infraestrutura como Código (Terraform), pipelines de CI/CD, automação, containers, Kubernetes e arquiteturas nativas em nuvem.\nAqui você poderá encontrar artigos técnicos, laboratórios práticos e experiências reais do dia a dia em ambientes corporativos tanto de tecnologias Cloud Native quanto on-premises.\nTecnologias utilizadas atualmente AWS Terraform Docker Github Actions Kubernets Linux Redes Outras Tecnologias que uilizo VMware Zabbix Servidores Windows Veeam Backup \u0026amp; Replication Por que comecei este blog Por muito tempo esperei o melhor momento para compartilhar conteúdo por não achar relevante, mas aprendi com alguns camaradas que não existe momento certo ou conteúdo relevante. Se você conseguir ajudar uma pessoa que seja, o mundo será um lugar melhor.\nSe esse conteúdo te ajudou em algum momento da sua carreira, gostaria de te incentivar a fazer o mesmo.\nObrigado por visitar o meu blog. Sinta-se à vontade para se conectar comigo no LinkedIn ou GitHub ou me enviar um e-mail: contato@leocardozo.com.\nUBUNTU \u0026#34;Eu sou porque nós somos; e como nós somos, eu sou.\u0026#34; ","permalink":"https://www.leocardozo.com/about/","summary":"\u003cp\u003eEai pessoal!\u003c/p\u003e\n\u003cp\u003eMeu nome é Leonardo Cardozo e criei este blog para compartilhar conhecimento, documentar minha jornada de aprendizado e contribuir com a comunidade de tecnologia que tanto me ajudou ao longo da minha carreira.\u003c/p\u003e\n\u003cp\u003eTenho mais de 15 anos de experiência em Tecnologia da Informação, atuando com infraestrutura, redes, virtualização, soluções de backup e recuperação de desastres (disaster recovery), administração de Linux e Windows, e ambientes corporativos. Ao longo da minha trajetória, tive a oportunidade de participar de projetos envolvendo operação de datacenters, alta disponibilidade, modernização de infraestrutura e migração de serviços e recursos para nuvem.\u003c/p\u003e","title":"Sobre Mim"}]