

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Pemicu Lambda pra pendaftaran
<a name="user-pool-lambda-pre-sign-up"></a>

Anda mungkin ingin menyesuaikan proses pendaftaran di kumpulan pengguna yang memiliki opsi pendaftaran swalayan. [Beberapa penggunaan umum dari pemicu pra pendaftaran adalah untuk melakukan analisis kustom dan pencatatan pengguna baru, menerapkan standar keamanan dan tata kelola, atau menautkan pengguna dari iDP pihak ketiga ke profil pengguna terkonsolidasi.](cognito-user-pools-identity-federation-consolidate-users.md) Anda mungkin juga memiliki pengguna tepercaya yang tidak diharuskan menjalani [verifikasi dan konfirmasi](signing-up-users-in-your-app.md).

Segera sebelum Amazon Cognito menyelesaikan pembuatan pengguna [lokal](cognito-terms.md#terms-localuser) atau [federasi](cognito-terms.md#terms-federateduser) baru, ini mengaktifkan fungsi Lambda pra pendaftaran. Objek permintaan yang dikirim ke fungsi ini berisi atribut yang telah disediakan oleh pendaftaran pengguna lokal atau yang telah berhasil dipetakan dari atribut penyedia untuk pengguna federasi. `userAttributes` Kumpulan pengguna Anda memanggil pemicu ini saat mendaftar layanan mandiri dengan [SignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html)atau masuk pertama kali dengan [penyedia identitas](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-federated) tepercaya, dan pada pembuatan pengguna dengan. [AdminCreateUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminCreateUser.html) Sebagai bagian dari proses pendaftaran, Anda dapat menggunakan fungsi ini untuk menganalisis peristiwa masuk dengan logika khusus, dan memodifikasi atau menolak pengguna baru.

**Topics**
+ [Parameter pemicu Lambda pra-pendaftaran](#cognito-user-pools-lambda-trigger-syntax-pre-signup)
+ [Contoh pra pendaftaran: Konfirmasi otomatis pengguna dari domain terdaftar](#aws-lambda-triggers-pre-registration-example)
+ [Contoh pra-pendaftaran: Konfirmasi otomatis dan verifikasi otomatis semua pengguna](#aws-lambda-triggers-pre-registration-example-2)
+ [Contoh pra pendaftaran: Tolak pendaftaran jika nama pengguna memiliki kurang dari lima karakter](#aws-lambda-triggers-pre-registration-example-3)

## Parameter pemicu Lambda pra-pendaftaran
<a name="cognito-user-pools-lambda-trigger-syntax-pre-signup"></a>

Permintaan yang diteruskan Amazon Cognito ke fungsi Lambda ini adalah kombinasi dari parameter di bawah ini dan parameter [umum yang ditambahkan Amazon](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-working-with-lambda-triggers.html#cognito-user-pools-lambda-trigger-syntax-shared) Cognito ke semua permintaan.

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

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

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

------

### Parameter permintaan pra-pendaftaran
<a name="cognito-user-pools-lambda-trigger-syntax-pre-signup-request"></a>

**userAttributes**  
Satu atau lebih pasangan nilai-nama yang mewakili atribut pengguna. Nama atribut adalah kuncinya.

**validationData**  
Satu atau beberapa pasangan nilai kunci dengan data atribut pengguna yang diteruskan aplikasi Anda ke Amazon Cognito dalam permintaan untuk membuat pengguna baru. Kirim informasi ini ke fungsi Lambda Anda dalam ValidationData parameter permintaan Anda [AdminCreateUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminCreateUser.html)atau [SignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html)API.  
Amazon Cognito tidak menyetel ValidationData data Anda sebagai atribut pengguna yang Anda buat. ValidationData adalah informasi pengguna sementara yang Anda berikan untuk tujuan pemicu Lambda pra pendaftaran Anda.

**clientMetadata**  
Satu atau lebih pasangan nilai-kunci yang dapat Anda berikan sebagai masukan kustom ke fungsi Lambda yang Anda tentukan untuk pemicu pra pendaftaran. Anda dapat meneruskan data ini ke fungsi Lambda dengan menggunakan ClientMetadata parameter dalam tindakan API berikut: [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), dan. [SignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html)

### Parameter respons pra pendaftaran
<a name="cognito-user-pools-lambda-trigger-syntax-pre-signup-response"></a>

Dalam respons, Anda dapat mengatur `autoConfirmUser` ke `true` jika Anda ingin mengonfirmasi pengguna secara otomatis. Anda dapat mengatur `autoVerifyEmail` ke `true` untuk memverifikasi secara otomatis email pengguna. Anda dapat mengatur `autoVerifyPhone` ke `true` untuk memverifikasi secara otomatis nomor telepon pengguna.

**catatan**  
Parameter respons`autoVerifyPhone`, `autoVerifyEmail` dan `autoConfirmUser` diabaikan oleh Amazon Cognito saat fungsi Lambda pra pendaftaran dipicu oleh API. `AdminCreateUser`

**autoConfirmUser**  
Atur ke `true` untuk mengonfirmasi otomatis pengguna, atau `false` untuk sebaliknya.

**autoVerifyEmail**  
Setel `true` untuk menetapkan alamat email pengguna yang mendaftar sebagai terverifikasi, atau `false` sebaliknya. Jika `autoVerifyEmail` diatur ke `true`, atribut `email` harus memiliki nilai yang valid dan bukan nol. Jika tidak, kesalahan akan terjadi dan pengguna tidak akan bisa menyelesaikan pendaftaran.  
Jika `email` atribut dipilih sebagai alias, alias akan dibuat untuk alamat email pengguna saat `autoVerifyEmail` disetel. Jika alias dengan alamat email tersebut sudah ada, alias akan dipindahkan ke pengguna baru dan alamat email pengguna sebelumnya akan ditandai sebagai tidak diverifikasi. Untuk informasi selengkapnya, lihat [Menyesuaikan atribut masuk](user-pool-settings-attributes.md#user-pool-settings-aliases).

**autoVerifyPhone**  
Atur ke `true` untuk mengatur sebagai terverifikasi nomor telepon dari pengguna yang mendaftar, atau `false` untuk sebaliknya. Jika `autoVerifyPhone` diatur ke `true`, atribut `phone_number` harus memiliki nilai yang valid dan bukan nol. Jika tidak, kesalahan akan terjadi dan pengguna tidak akan bisa menyelesaikan pendaftaran.  
Jika atribut `phone_number` dipilih sebagai alias, alias akan dibuat untuk nomor telepon pengguna ketika `autoVerifyPhone` diatur. Jika alias dengan nomor telepon tersebut sudah ada, alias akan dipindahkan ke pengguna baru dan nomor telepon pengguna sebelumnya akan ditandai sebagai tidak terverifikasi. Untuk informasi selengkapnya, lihat [Menyesuaikan atribut masuk](user-pool-settings-attributes.md#user-pool-settings-aliases).

## Contoh pra pendaftaran: Konfirmasi otomatis pengguna dari domain terdaftar
<a name="aws-lambda-triggers-pre-registration-example"></a>

Ini adalah contoh kode pemicu Lambda. Pemicu pra pendaftaran dipanggil segera sebelum Amazon Cognito memproses permintaan pendaftaran. Ini menggunakan atribut kustom **custom:domain** untuk mengonfirmasi pengguna baru secara otomatis dari domain email tertentu. Setiap pengguna baru yang tidak berada dalam domain kustom akan ditambahkan ke kolam pengguna, tetapi tidak dikonfirmasi secara otomatis.

------
#### [ 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 meneruskan informasi peristiwa ke fungsi Lambda Anda. Fungsi kemudian mengembalikan objek acara yang sama ke Amazon Cognito, dengan perubahan apa pun dalam respons. Di konsol Lambda, Anda dapat mengatur peristiwa pengujian dengan data yang relevan dengan pemicu Lambda Anda. Berikut ini adalah peristiwa pengujian untuk sampel kode ini:

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

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

------

## Contoh pra-pendaftaran: Konfirmasi otomatis dan verifikasi otomatis semua pengguna
<a name="aws-lambda-triggers-pre-registration-example-2"></a>

Contoh ini mengonfirmasi semua pengguna dan mengatur atribut `email` dan `phone_number` pengguna menjadi terverifikasi jika atribut tersebut ada. Juga, jika aliasing diaktifkan, alias akan dibuat untuk `phone_number` dan `email` saat verifikasi otomatis diatur. 

**catatan**  
Jika alias dengan nomor telepon yang sama sudah ada, alias akan dipindahkan ke pengguna baru, dan `phone_number` pengguna sebelumnya akan ditandai sebagai belum diverifikasi. Hal yang sama berlaku untuk alamat email. Untuk mencegah hal ini terjadi, Anda dapat menggunakan [ListUsers API](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListUsers.html) kumpulan pengguna untuk melihat apakah ada pengguna yang sudah menggunakan nomor telepon atau alamat email pengguna baru sebagai alias.

------
#### [ 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 meneruskan informasi peristiwa ke fungsi Lambda Anda. Fungsi kemudian mengembalikan objek acara yang sama ke Amazon Cognito, dengan perubahan apa pun dalam respons. Di konsol Lambda, Anda dapat mengatur peristiwa pengujian dengan data yang relevan dengan pemicu Lambda Anda. Berikut ini adalah peristiwa pengujian untuk sampel kode ini:

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

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

------

## Contoh pra pendaftaran: Tolak pendaftaran jika nama pengguna memiliki kurang dari lima karakter
<a name="aws-lambda-triggers-pre-registration-example-3"></a>

Contoh ini memeriksa panjang nama pengguna dalam permintaan pendaftaran. Contoh mengembalikan kesalahan jika pengguna telah memasukkan nama yang panjangnya kurang dari lima karakter.

------
#### [ 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 meneruskan informasi peristiwa ke fungsi Lambda Anda. Fungsi kemudian mengembalikan objek acara yang sama ke Amazon Cognito, dengan perubahan apa pun dalam respons. Di konsol Lambda, Anda dapat mengatur peristiwa pengujian dengan data yang relevan dengan pemicu Lambda Anda. Berikut ini adalah peristiwa pengujian untuk sampel kode ini:

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

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

------