

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

# Memigrasi pengguna pemicu Lambda
<a name="user-pool-lambda-migrate-user"></a>

Saat pengguna tidak ada di kumpulan pengguna saat masuk dengan kata sandi, atau dalam alur lupa kata sandi, Amazon Cognito akan memanggil pemicu ini. Setelah fungsi Lambda berhasil dikembalikan, Amazon Cognito membuat pengguna di kolam pengguna. Untuk detail tentang alur autentikasi dengan pemicu Lambda migrasi pengguna, lihat. [Mengimpor pengguna dengan pemicu Lambda migrasi pengguna](cognito-user-pools-import-using-lambda.md)

Untuk memigrasikan pengguna dari direktori pengguna yang ada ke kumpulan pengguna Amazon Cognito saat login, atau selama alur lupa kata sandi, gunakan pemicu Lambda ini.

**Topics**
+ [Migrasikan sumber pemicu Lambda pengguna](#user-pool-lambda-migrate-user-trigger-source)
+ [Migrasikan parameter pemicu Lambda pengguna](#cognito-user-pools-lambda-trigger-syntax-user-migration)
+ [Contoh: Migrasikan pengguna dengan kata sandi yang ada](#aws-lambda-triggers-user-migration-example-1)

## Migrasikan sumber pemicu Lambda pengguna
<a name="user-pool-lambda-migrate-user-trigger-source"></a>


| Nilai triggerSource | Peristiwa | 
| --- | --- | 
| UserMigration\$1Authentication[1](#cognito-migrate-user-passwordless-note) | Migrasi pengguna saat masuk. | 
| UserMigration\$1ForgotPassword | Migrasi pengguna selama alur lupa kata sandi. | 

1 [Amazon Cognito tidak memanggil pemicu ini saat pengguna mengautentikasi dengan login tanpa kata sandi.](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passwordless)

## Migrasikan parameter pemicu Lambda pengguna
<a name="cognito-user-pools-lambda-trigger-syntax-user-migration"></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 ]

```
{
    "userName": "string",
    "request": {
        "password": "string",
        "validationData": {
            "string": "string",
            . . .
        },
        "clientMetadata": {
            "string": "string",
      	. . .
        }
    },
    "response": {
        "userAttributes": {
            "string": "string",
            . . .
        },
        "finalUserStatus": "string",
        "messageAction": "string",
        "desiredDeliveryMediums": [ "string", . . .],
        "forceAliasCreation": boolean,
        "enableSMSMFA": boolean
    }
}
```

------

### Migrasikan parameter permintaan pengguna
<a name="cognito-user-pools-lambda-trigger-syntax-user-migration-request"></a>

**userName**  
Nama pengguna yang dimasukkan pengguna saat masuk.

**password**  
Kata sandi yang dimasukkan pengguna saat masuk. Amazon Cognito tidak mengirimkan nilai ini dalam permintaan yang diprakarsai oleh alur lupa kata sandi.

**validationData**  
Satu atau beberapa pasangan nilai kunci yang berisi data validasi dalam permintaan login pengguna. Untuk meneruskan data ini ke fungsi Lambda Anda, Anda dapat menggunakan ClientMetadata parameter dalam tindakan [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)dan [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)API.

**clientMetadata**  
Satu atau beberapa pasangan nilai kunci yang dapat Anda berikan sebagai input khusus ke fungsi Lambda untuk pemicu pengguna yang bermigrasi. Untuk meneruskan data ini ke fungsi Lambda Anda, Anda dapat menggunakan ClientMetadata parameter dalam tindakan [AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html)dan [ForgotPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ForgotPassword.html)API.

### Migrasikan parameter respons pengguna
<a name="cognito-user-pools-lambda-trigger-syntax-user-migration-response"></a>

**userAttributes**  
Bidang ini wajib diisi.   
Bidang ini harus berisi satu atau beberapa pasangan nama-nilai yang disimpan Amazon Cognito di profil pengguna di kumpulan pengguna Anda dan digunakan sebagai atribut pengguna. Anda dapat menyertakan atribut pengguna standar dan kustom. Atribut kustom memerlukan prefiks `custom:` untuk membedakannya dari atribut standar. Untuk informasi selengkapnya, lihat [Atribut khusus](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-settings-attributes.html#user-pool-settings-custom-attributes.html).  
Untuk mengatur ulang kata sandi mereka dalam alur lupa kata sandi, pengguna harus memiliki alamat email terverifikasi atau nomor telepon terverifikasi. Amazon Cognito mengirimkan pesan yang berisi kode kata sandi reset ke alamat email atau nomor telepon di atribut pengguna.     
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/cognito/latest/developerguide/user-pool-lambda-migrate-user.html)

**finalUserStatus**  
Anda dapat mengatur parameter ini `CONFIRMED` untuk mengonfirmasi pengguna secara otomatis sehingga mereka dapat masuk dengan kata sandi sebelumnya. Saat Anda mengatur pengguna`CONFIRMED`, mereka tidak perlu mengambil tindakan tambahan sebelum mereka dapat masuk. Jika Anda tidak menyetel atribut ini ke`CONFIRMED`, itu disetel ke`RESET_REQUIRED`.  
`RESET_REQUIRED`Ini berarti bahwa pengguna harus mengubah kata sandi mereka segera setelah migrasi saat login, dan aplikasi klien Anda harus menangani `PasswordResetRequiredException` selama alur autentikasi. `finalUserStatus`  
Amazon Cognito tidak menerapkan kebijakan kekuatan kata sandi yang Anda konfigurasikan untuk kumpulan pengguna selama migrasi menggunakan pemicu Lambda. Jika kata sandi tidak memenuhi kebijakan kata sandi yang Anda konfigurasi, Amazon Cognito masih menerima kata sandi sehingga dapat terus memigrasi pengguna. Untuk memberlakukan kebijakan kekuatan kata sandi dan menolak kata sandi yang tidak memenuhi kebijakan, validasi kekuatan kata sandi dalam kode Anda. Kemudian, jika kata sandi tidak memenuhi kebijakan, setel finalUserStatus ke`RESET_REQUIRED`.

**messageAction**  
Anda dapat mengatur parameter ini untuk menolak `SUPPRESS` untuk mengirim pesan selamat datang yang biasanya dikirimkan Amazon Cognito ke pengguna baru. Jika fungsi Anda tidak mengembalikan parameter ini, Amazon Cognito mengirimkan pesan selamat datang.

**desiredDeliveryMediums**  
Anda dapat mengatur parameter ini `EMAIL` untuk mengirim pesan selamat datang melalui email, atau `SMS` untuk mengirim pesan selamat datang melalui SMS. Jika fungsi Anda tidak mengembalikan parameter ini, Amazon Cognito mengirimkan pesan selamat datang melalui SMS.

**forceAliasCreation**  
Jika Anda menyetel parameter ini `TRUE` dan nomor telepon atau alamat email dalam UserAttributes parameter sudah ada sebagai alias dengan pengguna lain, panggilan API akan memigrasikan alias dari pengguna sebelumnya ke pengguna yang baru dibuat. Pengguna sebelumnya tidak dapat lagi masuk menggunakan alias itu.  
Jika Anda menyetel parameter ini ke `FALSE` dan alias ada, Amazon Cognito tidak memigrasikan pengguna dan menampilkan kesalahan ke aplikasi klien.  
Jika Anda tidak mengembalikan parameter ini, Amazon Cognito menganggap nilainya “salah”.

**AktifkanSMSMFA**  
Setel parameter ini `true` agar pengguna yang dimigrasi melengkapi otentikasi multi-faktor (MFA) pesan teks SMS untuk masuk. Kumpulan pengguna Anda harus mengaktifkan MFA. Atribut pengguna Anda dalam parameter permintaan harus menyertakan nomor telepon, atau migrasi pengguna tersebut akan gagal.

## Contoh: Migrasikan pengguna dengan kata sandi yang ada
<a name="aws-lambda-triggers-user-migration-example-1"></a>

Contoh fungsi Lambda ini memigrasikan pengguna dengan kata sandi yang ada dan menekan pesan selamat datang dari Amazon Cognito.

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

```
exports.handler = (event, context, callback) => {
  var user;

  if (event.triggerSource == "UserMigration_Authentication") {
    // authenticate the user with your existing user directory service
    user = authenticateUser(event.userName, event.request.password);
    if (user) {
      event.response.userAttributes = {
        email: user.emailAddress,
        email_verified: "true",
      };
      event.response.finalUserStatus = "CONFIRMED";
      event.response.messageAction = "SUPPRESS";
      context.succeed(event);
    } else {
      // Return error to Amazon Cognito
      callback("Bad password");
    }
  } else if (event.triggerSource == "UserMigration_ForgotPassword") {
    // Lookup the user in your existing user directory service
    user = lookupUser(event.userName);
    if (user) {
      event.response.userAttributes = {
        email: user.emailAddress,
        // required to enable password-reset code to be sent to user
        email_verified: "true",
      };
      event.response.messageAction = "SUPPRESS";
      context.succeed(event);
    } else {
      // Return error to Amazon Cognito
      callback("Bad password");
    }
  } else {
    // Return error to Amazon Cognito
    callback("Bad triggerSource " + event.triggerSource);
  }
};
```

------