

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.

# Wärmen Sie die SDK-Clients in der AWS SDK for Java 2.x
<a name="sdk-warmup"></a>

Verwenden Sie das `SdkWarmUp` Hilfsprogramm in AWS SDK for Java 2.x , um Ihre SDK-Clients während der Anwendungsinitialisierung aufzuwärmen. Dies reduziert die Latenz der ersten Anfrage, die Ihre Anwendung nach dem Start oder der Wiederherstellung verarbeitet.

Bei einem Warm-up wird der SDK-Anforderungspfad (Erstellen eines Clients und Aufrufen einer Operation) getestet, bevor Ihre Anwendung den tatsächlichen Datenverkehr verarbeitet. Sie verwenden es mit Checkpoint- und Restore-Funktionen wie Lambda. [ SnapStart ](https://docs.aws.amazon.com/lambda/latest/dg/snapstart.html) Diese Funktionen erstellen einen Snapshot Ihrer initialisierten Anwendung und stellen ihn dann anhand dieses Snapshots wieder her, um die Kaltstartlatenz zu reduzieren.

`SdkWarmUp`Andernfalls müssen Sie vor jedem Checkpoint Ihren eigenen Aufwärmcode schreiben, was umständlich ist. Mit tätigen Sie einen einzigen Anruf`SdkWarmUp`, um alle Ihre Kunden zu begeistern. Sie können alle SDK-Clients in Ihrem Classpath warmlaufen lassen oder nur die spezifischen Clients, die Ihre Anwendung verwendet.

In diesem Thema erfahren Sie, wie Sie mit und konfigurieren und verwenden`SdkWarmUp`. CRaC AWS Lambda SnapStart Weitere Informationen zu anderen Techniken, die die Startzeit auf Lambda reduzieren, finden Sie unter[Reduzieren Sie die SDK-Startzeit für AWS Lambda](lambda-optimize-starttime.md).

## Die SdkWarmUp API
<a name="sdk-warmup-api"></a>

`SdkWarmUp`ist Teil des `sdk-core` Moduls und steht daher jedem Servicekunden ohne zusätzliche Abhängigkeit zur Verfügung. Konfigurieren Sie Ihr Projekt so, dass es Version 2.54.0 oder höher von verwendet. AWS SDK for Java 2.x Rufen Sie dann eine der beiden statischen Methoden auf, die in den folgenden Abschnitten beschrieben werden. Führt beim Aufrufen einer der Methoden einen `SdkWarmUp` Netzwerkaufruf durch, um den HTTP-Client warm zu halten. Um den Service-Client aufzuwärmen, verwendet er eine lokale, vorgefertigte Antwort. Es benötigt keine AWS Anmeldeinformationen oder IAM-Berechtigungen und es fallen AWS keine Gebühren an.

### Wärmen Sie alle SDK-Clients im Klassenpfad auf
<a name="sdk-warmup-api-noarg"></a>

Die `warmUp()` Methode erkennt jeden SDK-Dienstclient im Klassenpfad und wärmt jeden Client zusammen mit den von ihnen verwendeten HTTP-Clients auf. Verwenden Sie diese Methode, wenn Sie auf eine kleine Anzahl von Dienstmodulen angewiesen sind und die meisten von ihnen bereitgestellten Clients aufrufen. Das folgende Java Codebeispiel ruft `warmUp()` ohne Argumente auf:

```
import software.amazon.awssdk.core.warmup.SdkWarmUp;

SdkWarmUp.warmUp();
```

Diese Methode wird höchstens einmal pro JVM ausgeführt. Nach einem erfolgreichen Aufruf kehren nachfolgende Aufrufe sofort zurück.

### Wärmen Sie bestimmte SDK-Clients auf
<a name="sdk-warmup-api-targeted"></a>

Die `warmUp(Class<? extends SdkClient>... clients)` Methode wärmt nur die Clients auf, die Sie benennen. Übergeben Sie eine synchrone Clientklasse, um den synchronen Pfad aufzuwärmen, oder eine asynchrone Clientklasse, um den asynchronen Pfad aufzuwärmen.

Verwenden Sie diese Methode, wenn Ihr Klassenpfad mehr Service-Clients enthält, als Ihre Anwendung aufruft. Dies passiert beispielsweise, wenn eine Abhängigkeit Dienstmodule enthält, die Sie nicht verwenden. Wenn Sie nur die Clients benennen, die Sie benötigen, bleibt die Aufwärmzeit proportional zur tatsächlichen Nutzung Ihrer Anwendung und nicht zu Ihrem vollständigen Klassenpfad. Das folgende Java Codebeispiel wärmt nur die Klassen und: `S3Client` `DynamoDbClient`

```
import software.amazon.awssdk.core.warmup.SdkWarmUp;
import software.amazon.awssdk.services.s3.S3Client;
import software.amazon.awssdk.services.dynamodb.DynamoDbClient;

SdkWarmUp.warmUp(S3Client.class, DynamoDbClient.class);
```

## Mit Lambda verwenden SdkWarmUp SnapStart
<a name="sdk-warmup-lambda-snapstart"></a>

[AWS Lambda SnapStart](https://docs.aws.amazon.com/lambda/latest/dg/snapstart.html)verbessert die Startleistung für Java Funktionen. Wenn Sie eine neue Version einer Funktion veröffentlichen, SnapStart initialisiert Lambda sie und erstellt einen Snapshot des Speicher- und Festplattenzustands. Anschließend wird der Snapshot zur Wiederverwendung zwischengespeichert. Informationen zu unterstützten Laufzeiten und zur Aktivierung SnapStart für Ihre Funktion finden Sie im *AWS Lambda Entwicklerhandbuch. *

Da Lambda den Snapshot erstellt, nachdem der Konstruktor Ihres Handlers ausgeführt wurde, rufen Sie den Konstruktor `SdkWarmUp.warmUp()` auf. Der Snapshot enthält dann Ihre aufgewärmten Clients, und jeder Aufruf, der aus dem Snapshot wiederhergestellt wird, profitiert vom Warm-Up. Das folgende Java Codebeispiel ruft einen `SdkWarmUp.warmUp()` Lambda-Handler-Konstruktor auf:

```
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
import software.amazon.awssdk.core.warmup.SdkWarmUp;

public class MyHandler implements RequestHandler<String, String> {

    public MyHandler() {
        SdkWarmUp.warmUp();
        // Your other initialization here.
    }

    @Override
    public String handleRequest(String input, Context context) {
        // Your handler logic here.
    }
}
```

Wenn Ihre Funktion benutzerdefinierten Code ausführen muss, bevor Lambda den Snapshot erstellt oder nachdem er wiederhergestellt wurde, implementieren SnapStart Sie Runtime-Hooks. Weitere Informationen finden Sie unter [ SnapStart Runtime-Hooks für Java ](https://docs.aws.amazon.com/lambda/latest/dg/snapstart-runtime-hooks-java.html) im *AWS Lambda Entwicklerhandbuch*.

## SdkWarmUp Mit eigenständigem cRAC verwenden
<a name="sdk-warmup-standalone-crac"></a>

Sie können with auch CRaC direkt in einer Anwendung verwenden`SdkWarmUp`, die ihre eigenen Checkpoints verwaltet. Dieser Abschnitt zeigt, wo der Aufwärmanruf in einer Anwendung hingehört, für die bereits konfiguriert ist. CRaC Informationen zur Konfiguration einer Anwendung für finden Sie CRaC unter [ Step-by-step CrAC-Support unter. ](https://github.com/CRaC/docs/blob/master/STEP-BY-STEP.md) GitHub Diese exemplarische Vorgehensweise behandelt die unterstützten JDK-Distributionen, die Plattformvoraussetzungen und die `org.crac:crac` Abhängigkeit, die die Lifecycle-Schnittstellen erfordern.

### Wärmen Sie sich vor dem Checkpoint auf
<a name="sdk-warmup-crac-step1"></a>

Rufen Sie `SdkWarmUp.warmUp()` während der Initialisierung an, bevor Sie den Checkpoint betreten. Ihre Anwendung registriert sich bereits als CRAC, um Verbindungen rund `Resource` um den Checkpoint zu schließen und wieder zu öffnen. Fügen Sie den Aufwärmaufruf demselben Konstruktor hinzu, wie im folgenden Codebeispiel gezeigt: Java

```
import org.crac.Context;
import org.crac.Core;
import org.crac.Resource;
import software.amazon.awssdk.core.warmup.SdkWarmUp;

public class MyApp implements Resource {

    public MyApp() {
        SdkWarmUp.warmUp();
        // Your other initialization here.
        Core.getGlobalContext().register(this);
    }

    @Override
    public void beforeCheckpoint(Context<? extends Resource> context) throws Exception {
        // Close your service clients here.
    }

    @Override
    public void afterRestore(Context<? extends Resource> context) throws Exception {
        // Create your service clients again here.
    }
}
```

**Anmerkung**  
cRAC nimmt keinen Checkpoint entgegen, solange ein Dateideskriptor geöffnet ist. Wenn Sie den AWS CRT-based HTTP-Client verwenden, reicht es nicht aus, Ihre Service-Clients allein zu schließen, da der Client eine gemeinsame Ereignisschleife offen hält. Geben Sie es frei, `beforeCheckpoint` wie im folgenden Java-Codebeispiel gezeigt:  

```
import org.crac.Context;
import org.crac.Resource;
import software.amazon.awssdk.crt.CrtResource;
import software.amazon.awssdk.crt.io.EventLoopGroup;

@Override
public void beforeCheckpoint(Context<? extends Resource> context) {
    EventLoopGroup.closeStaticDefault();
    CrtResource.waitForNoResources();
}
```
Die Netty basierten und Apache basierten HTTP-Clients geben ihre Ressourcen frei, wenn Sie den Service-Client schließen, sodass kein zusätzlicher Teardown erforderlich ist.

Nehmen Sie den Checkpoint wie gewohnt ein.

## Weitere Ressourcen
<a name="sdk-warmup-additional-resources"></a>

Die folgenden Ressourcen enthalten weitere Informationen zu den in diesem Abschnitt behandelten Themen:
+ [cRAC-Dokumentation ](https://github.com/CRaC/docs) zu GitHub