Cómo apoyarte en la DoiT Console, la Amazon Price API y el asistente de IA Amazon Q para agilizar la estimación de tu infraestructura AWS en una región de destino

Entender las diferencias de costo entre regiones de AWS es clave a la hora de planear cambios en la infraestructura. Te permite identificar qué región conviene más según el caso de uso: por ejemplo, al elegir una región para recuperación ante desastres, para expandir tu negocio o para migrar la infraestructura actual.
En este artículo te muestro cómo estimé el costo de mover mi infraestructura AWS desde Virginia (us-east-1) a dos regiones europeas: Frankfurt (eu-central-1) e Irlanda (eu-west-1). Para el análisis usé tres herramientas principales: la DoiT Console, Amazon Q y la AWS Price API.
Usa la DoiT Console para obtener el consumo actual en Virginia.
La DoiT Console es una aplicación web que permite a los clientes interactuar con la suite de productos de DoiT. Incluye reportes que ofrecen una visualización detallada y flexible de la facturación de tu nube.
El primer paso fue usar uno de los reportes de DoiT para obtener los datos de consumo actual en Virginia, ya que serían el insumo de la estimación de costos. Para esto utilicé el reporte "Services Breakdown" de la DoiT Console y lo personalicé así:
• Cambié a la vista de tabla
• Cambié la métrica de costo a uso
• Configuré el período en mensual
• Agrupé los datos por Cuenta, Servicio, SKU, SKU ID y Unidad
La configuración se ve en la siguiente imagen:

Personalización del reporte predefinido Services Breakdown de DoiT
Después descargué el reporte, y el archivo CSV resultante se usó como insumo para la estimación:

