Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

Estime o custo atual da sua infraestrutura AWS em uma nova região

By Diana BarretoAug 7, 20257 min read

Esta página também está disponível em English, Deutsch, Español, Français, Italiano e 日本語.

Use o DoiT Console, a Amazon Price API e o assistente de IA Amazon Q para agilizar a estimativa de custo da infraestrutura AWS Cloud em uma região de destino

Entender as diferenças de custo entre regiões da AWS é fundamental quando você está planejando mudanças de infraestrutura. Isso ajuda a identificar qual região é mais sensível ao custo, dependendo do caso de uso. Por exemplo, ao escolher uma região para disaster recovery, para expandir o negócio ou para migrar a infraestrutura atual.

Neste artigo, vou mostrar como estimei o custo de migrar minha infraestrutura AWS da Virgínia (us-east-1) para duas regiões na Europa: Frankfurt (eu-central-1) e Irlanda (eu-west-1). Usei três ferramentas principais nessa análise: o DoiT Console, o Amazon Q e a AWS Price API.

Use o DoiT Console para obter o uso atual na Virgínia.

O DoiT Console é uma aplicação web que permite aos clientes interagir com o conjunto de produtos da DoiT. Ele inclui relatórios que oferecem uma visualização detalhada e flexível do faturamento de nuvem.

O primeiro passo foi usar um dos relatórios do DoiT para obter os dados atuais de uso de nuvem na Virgínia, que serviriam de entrada para a estimativa de custo. Para isso, usei o relatório "Services Breakdown" do DoiT Console e personalizei da seguinte forma:

• Mudei para a visualização em tabela

• Troquei a métrica de custo para uso

• Defini o período como mensal

• Agrupei os dados por Account, Service, SKU, SKU ID e Unit

A configuração aparece na imagem abaixo:

Personalizando o relatório predefinido Services Breakdown do DoiT

Em seguida, baixei o relatório, e esse arquivo CSV foi usado como entrada para a estimativa:

Exportar relatório do DoiT

AWS Price API como ferramenta para estimar o custo em uma região diferente.

O relatório mostra o uso, os SKU IDs e os preços de todos os serviços atualmente em execução na Virgínia. Posso usar esses dados para encontrar os SKU IDs e preços equivalentes em Frankfurt e na Irlanda e, então, calcular os custos estimados de cada região.

A AWS Price API fornece informações de preço de todos os serviços AWS. Ela inclui a função GetProducts, que permite buscar produtos por atributos específicos. Como já tenho os SKU IDs do relatório do DoiT, posso usá-los para obter informações detalhadas dos produtos. Com a AWS CLI, é possível recuperar esses atributos com o seguinte comando:

