Consultando AWS Logs desde la línea de órdenes
Uno de los desarrolladores de la empresa me preguntó si había forma de ver las bitácoras de las funciones Lambda desde la línea de órdenes, para no tener la necesidad de entrar a la consola de AWS y verlos en CloudWatch Logs.
Después de investigar un poco conseguí un proyecto en Github llamado awslogs que hace justamente esto. A continuación veremos cómo instalarlo y usarlo desde un entorno virtual de Python:
virualenv awslogs
source awslogs/bin/activate
pip install awslogs
pip install awscli
Lo primero que debemos saber son los grupos donde están definidos los logs de nuestras funciones Lambda, para ello usamos la CLI de AWS:
aws logs describe-log-grups --region us-east-1
{
"logGroups": [
{
"arn": "arn:aws:logs:us-east-1:123456789123:log-group:/aws/lambda/get_transcription:*",
"creationTime": 1531834572841,
"metricFilterCount": 0,
"logGroupName": "/aws/lambda/get_transcription",
"storedBytes": 0
},
{
"arn": "arn:aws:logs:us-east-1:264349563434:log-group:/aws/lambda/validate_time:*",
"creationTime": 1532118107128,
"metricFilterCount": 0,
"logGroupName": "/aws/lambda/validate_time",
"storedBytes": 0
}
]
}
Ahora para verlos las bitácoras de, por ejemplo, la función get_transcription
desde la línea de órdenes podemos ejecutar:
awslogs get /aws/lambda/get_transcription --aws-region us-east-1 --watch | cut -d " " -f 3-20
Y la salida sería algo como esto:
START RequestId: a2124cb1-818e-11e8-acc8-5bd968ce3fe1 Version: $LATEST
[DEBUG] 2018-07-23T15:39:50.422Z a2124cb1-818e-11e8-acc8-5bd968ce3fe1 Searching id: e321-eaefe4311ca1
tuple indices must be integers or slices, not str: TypeError
recent call last):
File "/var/task/app/services/get_transcription.py", line 100, in lambda_handler
date_text = field['transcription']
indices must be integers or slices, not str
END RequestId: a2124cb1-818e-11e8-acc8-5bd968ce3fe1
REPORT RequestId: a2124cb1-818e-11e8-acc8-5bd968ce3fe1 Duration: 265.66 ms Billed Duration: 300 ms Memory Size: 128 MB Max Memory Used: 33 MB
Leave a Comment