es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Error 404 al agregar un disparador lambda en el grupo de usuarios de Cognito

He creado una plantilla SAM con una función en ella. Después de implementar SAM, la función lambda se agrega y también se muestra al agregar un desencadenador de función lambda en Cognito, pero cuando guardo, da un error 404.

Plantilla SAM

AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: >-
  descripción

Globals:
Function:
CodeUri: .
Runtime: nodejs14.x

Resources:
function1:
Type: ‘AWS::Serverless::Function’
Properties:
FunctionName: function1
Handler: dist/handlers/fun1.handler

Error en Cognito al agregar un desencadenador:

[404 Not Found] No se puede completar la operación de permitir a Cognito invocar la función lambda.
ResourceNotFoundException (ID de solicitud: e963254b-8d2a-49fa-b012-xxxxxxxx)

Nota – si agrego un desencadenador de sincronización de Cognito en el panel de configuración de lambda y luego intento configurar un desencadenador en el grupo de usuarios, funciona.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El error indica que no se pudo encontrar la función lambda especificada. Si ya has creado la función utilizando la plantilla SAM y la has implementado correctamente, entonces debes verificar si el ARN de la función lambda es correcto.

    Asegúrate de que el ARN de la función lambda tenga el formato correcto, que debería ser:

    arn:aws:lambda:<región>:<id_cuenta>:function:<nombre_función>

    Puedes encontrar el ARN de la función en la consola de AWS Lambda o ejecutando el comando aws lambda get-function.

    Si el ARN es correcto, también debes verificar que el grupo de usuarios de Cognito tenga permiso para invocar la función lambda. Esto se puede hacer agregando una declaración de permiso a la política de recursos de la función.

    Por ejemplo:

    "Resources": {
        "function1": {
            "Type": "AWS::Serverless::Function",
            "Properties": {
                "FunctionName": "function1",
                "Handler": "dist/handlers/fun1.handler",
    
                "Policies": [
                    {
                        "PolicyName": "LambdaInvokePermission",
                        "PolicyDocument": {
                            "Statement": [
                                {
                                    "Effect": "Allow",
                                    "Action": "lambda:InvokeFunction",
                                    "Resource": "<arn_lambda>"
                                }
                            ]
                        }
                    }
                ]
            }
        }
    }
    

    Reemplaza <arn_lambda> con el ARN de la función lambda.

    Una vez que hayas agregado la declaración de permiso, intenta agregar el disparador lambda en Cognito nuevamente.

    Si sigues experimentando problemas, verifica nuevamente que tu política esté escrita correctamente y que tu función lambda exista en la misma región que tu configuración de AWS Cognito.</nombre_función></región>

Comments are closed.