aws información de facturación utilizando aws java SDK

Estoy tratando de obtener la información de facturación de aws para las instancias de ec2, los depósitos de s3 y los volúmenes de ebs utilizando la API java. Quiero crear una API que proporcione informes de facturación por hora de la entidad específica. ¿Hay alguna API api para obtener lo mismo? No pude encontrar lo mismo en la documentación de aws java sdk api.

No hay API para obtener información de facturación de AWS. En cambio, lo que puedes hacer es:

  1. Activar el informe de facturación detallado (desde el panel de control)
  2. Configure qué tipo de informes de facturación desea
  3. AWS comenzará a enviar información de facturación como archivos CSV a un contenedor (pre) configurado varias veces por hora
  4. Utilice REST API o S3 Java API para obtener la información del segmento cuando sea necesario.

Para más información: ver aquí

Actualizando la respuesta ya que no es la correcta. AWS ha lanzado la API CostExplorer para Java SDK. Puede encontrar la documentación aquí: https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/index.html

public GetCostAndUsageResult getCostAndUsage(GetCostAndUsageRequest request) 

Recupera métricas de costo y uso para su cuenta. Puede especificar qué métrica relacionada con el costo y el uso, como BlendedCosts o UsageQuantity, desea que devuelva la solicitud. También puede filtrar y agrupar sus datos por varias dimensiones, como SERVICE o AZ, en un rango de tiempo específico. Para obtener una lista completa de dimensiones válidas, consulte la operación GetDimensionValues. Las cuentas maestras en una organización en AWS Organizations tienen acceso a todas las cuentas de miembros.

Además de @helloV answer, si desea ver sus AWS Billings en días / horas o incluso minutos. Puede usar la herramienta aws-elk-billing . Actualmente, la solicitud de extracción está esperando fusionarse con el repository principal . Utiliza ELK Stack para visualizar el informe de costo y uso de AWS

(Aunque todavía podría funcionar con el informe de facturación detallado de AWS, que contiene algunas columnas adicionales junto con todas las columnas de AWS Cost and Usage Report).

Aquí hay una captura de pantalla completa del Kibana Dashboard.

AWS Billing Kibana Dashboard

@bagui

De acuerdo con la documentación oficial de AWS, no existe una función de API como tal para obtener los datos reales de facturación. En su lugar, puede obtener los datos de facturación esperados como:

Para comenzar, todo lo que necesita hacer es proporcionar un depósito de Amazon S3 para sus datos de facturación, otorgar al sistema de facturación de AWS permiso para escribir en él, y visitar la página de Preferencias de facturación para habilitar el acceso programático:

Una vez que haya hecho esto, generaremos un recibo estimado varias veces al día y lo almacenaremos en el depósito, donde podrá descargarlo y procesarlo como lo desee. También generaremos una factura final al final de cada período de facturación.

Los Informes de facturación se generan como archivos CSV e incluyen muchos detalles:

Aquí hay una lista de los campos (lea la documentación para más información):

  • ID de factura
  • Nombre e ID de la cuenta del pagador
  • Nombre e ID de la cuenta vinculada (para Facturación consolidada)
  • Tipo de registro
  • ID de registro
  • Fechas de inicio y finalización del período de facturación
  • Fecha de la factura
  • Dirección de impuestos
  • Número de orden de compra del pagador
  • Código de producto
  • nombre del producto
  • Vendedor de registro
  • Tipo de uso
  • Operación
  • ID de tarifa
  • Descripción del Artículo
  • Inicio y uso de la aplicación Fecha y hora de finalización
  • Cantidad de uso
  • Blended Rate (para la facturación consolidada)
  • Código de moneda
  • Costo antes de impuestos
  • Créditos
  • Importe del impuesto
  • Tipo de impuesto
  • Coste total

Documentación referida de AWS: Acceso programático a los datos de facturación de AWS

Gracias

Puede obtener datos de costo y uso utilizando AWS Java SDK. Aquí hay una muestra funcional.

 import com.amazonaws.auth.AWSStaticCredentialsProvider; import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.regions.Regions; import com.amazonaws.services.costexplorer.AWSCostExplorer; import com.amazonaws.services.costexplorer.AWSCostExplorerClientBuilder; import com.amazonaws.services.costexplorer.model.DateInterval; import com.amazonaws.services.costexplorer.model.GetCostAndUsageRequest; import com.amazonaws.services.costexplorer.model.GetCostAndUsageResult; public class AwsCostExplorer { private static AWSCostExplorer awsCostExplorerClient; public static void main(String arg[]){ AWSCostExplorerClientBuilder builder =AWSCostExplorerClientBuilder.standard(); awsCostExplorerClient = builder.withCredentials(new AWSStaticCredentialsProvider(new ProfileCredentialsProvider("profile-name").getCredentials())) .withRegion(Regions.US_EAST_1).build(); GetCostAndUsageRequest request = new GetCostAndUsageRequest() .withTimePeriod(new DateInterval().withStart("2018-07-01").withEnd("2018-07-25")) .withGranularity("DAILY") .withMetrics("BlendedCost"); GetCostAndUsageResult result = awsCostExplorerClient.getCostAndUsage(request); result.getResultsByTime().forEach(resultByTime -> { System.out.println(resultByTime.toString()); }); awsCostExplorerClient.shutdown(); } }