Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

563
Views
¿Cómo puedo usar AWS Boto3 para obtener estadísticas de métricas de Cloudwatch?

Estoy trabajando en un script de Python 3 diseñado para obtener estadísticas de utilización del espacio S3 de AWS CloudFront mediante la biblioteca Boto3.

Empecé con la CLI de AWS y descubrí que podía obtener lo que buscaba con un comando como este:

 aws cloudwatch get-metric-statistics --metric-name BucketSizeBytes --namespace AWS/S3 --start-time 2017-03-06T00:00:00Z --end-time 2017-03-07T00:00:00Z --statistics Average --unit Bytes --region us-west-2 --dimensions Name=BucketName,Value=foo-bar Name=StorageType,Value=StandardStorage --period 86400 --output json

Esto devuelve los datos que esperaría. Ahora me gustaría hacer lo mismo en Python 3/Boto3. Mi código hasta ahora es:

 from datetime import datetime, timedelta import boto3 seconds_in_one_day = 86400 # used for granularity cloudwatch = boto3.client('cloudwatch') response = cloudwatch.get_metric_statistics( Namespace='AWS/S3', Dimensions=[ { 'Name': 'BucketName', 'Value': 'foo-bar' }, { 'Name': 'StorageType', 'Value': 'StandardStorage' } ], MetricName='BucketSizeBytes', StartTime=datetime.now() - timedelta(days=7), EndTime=datetime.now(), Period=seconds_in_one_day, Statistics=[ 'Average' ], Unit='Bytes' ) print(response)

Cuando ejecuto esto, obtengo una respuesta válida pero no hay puntos de datos (es una matriz vacía). Parecen ser idénticos, excepto que el método de Python no parece tener un lugar para la región, donde la línea de comando lo requiere.

Una cosa más que probé: mi código está calculando las fechas de la última fecha en comparación con la línea de comando donde están codificadas. Intenté codificar la fecha para ver si recuperaba los datos y el resultado fue el mismo.

Entonces mis preguntas son estas:

¿El método que estoy usando en Boto/Python es equivalente a la línea de comandos? Suponiendo que lo sean, ¿qué me podría estar perdiendo?

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Aquí hay un muy buen ejemplo para obtener datos de cloudwatch en python usando boto3. Tuve que pasar algunas horas para que funcionara, pero debería ser fácil de referir ahora.

 def get_req_count(region, lb_name): client = boto3.client('cloudwatch', region_name=region) count = 0 response = client.get_metric_statistics( Namespace="AWS/ApplicationELB", MetricName="RequestCount", Dimensions=[ { "Name": "LoadBalancer", "Value": lb_name }, ], StartTime=str_yesterday, EndTime=str_today, Period=86460, Statistics=[ "Sum", ] ) #print(response2) for r in response['Datapoints']: count = (r['Sum']) return count
over 4 years ago · Santiago Trujillo Report

0

Esto es lo que he hecho:

 client = boto3.client(service_name='cloudwatch', region_name='us-east-1') response = client.get_metric_statistics( Namespace = 'AWS/EC2', Period = 300, StartTime = datetime.utcnow() - timedelta(seconds = 600), EndTime = datetime.utcnow(), MetricName = metricVar, Statistics=['Average'], Unit='Percent', Dimensions = [ {'Name': 'InstanceId', 'Value': asgName} ])
over 4 years ago · Santiago Trujillo Report

0

No veo nada obviamente malo en su código, por lo que la región parece ser el principal sospechoso aquí.

Puede configurarlo al crear el cliente con:

 cloudwatch = boto3.client('cloudwatch', region_name='us-west-2')

Si esto no está configurado, boto intentará obtener la región de la variable de AWS_DEFAULT_REGION primero y luego el archivo de configuración ~/.aws/config . Intente verificarlos para ver cuál es el conjunto de regiones predeterminado.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!