

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Lambda-Auslöser für die Vorab-Registrierung
<a name="user-pool-lambda-pre-sign-up"></a>

Möglicherweise möchten Sie den Anmeldevorgang in Benutzerpools anpassen, die über Self-Service-Anmeldeoptionen verfügen. Häufig wird der Trigger vor der Anmeldung verwendet, um benutzerdefinierte Analysen und Aufzeichnungen neuer Benutzer durchzuführen, Sicherheits- und Governance-Standards anzuwenden oder Benutzer von einem Drittanbieter-IdP mit einem [konsolidierten Benutzerprofil](cognito-user-pools-identity-federation-consolidate-users.md) zu verknüpfen. Möglicherweise haben Sie auch vertrauenswürdige Benutzer, die sich keiner [Überprüfung und Bestätigung](signing-up-users-in-your-app.md) unterziehen müssen.

Unmittelbar bevor Amazon Cognito die Erstellung eines neuen [lokalen](cognito-terms.md#terms-localuser) oder [Verbundbenutzers](cognito-terms.md#terms-federateduser) abschließt, aktiviert es die Lambda-Funktion vor der Anmeldung. Das `userAttributes` in der Anfrage an diese Funktion gesendete Objekt enthält Attribute, die bei der lokalen Benutzerregistrierung bereitgestellt wurden oder die erfolgreich den Anbieterattributen für einen Verbundbenutzer zugeordnet wurden. Ihr Benutzerpool ruft diesen Trigger bei der Self-Service-Registrierung [SignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html)oder der ersten Anmeldung bei einem vertrauenswürdigen [Identitätsanbieter](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-federated) und bei der Benutzererstellung mit auf. [AdminCreateUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminCreateUser.html) Im Rahmen des Anmeldevorgangs können Sie diese Funktion verwenden, um das Anmeldeereignis mit benutzerdefinierter Logik zu analysieren und den neuen Benutzer zu ändern oder abzulehnen.

**Topics**
+ [Lambda-Auslöserparameter für die Vorab-Registrierung](#cognito-user-pools-lambda-trigger-syntax-pre-signup)
+ [Beispiel für Vorab-Registrierung: Automatische Bestätigung von Benutzern aus einer registrierten Domäne](#aws-lambda-triggers-pre-registration-example)
+ [Beispiel für Voranmeldung: Automatische Bestätigung und Verifizierung aller Benutzer](#aws-lambda-triggers-pre-registration-example-2)
+ [Beispiel für die Vorab-Registrierung: Anmeldung ablehnen, wenn der Benutzername weniger als fünf Zeichen enthält](#aws-lambda-triggers-pre-registration-example-3)

## Lambda-Auslöserparameter für die Vorab-Registrierung
<a name="cognito-user-pools-lambda-trigger-syntax-pre-signup"></a>

Die Anforderung, die Amazon Cognito an diese Lambda-Funktion übergibt, ist eine Kombination der folgenden Parameter und der [allgemeinen Parameter](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-working-with-lambda-triggers.html#cognito-user-pools-lambda-trigger-syntax-shared), die Amazon Cognito allen Anfragen hinzufügt.

------
#### [ JSON ]

```
{
    "request": {
        "userAttributes": {
            "string": "string",
            . . .
        },
        "validationData": {
            "string": "string",
            . . .
         },
        "clientMetadata": {
            "string": "string",
            . . .
         }
    },

    "response": {
        "autoConfirmUser": "boolean",
        "autoVerifyPhone": "boolean",
        "autoVerifyEmail": "boolean"
    }
}
```

------

### Anforderungsparameter für die Vorab-Registrierung
<a name="cognito-user-pools-lambda-trigger-syntax-pre-signup-request"></a>

**userAttributes**  
Ein oder mehrere Name-Wert-Paare, die Benutzerattribute darstellen. Die Attributnamen sind die Schlüssel.

**validationData**  
Ein oder mehrere Schlüssel/Wert-Paare mit Benutzerattributdaten, die Ihre App in der Anfrage zur Erstellung eines neuen Benutzers an Amazon Cognito übergeben hat. Senden Sie diese Informationen im ValidationData Parameter Ihrer [AdminCreateUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminCreateUser.html)oder [SignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html)API-Anfrage an Ihre Lambda-Funktion.  
Amazon Cognito legt Ihre ValidationData Daten nicht als Attribute des von Ihnen erstellten Benutzers fest. ValidationData sind temporäre Benutzerinformationen, die Sie für Ihren Lambda-Trigger vor der Registrierung angeben.

**clientMetadata**  
Ein oder mehrere Schlüssel-Wert-Paare, die Sie als benutzerdefinierte Eingabe für die Lambda-Funktion bereitstellen können, die Sie für den Auslöser für die Vorab-Registrierung angeben. Sie können diese Daten an Ihre Lambda-Funktion übergeben, indem Sie den ClientMetadata Parameter in den folgenden API-Aktionen verwenden: [AdminCreateUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminCreateUser.html), [AdminRespondToAuthChallenge[ForgotPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ForgotPassword.html)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html), und [SignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html).

### Antwortparameter für die Vorab-Registrierung
<a name="cognito-user-pools-lambda-trigger-syntax-pre-signup-response"></a>

In der Antwort können Sie `autoConfirmUser` auf `true` setzen, wenn der Benutzer automatisch bestätigt werden soll. Sie können die Einstellung `autoVerifyEmail` auf `true` setzen und somit die E-mail-Adresse des Benutzers automatisch überprüfen. Sie könne die Einstellung `autoVerifyPhone` auf `true` setzen und somit die Telefonnummer des Benutzers automatisch überprüfen.

**Anmerkung**  
Die Antwortparameter `autoVerifyPhone`, `autoVerifyEmail` und `autoConfirmUser` werden von Amazon Cognito ignoriert, wenn die Lambda-Funktion vor der Registrierung durch die `AdminCreateUser`-API ausgelöst wird.

**autoConfirmUser**  
Setzen Sie diesen Parameter auf `true`, wenn der Benutzer automatisch bestätigt werden soll. Setzen Sie ihn andernfalls auf `false`.

**autoVerifyEmail**  
Legen Sie diesen Parameter auf `true` fest, um die Verifizierung der E-Mail-Adresse eines Benutzers, der sich gerade anmeldet, zu bestätigen. Legen Sie ihn andernfalls auf `false` fest. Falls `autoVerifyEmail` auf `true` gesetzt ist, muss das Attribut `email` einen gültigen Wert besitzen, bei dem es sich nicht um Null handeln darf. Andernfalls tritt ein Fehler auf und der Benutzer wird die Registrierung nicht abschließen können.  
Wenn das Attribut `email` als Alias ausgewählt ist, wird ein Alias für die E-Mail-Adresse des Benutzers erstellt. Dabei muss `autoVerifyEmail` aktiv sein. Wenn bereits ein Alias mit dieser E-Mail-Adresse vorhanden ist, wird der Alias dem neuen Benutzer zugewiesen. Die E-Mail-Adresse des vorherigen Benutzers wird als nicht bestätigt gekennzeichnet. Weitere Informationen finden Sie unter [Anpassen von Anmeldeattributen](user-pool-settings-attributes.md#user-pool-settings-aliases).

**autoVerifyPhone**  
Setzen Sie diesen Parameter auf `true` um die Verifizierung der Telefonnummer eines Benutzers, der sich grade anmeldet, zu bestätigen. Setzen Sie ihn andernfalls auf `false`. Falls `autoVerifyPhone` auf `true` gesetzt ist, muss das Attribut `phone_number` einen gültigen Wert besitzen, bei dem es sich nicht um Null handeln darf. Andernfalls tritt ein Fehler auf und der Benutzer wird die Registrierung nicht abschließen können.  
Wenn das Attribut `phone_number` als Alias ausgewählt ist, wird ein Alias für die Telefonnummer des Benutzers erstellt. Dabei muss `autoVerifyPhone` aktiv sein. Wenn ein Alias mit dieser Telefonnummer bereits existiert, wird das Alias einem neuen Benutzer zugewiesen. Die Telefonnummer des vorherigen Benutzers wird dabei als nicht-verifiziert gekennzeichnet. Weitere Informationen finden Sie unter [Anpassen von Anmeldeattributen](user-pool-settings-attributes.md#user-pool-settings-aliases).

## Beispiel für Vorab-Registrierung: Automatische Bestätigung von Benutzern aus einer registrierten Domäne
<a name="aws-lambda-triggers-pre-registration-example"></a>

Dies ist ein Beispiel für einen Lambda-Triggercode. Der Trigger vor der Anmeldung wird unmittelbar vor der Verarbeitung der Registrierungsanfrage durch Amazon Cognito ausgelöst. Sie verwendet ein benutzerdefiniertes Attribut **custom:domain**, um neue Benutzer von einer bestimmten E-Mail-Domäne automatisch zu bestätigen. Alle neuen Benutzer, die sich nicht in der benutzerdefinierten Domäne befinden, werden dem Benutzerpool hinzugefügt, aber nicht automatisch bestätigt.

------
#### [ Node.js ]

```
export const handler = async (event, context, callback) => {
  // Set the user pool autoConfirmUser flag after validating the email domain
  event.response.autoConfirmUser = false;

  // Split the email address so we can compare domains
  var address = event.request.userAttributes.email.split("@");

  // This example uses a custom attribute "custom:domain"
  if (event.request.userAttributes.hasOwnProperty("custom:domain")) {
    if (event.request.userAttributes["custom:domain"] === address[1]) {
      event.response.autoConfirmUser = true;
    }
  }

  // Return to Amazon Cognito
  callback(null, event);
};
```

------
#### [ Python ]

```
def lambda_handler(event, context):
    # It sets the user pool autoConfirmUser flag after validating the email domain
    event['response']['autoConfirmUser'] = False

    # Split the email address so we can compare domains
    address = event['request']['userAttributes']['email'].split('@')

    # This example uses a custom attribute 'custom:domain'
    if 'custom:domain' in event['request']['userAttributes']:
        if event['request']['userAttributes']['custom:domain'] == address[1]:
            event['response']['autoConfirmUser'] = True

    # Return to Amazon Cognito
    return event
```

------

Amazon Cognito übergibt Ereignisinformationen an Ihre Lambda-Funktion. Die Funktion gibt dann das gleiche Ereignisobjekt mit allen Änderungen in der Antwort an Amazon Cognito zurück. Sie können in der Lambda-Konsole ein Testereignis mit den für Ihren Lambda-Auslöser relevanten Daten einrichten. Das Folgende ist ein Testereignis für dieses Codebeispiel:

------
#### [ JSON ]

```
{
    "request": {
        "userAttributes": {
            "email": "testuser@example.com",
            "custom:domain": "example.com"
        }
    },
    "response": {}
}
```

------

## Beispiel für Voranmeldung: Automatische Bestätigung und Verifizierung aller Benutzer
<a name="aws-lambda-triggers-pre-registration-example-2"></a>

Dieses Beispiel bestätigt alle Benutzer und setzt die Attribute `email` und `phone_number` des Benutzers auf verifiziert, wenn das Attribut vorhanden ist. Wenn Aliasse unterstützt werden, werden für `phone_number` und `email` außerdem Aliasse erstellt, wenn die automatische Bestätigung festgelegt ist. 

**Anmerkung**  
Wenn bereits ein Alias mit derselben Telefonnummer vorhanden ist, wird der Alias dem neuen Benutzer zugewiesen. Die `phone_number` des vorherigen Benutzers wird als nicht bestätigt gekennzeichnet. Dies gilt auch für E-Mail-Adressen. Um dies zu verhindern, können Sie mithilfe der [ListUsers Benutzerpools-API](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListUsers.html) überprüfen, ob es einen bestehenden Benutzer gibt, der die Telefonnummer oder E-Mail-Adresse des neuen Benutzers bereits als Alias verwendet.

------
#### [ Node.js ]

```
exports.handler = (event, context, callback) => {
  // Confirm the user
  event.response.autoConfirmUser = true;

  // Set the email as verified if it is in the request
  if (event.request.userAttributes.hasOwnProperty("email")) {
    event.response.autoVerifyEmail = true;
  }

  // Set the phone number as verified if it is in the request
  if (event.request.userAttributes.hasOwnProperty("phone_number")) {
    event.response.autoVerifyPhone = true;
  }

  // Return to Amazon Cognito
  callback(null, event);
};
```

------
#### [ Python ]

```
def lambda_handler(event, context):
    # Confirm the user
    event['response']['autoConfirmUser'] = True

    # Set the email as verified if it is in the request
    if 'email' in event['request']['userAttributes']:
        event['response']['autoVerifyEmail'] = True

    # Set the phone number as verified if it is in the request
    if 'phone_number' in event['request']['userAttributes']:
        event['response']['autoVerifyPhone'] = True

    # Return to Amazon Cognito
    return event
```

------

Amazon Cognito übergibt Ereignisinformationen an Ihre Lambda-Funktion. Die Funktion gibt dann das gleiche Ereignisobjekt mit allen Änderungen in der Antwort an Amazon Cognito zurück. Sie können in der Lambda-Konsole ein Testereignis mit den für Ihren Lambda-Auslöser relevanten Daten einrichten. Das Folgende ist ein Testereignis für dieses Codebeispiel:

------
#### [ JSON ]

```
{
  "request": {
    "userAttributes": {
      "email": "user@example.com",
      "phone_number": "+12065550100"
    }
  },
  "response": {}
}
```

------

## Beispiel für die Vorab-Registrierung: Anmeldung ablehnen, wenn der Benutzername weniger als fünf Zeichen enthält
<a name="aws-lambda-triggers-pre-registration-example-3"></a>

In diesem Beispiel wird die Länge des Benutzernamens in einer Anmeldeanforderung überprüft. Das Beispiel gibt einen Fehler zurück, wenn der Benutzer einen Namen mit weniger als fünf Zeichen eingegeben hat.

------
#### [ Node.js ]

```
export const handler = (event, context, callback) => {
    // Impose a condition that the minimum length of the username is 5 is imposed on all user pools.
    if (event.userName.length < 5) {
        var error = new Error("Cannot register users with username less than the minimum length of 5");
        // Return error to Amazon Cognito
        callback(error, event);
    }
    // Return to Amazon Cognito
    callback(null, event);
};
```

------
#### [ Python ]

```
def lambda_handler(event, context):
    if len(event['userName']) < 5:
        raise Exception("Cannot register users with username less than the minimum length of 5")
    # Return to Amazon Cognito
    return event
```

------

Amazon Cognito übergibt Ereignisinformationen an Ihre Lambda-Funktion. Die Funktion gibt dann das gleiche Ereignisobjekt mit allen Änderungen in der Antwort an Amazon Cognito zurück. Sie können in der Lambda-Konsole ein Testereignis mit den für Ihren Lambda-Auslöser relevanten Daten einrichten. Das Folgende ist ein Testereignis für dieses Codebeispiel:

------
#### [ JSON ]

```
{
  "userName": "rroe",
  "response": {}
}
```

------