2

Ich verwende das Serverless Framework und ich muss einige Standardwerte für den UserPool überschreiben, die von der Lambda-Funktion erstellt wurden. Was ist der richtige Weg? Mein serverless.yml ist die Schaffung von zwei user-pool (gleicher Name), eine für die Lambda-Funktion und eine andere für die UserPool Ressource:Verwenden Sie denselben Cognito UserPool mit Lamda Function and Resources?

service: userpool 

custom: 
    stage: dev 
    poolName: user-pool 

provider: 
    name: aws 
    runtime: nodejs6.10 
    stage: ${opt:stage, self:custom.stage} 

functions: 
    preSignUp: 
    handler: handler.preSignUp 
    events: 
     - cognitoUserPool: 
      pool: ${self:custom.poolName} 
      trigger: PreSignUp 

resources: 
    Resources: 
    UserPool: 
     Type: "AWS::Cognito::UserPool" 
     Properties: 
     UserPoolName: ${self:custom.poolName} 
     AliasAttributes: 
      - email 
     AutoVerifiedAttributes: 
      - email 
     Schema: 
      - Name: name 
      AttributeDataType: String 
      Mutable: true 
      Required: true 
      - Name: email 
      AttributeDataType: String 
      Mutable: false 
      Required: true 

Antwort

1

Gemäß der Dokumentation Serverless in https://serverless.com/framework/docs/providers/aws/guide/resources/#aws---resources

Wenn Sie eine Cognito Benutzer Pool-Ressource erstellt haben, die das folgende Format hat CognitoUserPool {normalizedPoolId}, können Sie die normalizedPoolId für jedes Ihrer Lambda geben Funktionen.

In Ihrem Fall haben Sie den Cognito Benutzer Pool definiert als „CognitoUserPool Testpool“, die Sie in Ihrem Testpool lambda verwenden.

0

Es funktioniert jetzt, aber kann mir jemand erklären, wie? Wie der folgende Code erkennt, dass die Cognito-Ressource und der Pool, die von dem Ereignis erstellt werden, identisch sind?

service: userpool 

custom: 
    stage: dev 

environment: 
    USER_POOL: userPool 

provider: 
    name: aws 
    runtime: nodejs6.10 
    stage: ${opt:stage, self:custom.stage} 

functions: 
    preSignUp: 
    handler: handler.preSignUp 
    events: 
     - cognitoUserPool: 
      pool: TestPool 
      trigger: PreSignUp 

resources: 
    Resources: 
    CognitoUserPoolTestPool: 
     Type: "AWS::Cognito::UserPool" 
     Properties: 
     AliasAttributes: 
      - email 
     AutoVerifiedAttributes: 
      - email 
     Schema: 
      - Name: name 
      AttributeDataType: String 
      Mutable: true 
      Required: true 
      - Name: email 
      AttributeDataType: String 
      Mutable: false 
      Required: true 
+0

Versuchen Sie, den gesamten Stapel und alle Benutzerpools zu entfernen (ich glaube nicht, dass CF sie automatisch löscht) und erneut zu implementieren, um sicherzustellen, dass es funktioniert. –

Verwandte Themen