如何在 Serverless 框架中配置多个 Cognito 触发器?

How to configure multiple Cognito triggers in Serverless framework?

我正在尝试为无服务器框架中的同一个用户池创建多个 Cognito 触发器,但出于某种原因,我无法让它工作!!

我的函数配置如下

functions:
  PreSignUp:
    handler: dist/cognito-pre-signup.preSignUp
    events:
      - cognitoUserPool:
          pool: app-user-pool
          trigger: PreSignUp
          existing: true
  PostConfirmation:
    handler: dist/cognito-post-confirmation.postConfirmation
    events:
      - cognitoUserPool:
          pool: app-user-pool
          trigger: PostConfirmation
          existing: true

问题是当我尝试注册时收到一条错误消息说 "PostConfirmation invocation failed due to error AccessDeniedException."

但真正奇怪的是,如果我交换配置文件中函数的位置,例如

functions:
  PostConfirmation:
    handler: dist/cognito-post-confirmation.postConfirmation
    events:
      - cognitoUserPool:
          pool: app-user-pool
          trigger: PostConfirmation
          existing: true
  PreSignUp:
    handler: dist/cognito-pre-signup.preSignUp
    events:
      - cognitoUserPool:
          pool: app-user-pool
          trigger: PreSignUp
          existing: true

然后错误消息变为 "PreSignUp invocation failed due to error AccessDeniedException.",这意味着该错误与函数配置的顺序有关(以某种方式相关),因此,配置文件中最先出现的函数可以正常工作很好,但另一个以 "AccessDenied" 错误结束。

好的,以防其他人遇到同样的问题, 所以回答对我有帮助。