Exportar el reporte de DoiT
La AWS Price API como herramienta para estimar el costo en otra región.
El reporte muestra el consumo, los SKU IDs y los precios de todos los servicios actualmente desplegados en Virginia. Con esos datos puedo encontrar los SKU IDs y precios equivalentes en Frankfurt e Irlanda, y luego calcular los costos estimados en cada región.
La AWS Price API ofrece información de precios de todos los servicios de AWS. Incluye una función GetProducts que permite buscar productos a partir de atributos específicos. Como tengo los SKU IDs del reporte de DoiT, puedo usarlos para obtener información detallada del producto. Con la AWS CLI se obtienen estos atributos con el siguiente 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": {\
…\
```\
Después, esos atributos sirven para encontrar el producto equivalente con su SKU y precio en la región de destino, mediante el siguiente 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"'\
```\
El resultado entrega el producto 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"\
```\
**Generar un script con Amazon Q que encuentre el SKU equivalente en la región de destino.**\
Escribir un script para procesar el archivo CSV, buscar cada SKU en la región actual y encontrar el SKU correspondiente en la región de destino tomaría bastante tiempo. Sin embargo, Amazon Q, el asistente con IA de AWS, fue de gran ayuda en estas tareas.\
Únete a Medium gratis para recibir actualizaciones de este autor.\
Suscríbete\
Suscríbete\
Recuérdame para iniciar sesión más rápido\
Primero instalé Amazon Q CLI siguiendo las instrucciones que están [aquí](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/command-line-installing.html). Luego creé una nueva carpeta de proyecto y copié allí el archivo CSV con el reporte de DoiT. Abrí el chat de Amazon Q en esa carpeta y le di instrucciones sobre lo que quería lograr. Las instrucciones fueron parecidas a estas:\
\
Uso de Amazon Q para generar la estimación de costos en una región de destino\
```\
Quiero crear un script en Python que:\
- reciba como entrada un archivo como costbyskuvirginia.csv con el consumo actual de los distintos servicios de AWS en la región de Virginia.\
- usando la AWS Price API, este archivo debería poder encontrar el SKU actual en la región AWS de origen y, con sus atributos, encontrar el SKU correspondiente en la región AWS de destino.\
- La salida debería ser una copia del mismo archivo de entrada más la misma información, incluyendo el precio en la región de Frankfurt.\
```\
Con esa entrada, Amazon Q hizo un buen trabajo inicial:\
- Crea una lógica funcional para leer y procesar el archivo CSV.\
- Crea los mapeos del nombre del servicio AWS provisto en el archivo de entrada al código de servicio AWS que requiere la AWS Price API.\
- Crea la lógica para consultar el SKU en la región de origen.\
- Crea una lógica inicial para buscar el SKU en Frankfurt.\
- Genera el nuevo archivo con los mismos campos en Frankfurt y suma algunos campos adicionales.\
Los campos relevantes de mi archivo inicial costbyskuvirginia.csv eran los siguientes:\
\
archivo csv con el consumo de Virginia por SKU\
La salida del script en Python generado por Amazon Q se veía así:\
\
Los cálculos iniciales fueron correctos en algunas filas, pero noté problemas en otras. En algunos casos, la herramienta estimaba los costos en lugar de encontrar el SKU exacto. También aparecieron diferencias de costo que no cuadraban con los patrones de precios esperados. Al revisar las descripciones, descubrí varias inconsistencias. Por ejemplo, emparejó un SKU para \"Amazon EKS cluster usage in US East (N. Virginia)\" a $0.08928 por hora con \"EKS Auto Mode management of i3.2xlarge in EU (Frankfurt).\"\
Intenté pedirle a Amazon Q que resolviera estas discrepancias. Sin embargo, probó enfoques que no atacaban el problema de fondo. Por eso cambié de estrategia y empecé una investigación manual. Así pude darle instrucciones más claras a Amazon Q.\
Con el proceso manual descubrí que algunos SKUs, como las instancias Spot, no están incluidos en la AWS Price API. Por esa razón, los dejé fuera de la estimación.\
Luego le pedí a Amazon Q que identificara las filas donde la descripción difería; es decir, sin considerar el precio ni la región, el texto de la descripción no coincide. Para esta tarea, Amazon Q creó un script en Python y logró entregar las diferencias.\
Después de identificar las diferencias, las revisé manualmente y vi que el algoritmo necesitaba aportar atributos adicionales para algunos productos a fin de obtener el SKU correcto en la región de destino. Por ejemplo, los atributos para la familia de productos \"Compute Instance\" no incluían licenseModel. Por eso encontraba el SKU de una instancia Windows en lugar de la Linux.\
Algunos productos tienen varios precios para el mismo SKU ID. En esos casos, el algoritmo encontraba el SKU correcto en la región de destino, pero tomaba el primer precio de la lista. Eso era un problema porque no contemplaba los precios escalonados, donde el precio depende de cuánto consumes.\
Usé Amazon Q para resolver este punto. Le di instrucciones detalladas y armó la lógica para elegir el nivel de precio correcto según el uso. Tras estos cambios, el algoritmo logró estimar los costos para 108 de 140 productos. Fue suficiente para mi análisis.\
Una vez que los cálculos de Frankfurt funcionaban bien, le pedí a Amazon Q que sumara Irlanda al script. Agregó correctamente la estimación de Irlanda y actualizó el archivo de salida.\
El código inicial generado con la ayuda de Amazon Q está disponible en este [repositorio](https://github.com/dianibar/estimate-aws-region-cost) público de GitHub.\
Los próximos pasos para este proyecto serán:\
- Generalizar el algoritmo para que reciba un archivo de entrada de cualquier región de origen y genere una estimación para cualquier región de destino.\
- Detectar cuándo se solicita un nuevo servicio en la estimación y actualizar el algoritmo para incluir los filtros necesarios.\
- Considerar la función [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/) que AWS lanzó recientemente.\
- Mejorar la calidad del código.\
Estimar el costo de la infraestructura cloud de AWS al comparar regiones es esencial para tomar decisiones informadas. La **DoiT Console cumple un rol clave al aportar los datos base de consumo actual** en la región de origen. Ese insumo detallado, combinado con la AWS Price API para los precios específicos por región y con Amazon Q para la automatización, permite una estimación de costos confiable.\