usar test que porque informatica expresiones cli aws amazon-web-services aws-lambda amazon-cloudwatch

amazon web services - test - No se puede obtener la función AWS Lambda para iniciar sesión(salida de texto) en CloudWatch



sam cli api gateway (12)

Estoy tratando de configurar una función Lambda que procesará un archivo cuando se cargue en un bucket de S3. Necesito una forma de ver la salida de console.log cuando console.log un archivo, pero no puedo encontrar la manera de vincular mi función Lambda a CloudWatch.

Pensé mirando el objeto de context que mi grupo de registro es /aws/lambda/wavToMp3 y la secuencia de registro es 2016/05/23/[$LATEST]hex_code_redacted . Así que creé ese grupo y transmití en CloudWatch, sin embargo, no se está registrando nada.


Para que la función lambda cree una secuencia de registro y publique registros en cloudwatch, la función de ejecución lambda debe tener los siguientes permisos

Ya tenía estos permisos, pero no funcionó.

Simplemente cambie su tiempo de espera por un segundo y haga clic en el botón ''guardar y probar'', y comenzará a ver registros en Cloudwatch.

Cambié el tiempo de espera, guardé y los registros aún no funcionaban.

Asigné otro rol y los registros aún no funcionaban.

Lo que terminó funcionando para mí fue hacer clic en "Crear un rol personalizado", luego "Permitir". Esto fue todo y los registros comenzaron a generarse, pero como no quería usar una nueva función sino mi función existente, simplemente asigné mi función existente después y funcionó. Entonces, técnicamente debería haber regresado a la configuración original que no funcionaba pero que ahora funciona. Imagínate.


Aparentemente, otra necesidad para iniciar sesión es que la función Lambda debe indicar la finalización; Por ejemplo, en el contexto de Python, el controlador debe devolver algo distinto de None .


Asegúrese de tener la ruta completa de su "rol existente" en su función lambda "Configuración":

Rol: Elija un rol existente Rol existente: service-role / yourRoleName

Por alguna razón, escribir solo yourRoleName funcionará para algunos servicios (como SES) pero no para CloudWatch.

Además, puede intentar crear una nueva función en lugar de utilizar una existente. Esto creará el rol con la configuración adecuada (con suerte).


Como indican otras respuestas, debe dar permiso a lambda para publicar registros en los registros de observación en la nube. AWS había proporcionado la política AWSLambdaExecute solo para eso. Es json es -

START RequestId: a3552c34-f7a6-11e8-90ba-2fb886f31fb0 Version: $LATEST 2018-12-04T09:26:11.236Z a3552c34-f7a6-11e8-90ba-2fb886f31fb0 [Logger] GET /hello?world=1 END RequestId: a3552c34-f7a6-11e8-90ba-2fb886f31fb0 REPORT RequestId: a3552c34-f7a6-11e8-90ba-2fb886f31fb0 Duration: 41.02 ms Billed Duration: 100 ms Memory Size: 128 MB Max Memory Used: 29 MB

Puede agregar esta política en su rol que se asigna a su lambda y debería comenzar a ver los registros.

NOTA: También tiene acceso de lectura / escritura S3. Si no lo desea, puede crear una política personalizada con solo la parte de registros.


Después de actualizar su política, parece que tiene que actualizar la configuración de su función para actualizar todas las instancias de trabajo para leer nuevas políticas.

Entonces, si solo hace clic en el botón ''probar'' desde la consola de Lambda después de actualizar su política de roles en IAM, las instancias de Lambda en caché seguirán teniendo permisos de roles antiguos, por lo que aún no verá ningún registro escrito en los registros de Cloudwatch.

Simplemente cambie su tiempo de espera por un segundo y haga clic en el botón ''guardar y probar'', y comenzará a ver registros en Cloudwatch.


El problema era que estaba tratando de crear un grupo de registro en el script de Cloudformation de la siguiente manera: AWS :: Logs :: LogGroup y luego tratando de enviar el registro de Lambda a este grupo de registro. : P Novato Después de una lectura cuidadosa, descubrí que Lambda crea su propio registro con el formato mencionado anteriormente: / aws / lambda / Solo necesitamos proporcionar permiso de política a este grupo de registro, o simplemente un permiso genérico con recurso como: arn: aws: registros ::: *

espero que esto ayude


Encontré este problema, pero ninguna de las respuestas anteriores resolvió mi problema. Resulta que la región estaba configurada de alguna manera en Ohio cuando comencé CloudWatch. Después de cambiarlo a US East (N. Virginia), todo funciona bien.


Es posible que ya inicie sesión, simplemente no pudimos encontrar los registros que esperamos ...

p.ej

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:*" ], "Resource": "arn:aws:logs:*:*:*" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject" ], "Resource": "arn:aws:s3:::*" } ] }

Después de realizar GET /hello?world=1 ,

Consola local: (simple y claro, ¡bonito!)

app.use(function simpleLogger (req, res, next) { console.info(''[Logger]'', req.method, req.originalUrl) next() })

CloudWatch Logs: (¿puede encontrar fácilmente el registro exacto a continuación?)

[Logger] GET /hello?world=1

Conclusión: demasiado detallado para ubicar los registros originales.


Hay un informe llamado Cómo monitorear AWS Lambda con CloudWatch con una sección sobre "Cómo usar CloudWatch Logs con Lambda". Parece que ya encontraste tu respuesta, pero para cualquiera que no tenga los problemas específicos de IAM, esto puede ayudar.



Tal vez un poco tarde, pero para aquellos que aún luchan por ver los registros de lambda en la observación de nubes. Noté esto con respecto al rol de ejecución de la función lambda: "Puede usar un rol existente con esta función. Tenga en cuenta que Lambda puede asumir el rol y debe tener permisos de Cloudwatch Logs". Entonces, en IAM otorgué "CloudWatchLogsFullAccess" a la función que asigné a mi función. luego, en cloudwatch, debajo de los registros, verá los registros de las funciones asignadas a este rol.


CloudWatch y CloudWatch Logs son permisos diferentes, debe agregar CloudWatch Logs a la política que se adjunta con su rol.