

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

# Kait SnapStart runtime Lambda untuk .NET
<a name="snapstart-runtime-hooks-dotnet"></a>

Anda dapat menggunakan kait runtime untuk mengimplementasikan kode sebelum Lambda membuat snapshot atau setelah Lambda melanjutkan fungsi dari snapshot. .NET runtime hooks tersedia sebagai bagian dari paket [Amazon.Lambda.Core](https://www.nuget.org/packages/Amazon.Lambda.Core) (versi 2.5.0 atau yang lebih baru). Pustaka ini menyediakan dua metode yang dapat Anda gunakan untuk menentukan kait runtime Anda:
+ `RegisterBeforeSnapshot()`: Kode untuk dijalankan sebelum pembuatan snapshot
+ `RegisterAfterSnapshot()`: Kode untuk dijalankan setelah melanjutkan fungsi dari snapshot

**catatan**  
Jika Anda menggunakan [kerangka kerja Anotasi Lambda untuk.NET, tingkatkan ke [Amazon.Lambda.Annotations](https://www.nuget.org/packages/Amazon.Lambda.Annotations)](csharp-handler.md#csharp-handler-annotations) versi 1.6.0 atau yang lebih baru untuk memastikan kompatibilitas dengan. SnapStart

## Registrasi dan eksekusi runtime hook
<a name="runtime-hooks-registration-dotnet"></a>

Daftarkan kait Anda dalam kode inisialisasi Anda. Pertimbangkan panduan berikut berdasarkan model [eksekusi](csharp-handler.md#csharp-handler-setup) fungsi Lambda Anda:
+ Untuk [pendekatan perakitan yang dapat dieksekusi](csharp-handler.md#csharp-executable-assembly-handlers), daftarkan kait Anda sebelum Anda memulai bootstrap Lambda dengan. `RunAsync`
+ Untuk [pendekatan perpustakaan kelas](csharp-handler.md#csharp-class-library-handlers), daftarkan kait Anda di konstruktor kelas handler.
+ Untuk [aplikasi ASP.NET Core](csharp-package-asp.md), daftarkan kait Anda sebelum memanggil metode. `WebApplications.Run`

Untuk mendaftarkan kait runtime SnapStart di .NET, gunakan metode berikut:

```
Amazon.Lambda.Core.SnapshotRestore.RegisterBeforeSnapshot(BeforeCheckpoint);
Amazon.Lambda.Core.SnapshotRestore.RegisterAfterRestore(AfterCheckpoint);
```

Ketika beberapa jenis hook terdaftar, urutan Lambda mengeksekusi kait runtime Anda ditentukan oleh urutan pendaftaran:
+ `RegisterBeforeSnapshot()`: Dieksekusi dalam urutan terbalik pendaftaran
+ `RegisterAfterSnapshot()`: Dieksekusi dalam urutan pendaftaran

**catatan**  
Saat Lambda membuat snapshot, kode inisialisasi Anda dapat berjalan hingga 15 menit. Batas waktu adalah 130 detik atau batas [waktu fungsi yang dikonfigurasi](configuration-timeout.md) (maksimum 900 detik), mana yang lebih tinggi. Kait `RegisterBeforeSnapshot()` runtime Anda dihitung terhadap batas waktu kode inisialisasi. Saat Lambda mengembalikan snapshot, runtime harus dimuat dan kait runtime harus selesai dalam batas `RegisterAfterSnapshot()` waktu tunggu (10 detik). Jika tidak, Anda akan mendapatkan SnapStartTimeoutException.

## Contoh
<a name="runtime-hooks-dotnet-code-sample"></a>

Contoh fungsi berikut menunjukkan bagaimana menjalankan kode sebelum checkpointing (`RegisterBeforeSnapshot`) dan setelah restoring (). `RegisterAfterRestore`

```
public class SampleClass
{
    public SampleClass()
    {
        Amazon.Lambda.Core.SnapshotRestore.RegisterBeforeSnapshot(BeforeCheckpoint);
        Amazon.Lambda.Core.SnapshotRestore.RegisterAfterRestore(AfterCheckpoint);
    }

    private ValueTask BeforeCheckpoint()
    {
        // Add logic to be executed before taking the snapshot
        return ValueTask.CompletedTask;
    }

    private ValueTask AfterCheckpoint()
    {
        // Add logic to be executed after restoring the snapshot
        return ValueTask.CompletedTask;
    }

    public APIGatewayProxyResponse FunctionHandler(APIGatewayProxyRequest request, ILambdaContext context)
    {
        // Add business logic

        return new APIGatewayProxyResponse
        {
            StatusCode = 200
        };
    }
}
```