What is the user principal of a cognito preauth function?

0

When you have to give IAM permissions to a cognito preauth trigger, is the role you assign assumed by 'lambda.amazonaws.com' like any other lambda? Or are triggers run by the cognito service principle, 'cognito-idp.amazonaws.com' ?

I need to give my lambda permission to do dynamodb:GetItem on a specific table (by ARN) and it's not working. It might be not working for some other reason than this. I think the answer is it's still lambda.amazonaws.com but wanted to double check, mainly because I can't find what cognito-idp.amazonaws.com is used for.

profile picture
wz2b
preguntada hace un año316 visualizaciones
1 Respuesta
2
Respuesta aceptada

The Lambda Policy has a resource policy that allows it to be accessed by the Congito user pool in the form of:

{
  "Version": "2012-10-17",
  "Id": "default",
  "Statement": [
    {
      "Sid": ",<Some SID>",
      "Effect": "Allow",
      "Principal": {
        "Service": "cognito-idp.amazonaws.com"
      },
      "Action": "lambda:InvokeFunction",
      "Resource": "arn:aws:<region>:<AWS Account>:function:<Lambda function name>",
      "Condition": {
        "ArnLike": {
          "AWS:SourceArn": "arn:aws:cognito-idp:<region>:<AWS Account>:userpool/<User Pool ID>"
        }
      }
    }
  ]
}

But the Lambda function still executes as lambda.amazonaws.com and must be authorized as such through the Lambda Execution Role associated to the Lambda function.

AWS
respondido hace un año
profile picture
EXPERTO
revisado hace 24 días
profile picture
EXPERTO
revisado hace un mes
  • Ahhhh that's much clearer now. The lambda still runs as lambda.amazonaws.com but you have to give cognito-idp.amazonaws.com permission to invoke it. Thanks very much for explaining!

No has iniciado sesión. Iniciar sesión para publicar una respuesta.

Una buena respuesta responde claramente a la pregunta, proporciona comentarios constructivos y fomenta el crecimiento profesional en la persona que hace la pregunta.

Pautas para responder preguntas