He creado la misma función en Python y Java (simple hello world) siguiendo la guía. Usando el mismo rol, la versión de Python funciona como se esperaba generando la entrada de flujo de registro e imprimiendo "ok".
from __future__ import print_function import json print('Loading function') def lambda_handler(event, context): return "ok"Sin embargo, la versión de Java no registra nada con la misma función y configuración.
package com.streambright; import com.amazonaws.services.lambda.runtime.Context; import com.amazonaws.services.lambda.runtime.RequestHandler; public class Dbmgmt implements RequestHandler<Object, Object> { @Override public String handleRequest(Object in, Context ctx) { System.out.println("test"); ctx.getLogger().log("o hai"); return "ok"; } }Me pregunto por qué no pone nada en CloudWatch Log Groups. ¿Alguien tiene la misma experiencia con Java? ¿Alguien tiene la misma experiencia? ¿Hay una solución alternativa para esto?
También publicado en el foro de AWS: https://forums.aws.amazon.com/thread.jspa?threadID=254747
Encontré la causa raíz de esto. La política de roles no permitía que se creara el recurso de registro correcto y falló silenciosamente. La interfaz de usuario de AWS no fue muy útil para ayudar a identificar este problema, me encontré con él accidentalmente durante una auditoría. Después de cambiar el recurso a *, la función lambda pudo crear el recurso de registro.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "xray:PutTraceSegments", "xray:PutTelemetryRecords", "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "ec2:CreateNetworkInterface", "ec2:DeleteNetworkInterface", "ec2:DescribeNetworkInterfaces", "kms:Decrypt" ], "Resource": "*" } ] }