aws pricing get-products \
--service-code AmazonEC2 \
--region us-east-1 \
--filters Type=TERM_MATCH,Field=sku,Value="6C86BEPQVG73ZGGR"
{
    "PriceList": [\
        {\
            "product": {\
                "productFamily": "Compute Instance",\
                "attributes": {\
                    "enhancedNetworkingSupported": "Ye\
                    "intelTurboAvailable": "Yes",\
                    "memory": "8 GiB",\
                    …\
                    "locationType": "AWS Region",\
                    "storage": "EBS only",\
                    "instanceFamily": "General purpose\
                    "operatingSystem": "Linux",\
                    "intelAvx2Available": "Yes",\
                    …\
                    "processorFeatures": "Intel AVX; I\
                    "servicecode": "AmazonEC2",\
                    "licenseModel": "No License required"\
                    "currentGeneration": "Yes",\
                    …\
                    "processorArchitecture": "64-bit",\
                    "marketoption": "OnDemand",\
                },\
                "sku": "6C86BEPQVG73ZGGR"\
            },\
            "serviceCode": "AmazonEC2",\
            "terms": {\
                "OnDemand": {\
                    "6C86BEPQVG73ZGGR.JRTCKXETXF": {\
                        "priceDimensions": {\
                            "6C86BEPQVG73ZGGR.JRTCKXET\
                                "unit": "Hrs",\
                                "endRange": "Inf",\
                                "description": "$0.096\
                                "appliesTo": [],\
                                "rateCode": "6C86BEPQV\
                                "beginRange": "0",\
                                "pricePerUnit": {\
                                    "USD": "0.09600000\
                                }\
                            }\
                        },\
                        "sku": "6C86BEPQVG73ZGGR",\
                        "effectiveDate": "2025-07-01T0\
                        "offerTermCode": "JRTCKXETXF",\
                        "termAttributes": {}\
                    }\
                },\
                "Reserved": {\
                    …\
```\
Depois, esses atributos podem ser usados para encontrar o produto correspondente, com seu SKU e preço, na região de destino, com o seguinte comando:\
```\
aws pricing get-products --service-code AmazonEC2 --region eu-central-1 \\
 --filters 'Type=TERM_MATCH,Field="instanceType",Value="m5.large"' \\
 'Type=TERM_MATCH,Field=productFamily,Value="Compute Instance"' \\
 'Type=TERM_MATCH,Field="instanceFamily",Value="General purpose"' \\
 'Type=TERM_MATCH,Field="operatingSystem",Value="Linux"' \\
 'Type=TERM_MATCH,Field="licenseModel",Value="No License required"' \\
 'Type=TERM_MATCH,Field="locationType",Value="AWS Region"'\
```\
O resultado retorna o produto equivalente:\
```\
{\
    "product": {\
        "productFamily": "Compute Instance",\
        "attributes": {\
            "enhancedNetworkingSupported": "Yes",\
            …\
            "gpuMemory": "NA",\
            "vpcnetworkingsupport": "true",\
            "instanceType": "m5.large",\
            …\
            "availabilityzone": "NA"\
        },\
        "sku": "223J7SG3VCFCDM9M"\
    },\
    "serviceCode": "AmazonEC2",\
    "terms": {\
        "OnDemand": {\
            "223J7SG3VCFCDM9M.JRTCKXETXF": {\
                "priceDimensions": {\
                    "223J7SG3VCFCDM9M.JRTCKXETXF.6YS6EN2CT7": {\
                        "unit": "Hrs",\
                        "endRange": "Inf",\
                        "description": "$0.112 per Unused Reservation Linux m5.large Instance Hour",\
                        "appliesTo": [],\
                        "rateCode": "223J7SG3VCFCDM9M.JRTCKXETXF.6YS6EN2CT7",\
                        "beginRange": "0",\
                        "pricePerUnit": {\
                            "USD": "0.1120000000"\
                        }\
                    }\
                },\
                "sku": "223J7SG3VCFCDM9M",\
                "effectiveDate": "2025-07-01T00:00:00Z",\
                "offerTermCode": "JRTCKXETXF",\
                "termAttributes": {}\
            }\
        }\
    },\
    "version": "20250715014947",\
    "publicationDate": "2025-07-15T01:49:47Z"\
```\
**Gere um script que encontra o SKU equivalente na região de destino usando o Amazon Q.**\
Escrever um script para processar o arquivo CSV, consultar cada SKU na região atual e encontrar o SKU correspondente na região de destino daria muito trabalho. Mas o Amazon Q, assistente com IA da AWS, ajudou bastante nessas tarefas.\
Entre no Medium gratuitamente para receber atualizações deste autor.\
Inscreva-se\
Inscreva-se\
Lembrar de mim para entrar mais rápido\
Primeiro, instalei o Amazon Q CLI seguindo as instruções disponíveis [aqui](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/command-line-installing.html). Depois, criei uma nova pasta de projeto e copiei para dentro dela o arquivo CSV com o relatório do DoiT. Abri o chat do Amazon Q nessa pasta e passei instruções sobre o que queria fazer. As instruções foram parecidas com isto:\
![](https://media.doit.com/imports/medium/unattributed/8842b44b7ee5-1-wuj5blaso7dckj1gzkhjba.png)\
Usando o Amazon Q para gerar a estimativa de custo em uma região de destino\
```\
Quero criar um script Python que:\
 - receba como entrada um arquivo como costbyskuvirginia.csv com o uso atual de diferentes serviços AWS na região AWS da Virgínia.\
 - usando a AWS price API, este arquivo deve conseguir encontrar o SKU atual na região AWS de origem e, com base nos atributos, encontrar o SKU correspondente na região AWS de destino.\
 - A saída deve ser uma cópia do mesmo arquivo de entrada, acrescida das mesmas informações, incluindo o preço na região de Frankfurt.\
```\
Com essa entrada, o Amazon Q fez um bom trabalho inicial:\
- Cria uma lógica funcional para ler e processar o arquivo CSV.\
- Cria os mapeamentos do nome do serviço AWS informado no arquivo de entrada para o código de serviço AWS exigido pela AWS price API.\
- Cria a lógica para consultar o SKU na região de origem.\
- Cria uma lógica inicial para buscar o SKU em Frankfurt.\
- Gera o novo arquivo com os mesmos campos para Frankfurt e adiciona alguns campos extras.\
Os campos relevantes do meu arquivo costbyskuvirginia.csv inicial eram estes:\
![](https://media.doit.com/imports/medium/unattributed/5933b3ae18ca-1-t2ueh4hlf9jm1nrb5pzvng.png)\
arquivo csv com o uso de custo por SKU na Virgínia\
A saída do script Python gerado pelo Amazon Q ficou assim:\
![](https://media.doit.com/imports/medium/unattributed/32626b26fabe-1-3ipaaepmzpjownep_xlxfg.png)\
Os cálculos iniciais estavam corretos para algumas linhas, mas notei problemas em outras. Em alguns casos, a ferramenta estimava custos em vez de encontrar o SKU correspondente exato. Também encontrei diferenças de custo que pareciam destoar dos padrões de preço esperados. Ao verificar as descrições, percebi incompatibilidades. Por exemplo, ela pareou um SKU de \"Amazon EKS cluster usage in US East (N. Virginia)\" a $0.08928 por hora com \"EKS Auto Mode management of i3.2xlarge in EU (Frankfurt)\".\
Tentei orientar o Amazon Q a resolver essas discrepâncias. Mas ele tentou abordagens que não atacavam o problema real. Por isso, mudei a estratégia e parti para uma investigação manual. Assim, consegui passar instruções claras ao Amazon Q.\
No processo manual, descobri que alguns SKUs, como instâncias Spot, não estão na AWS price API. Por isso, deixei esses casos de fora da estimativa.\
Depois, pedi ao Amazon Q para encontrar as linhas em que a descrição diferia. Ou seja, desconsiderando preço e região, o texto da descrição é diferente. Para isso, o Amazon Q criou um script Python e conseguiu apontar as diferenças.\
Depois de identificar as diferenças, conferi manualmente e descobri que o algoritmo precisava informar atributos adicionais para alguns produtos a fim de obter o SKU correto na região de destino. Por exemplo, os atributos da família de produtos \"Compute Instance\" não incluíam licenseModel. Por causa disso, ele estava encontrando o SKU de uma instância Windows em vez da Linux.\
Alguns produtos têm vários preços para o mesmo SKU ID. Nesse caso, o algoritmo encontrava o SKU correto na região de destino, mas pegava o primeiro preço da lista. Isso era um problema porque ignorava o preço escalonado, em que o valor depende de quanto você usa.\
Usei o Amazon Q para resolver isso. Passei instruções detalhadas e ele criou a lógica para escolher a faixa de preço certa de acordo com o uso. Depois dessas mudanças, o algoritmo conseguiu estimar custos para 108 dos 140 produtos. Foi suficiente para a minha análise.\
Com os cálculos para Frankfurt funcionando bem, pedi ao Amazon Q para incluir a Irlanda no script. Ele adicionou corretamente a estimativa para a Irlanda e atualizou o arquivo de saída.\
O código inicial gerado com a ajuda do Amazon Q está neste [repositório](https://github.com/dianibar/estimate-aws-region-cost) público no GitHub.\
Os próximos passos deste projeto são:\
- Generalizar o algoritmo para receber um arquivo de entrada de qualquer região de origem e gerar uma estimativa para qualquer região de destino.\
- Reconhecer quando um novo serviço é solicitado na estimativa e atualizar o algoritmo para incluir os filtros necessários.\
- Avaliar o recurso recém-lançado pela AWS, o [AWS Pricing MCP Server](https://aws.amazon.com/blogs/aws-cloud-financial-management/aws-price-list-gets-a-natural-language-upgrade-introducing-the-aws-pricing-mcp-server/).\
- Melhorar a qualidade do código.\
Estimar o custo da infraestrutura AWS Cloud ao comparar regiões é essencial para tomar decisões com embasamento. O **DoiT Console tem um papel central ao fornecer os dados de uso atuais** na região de origem. Essa entrada detalhada, somada à AWS Price API para preços específicos por região e ao Amazon Q para automação, viabiliza uma estimativa de custo confiável.\