Einrichtung von IronPDF for Java auf AWS

This article was translated from English: Does it need improvement?
Translated
View the article in English

Diese Anleitung führt durch das Deployment von IronPDF for Java auf AWS Lambda unter Verwendung von Docker und AWS SAM. Da IronPDF von einer nativen Chrome-basierten Rendering-Engine abhängt, kann es nicht in standardmäßigen Zip-eingesetzten Lambda-Funktionen ausgeführt werden — Docker ist das einzige unterstützte Deploy-Modell. Die folgenden Schritte umfassen alles von der Installation der erforderlichen Werkzeuge, über die Konfiguration von pom.xml-Abhängigkeiten und das Schreiben des Lambda-Handlers bis zum Erstellen des Container-Images und dessen Bereitstellung mit dem SAM CLI.

Schnellstart: Deploy IronPDF for Java auf AWS Lambda

Nutzen Sie IronPDF heute kostenlos in Ihrem Projekt.

Erster Schritt:
green arrow pointer

Inhaltsverzeichnis

Was sind die Voraussetzungen?

Bevor Sie beginnen, bestätigen Sie, dass die folgenden Werkzeuge auf der Entwicklungsmaschine installiert sind. Jedes Tool spielt eine spezifische Rolle in der Build-und-Deploy-Pipeline.

  • IntelliJ IDEA — die in diesem Leitfaden verwendete IDE. Download von jetbrains.com/idea.
  • AWS Toolkit for JetBrains — stellt den SAM-Projektassistenten und die Lambda-Ausführungskonfigurationen innerhalb von IntelliJ bereit. Einrichtungsanleitungen finden Sie auf der AWS Toolkit for JetBrains Dokumentationsseite.
  • AWS SAM CLI — das Befehlszeilenwerkzeug, das Docker-Images erstellt und Lambda-Funktionen bereitstellt. Installieren Sie es, indem Sie die SAM CLI Installationsanleitung befolgen.
  • Docker Desktop — erforderlich, da die Lambda-Funktion als Container-Image und nicht als Zip-Archiv verpackt ist. Download Docker Community Edition.

Für lokale Aufruftests vor dem Deployment zu AWS, installieren Sie auch:

Sobald alle Werkzeuge vorhanden sind, öffnen Sie IntelliJ IDEA und erstellen Sie ein neues Projekt über Datei → Neu → Projekt. Im Projektassistenten die AWS Lambda-Vorlage auswählen und folgende Optionen wählen:

  • Package Type: Image
  • Laufzeit: java8 oder java11
  • SAM-Vorlage: Maven

AWS Lambda-Projekterstellung in IntelliJ IDEA mit ausgewähltem Imagepakettyp

AWS Lambda-Konfigurationsbildschirm zeigt java8-Laufzeit und Maven-SAM-Vorlage

Warum müssen Sie Docker anstelle der Zip-Bereitstellung verwenden?

AWS Lambda unterstützt zwei Bereitstellungspakettypen: Zip-Archive und Container-Images. Zip-Bereitstellung funktioniert gut für leichte Java-Funktionen, da die Laufzeitumgebung vollständig von AWS verwaltet wird. IronPDF liefert jedoch ein natives Binärprogramm – eine Chrome-basierte PDF-Rendering-Engine –, die zur Laufzeit extrahiert und ausgeführt werden muss. Die Lambda-Ausführungsumgebung für Zip-Bereitstellungen beschränkt Dateisystemschreibvorgänge auf /tmp, und die Zip-Paketebene verhindert die Extraktion großer nativer Binärprogramme.

Der Einsatz von Container-Images hebt diese Beschränkungen auf. Wenn Sie Ihr eigenes Docker-Image definieren, kontrollieren Sie das Basis-Betriebssystem, die installierten Systempakete und das Verzeichnislayout. Die Rendering-Engine von IronPDF kann beim Start zu /tmp extrahiert werden, die erforderlichen Systembibliotheken können im Image vorinstalliert werden, und die Container-Größenbeschränkung (10 GB) ist groß genug, um die vollständige Engine aufzunehmen.

Die praktische Konsequenz ist einfach: Setzen Sie PackageType: Image in template.yaml und erstellen Sie mithilfe eines Docker-fähigen Basis-Images. Die SAM CLI kümmert sich um den Rest.

Wie konfigurieren Sie die Maven-Abhängigkeiten?

Die pom.xml-Datei benötigt drei Kategorien zusätzlicher Abhängigkeiten gegenüber dem Standard-Lambda-SDK: die IronPDF-Java-Bibliothek, die IronPDF-Linux-x64-Rendering-Engine und den gRPC-Transport, der intern von der IronPDF-Engine verwendet wird.

Öffnen Sie pom.xml und fügen Sie die folgenden Abhängigkeiten innerhalb von <dependencies> hinzu:

//:path=pom.xml
<dependency>
    <groupId>com.ironsoftware</groupId>
    <artifactId>ironpdf</artifactId>
    <version>2024.9.1</version>
</dependency>
<dependency>
    <groupId>com.ironsoftware</groupId>
    <artifactId>ironpdf-engine-linux-x64</artifactId>
    <version>2024.9.1</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-simple</artifactId>
    <version>2.0.3</version>
</dependency>
<dependency>
    <groupId>io.perfmark</groupId>
    <artifactId>perfmark-api</artifactId>
    <version>0.26.0</version>
</dependency>
<dependency>
    <groupId>io.grpc</groupId>
    <artifactId>grpc-okhttp</artifactId>
    <version>1.50.2</version>
</dependency>
<dependency>
    <groupId>io.grpc</groupId>
    <artifactId>grpc-netty-shaded</artifactId>
    <version>1.50.2</version>
</dependency>
//:path=pom.xml
<dependency>
    <groupId>com.ironsoftware</groupId>
    <artifactId>ironpdf</artifactId>
    <version>2024.9.1</version>
</dependency>
<dependency>
    <groupId>com.ironsoftware</groupId>
    <artifactId>ironpdf-engine-linux-x64</artifactId>
    <version>2024.9.1</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-simple</artifactId>
    <version>2.0.3</version>
</dependency>
<dependency>
    <groupId>io.perfmark</groupId>
    <artifactId>perfmark-api</artifactId>
    <version>0.26.0</version>
</dependency>
<dependency>
    <groupId>io.grpc</groupId>
    <artifactId>grpc-okhttp</artifactId>
    <version>1.50.2</version>
</dependency>
<dependency>
    <groupId>io.grpc</groupId>
    <artifactId>grpc-netty-shaded</artifactId>
    <version>1.50.2</version>
</dependency>
XML

Das ironpdf-engine-linux-x64-Artefakt bündelt die vorab kompilierte Chromium-basierte Rendering-Engine für 64-Bit-Linux. Dies ermöglicht es IronPDF, HTML zu PDF innerhalb des Lambda-Containers zu rendern. Ohne das wird das Rendering bei einem fehlenden Binärdateifehler fehlschlagen. Die gRPC-Abhängigkeiten (grpc-okhttp, grpc-netty-shaded, perfmark-api) werden benötigt, da IronPDF über einen lokalen gRPC-Kanal mit seiner Rendering-Engine kommuniziert. Die slf4j-simple-Abhängigkeit bietet eine minimale Logging-Implementierung, sodass die internen Logs von IronPDF in CloudWatch sichtbar sind.

Gleichen Sie immer die ironpdf- und ironpdf-engine-linux-x64-Versionsnummern ab – gemischte Versionen führen zu einem Startfehler. Informieren Sie sich auf IronPDF for Java bei Maven Central nach der neuesten Versionszeichenfolge.

Wie schreiben Sie den Lambda-Handler?

Die Lambda-Handler-Klasse empfängt einen APIGatewayProxyRequestEvent, generiert ein PDF und gibt einen APIGatewayProxyResponseEvent zurück. Vor der ersten Rendering-Operation müssen zwei IronPDF-Konfigurationsaufrufe erfolgen: Das Arbeitsverzeichnis auf /tmp setzen und optional das Debug-Logging aktivieren.

Ersetzen Sie den Inhalt von App.java mit dem folgenden:

//:path=App.java
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyRequestEvent;
import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyResponseEvent;
import com.ironsoftware.ironpdf.PdfDocument;
import com.ironsoftware.ironpdf.Settings;

import java.nio.file.Paths;
import java.util.HashMap;
import java.util.Map;

public class App {
    public APIGatewayProxyResponseEvent handleRequest(
            final APIGatewayProxyRequestEvent input,
            final Context context) {

        APIGatewayProxyResponseEvent response = new APIGatewayProxyResponseEvent();

        // IronPDF must write its engine binaries and temporary files to /tmp.
        // This is the only writable path available in the Lambda execution environment.
        Settings.setIronPdfEngineWorkingDirectory(Paths.get("/tmp/"));

        // Enable debug logging to CloudWatch during initial testing.
        Settings.setDebug(true);

        try {
            context.getLogger().log("Starting PDF render");

            // Render a PDF from a live URL. Replace with your own HTML or URL as needed.
            PdfDocument pdf = PdfDocument.renderUrlAsPdf("https://www.google.com");

            context.getLogger().log("PDF render complete");

            // Save the rendered PDF to /tmp. Files in /tmp persist for the lifetime
            // of the Lambda execution environment (warm instance).
            pdf.saveAs("/tmp/output.pdf");

            Map<String, String> headers = new HashMap<>();
            headers.put("Content-Type", "application/json");

            return response
                    .withStatusCode(200)
                    .withHeaders(headers)
                    .withBody("PDF generated successfully.");

        } catch (Exception e) {
            context.getLogger().log("PDF render failed: " + e.getMessage());
            return response
                    .withStatusCode(500)
                    .withBody("{\"error\": \"" + e.getMessage() + "\"}");
        }
    }
}
//:path=App.java
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyRequestEvent;
import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyResponseEvent;
import com.ironsoftware.ironpdf.PdfDocument;
import com.ironsoftware.ironpdf.Settings;

import java.nio.file.Paths;
import java.util.HashMap;
import java.util.Map;

public class App {
    public APIGatewayProxyResponseEvent handleRequest(
            final APIGatewayProxyRequestEvent input,
            final Context context) {

        APIGatewayProxyResponseEvent response = new APIGatewayProxyResponseEvent();

        // IronPDF must write its engine binaries and temporary files to /tmp.
        // This is the only writable path available in the Lambda execution environment.
        Settings.setIronPdfEngineWorkingDirectory(Paths.get("/tmp/"));

        // Enable debug logging to CloudWatch during initial testing.
        Settings.setDebug(true);

        try {
            context.getLogger().log("Starting PDF render");

            // Render a PDF from a live URL. Replace with your own HTML or URL as needed.
            PdfDocument pdf = PdfDocument.renderUrlAsPdf("https://www.google.com");

            context.getLogger().log("PDF render complete");

            // Save the rendered PDF to /tmp. Files in /tmp persist for the lifetime
            // of the Lambda execution environment (warm instance).
            pdf.saveAs("/tmp/output.pdf");

            Map<String, String> headers = new HashMap<>();
            headers.put("Content-Type", "application/json");

            return response
                    .withStatusCode(200)
                    .withHeaders(headers)
                    .withBody("PDF generated successfully.");

        } catch (Exception e) {
            context.getLogger().log("PDF render failed: " + e.getMessage());
            return response
                    .withStatusCode(500)
                    .withBody("{\"error\": \"" + e.getMessage() + "\"}");
        }
    }
}
JAVA

Der Aufruf von Settings.setIronPdfEngineWorkingDirectory(Paths.get("/tmp/")) ist obligatorisch. Die Ausführungsumgebung von AWS Lambda montiert den Funktionscode in einem schreibgeschützten Verzeichnis. Die IronPDF-Engine muss Unterstützungsdateien extrahieren und Sockets beim Start erstellen — Aktivitäten, für die Schreibzugriff erforderlich ist. Das /tmp-Verzeichnis ist der einzige Ort, den Lambda für Dateischreibvorgänge zulässt; daher muss IronPDF dort hin zeigen, bevor irgendein Rendering beginnt. Wenn diese Einstellung weggelassen wird, startet die Engine nicht und jeder Rendering-Aufruf wirft eine Ausnahme.

Der pdf.saveAs("/tmp/output.pdf")-Aufruf speichert die gerenderte Datei im flüchtigen /tmp-Dateisystem. Wenn die Lambda-Funktion das PDF als binäre Antwort zurückgeben oder es an S3 hochladen muss, rufen Sie die Bytes mit pdf.getBinaryData() ab, anstatt auf die Festplatte zu schreiben. Für großräumige Arbeitslasten ist das Hochladen zu Amazon S3 und das Zurückgeben einer vorkonfigurierten URL das empfohlene Muster.

Wie konfigurieren Sie die SAM-Vorlage?

Die template.yaml-Datei steuert die Ressourcenallokation der Lambda-Funktion. Drei Einstellungen beeinflussen direkt, ob IronPDF erfolgreich ausgeführt wird: Timeout, MemorySize und EphemeralStorage.Size.

Aktualisieren Sie den Globals-Abschnitt von template.yaml wie folgt:

//:path=template.yaml
Globals:
  Function:
    Timeout: 400
    MemorySize: 2048
    EphemeralStorage:
      Size: 1024
//:path=template.yaml
Globals:
  Function:
    Timeout: 400
    MemorySize: 2048
    EphemeralStorage:
      Size: 1024
YAML

Timeout ist auf 400 Sekunden gesetzt. Bei einem Kaltstart muss IronPDF die Rendering-Engine zu /tmp extrahieren und einen lokalen Chromium-Prozess starten. Diese Extraktion kann beim ersten Aufruf 30–60 Sekunden dauern. Ein Timeout von weniger als 330 Sekunden führt dazu, dass Kaltstarteinsätze mit einem Aufgaben-Timeout-Fehler fehlschlagen. Warme Aufrufe sind viel schneller — typischerweise unter 5 Sekunden für einfache HTML-zu-PDF-Konvertierungen.

MemorySize ist auf 2048 MB gesetzt. Der Chromium-Renderer ist speicherintensiv. Die minimale tragfähige Speicherkapazität von AWS Lambda für IronPDF beträgt 1024 MB, aber 2048 MB reduzieren das Risiko von Speichermangel bei komplexen Seiten erheblich und produzieren spürbar schnellere Renderzeiten, da Lambda auch die CPU-Allokation proportional mit dem Speicher skaliert.

EphemeralStorage.Size ist auf 1024 MB gesetzt. Die Standard-Zuweisung für Lambda /tmp beträgt 512 MB. IronPDF schreibt die Binärdateien der Rendering-Engine, den Schriftarten-Cache und temporäre Rendering-Dateien zu /tmp. Diese Assets können bei einem Kaltstart 512 MB überschreiten, was dazu führt, dass die Engine-Extraktion fehlschlägt. Das Setzen des flüchtigen Speichers auf mindestens 1024 MB verhindert diesen Fehlermodus.

Wie erstellen Sie die Docker-Datei?

Die Docker-Datei ist das Herzstück dieses Deployments. Sie führt einen mehrstufigen Build durch: Die erste Stufe kompiliert das Java-Projekt mithilfe eines Maven-Build-Images; die zweite Stufe erstellt das endgültige Lambda-Laufzeit-Image basierend auf Amazon Linux 2, installiert die Systempakete, die die Chromium-Engine von IronPDF benötigt, und kopiert die kompilierten Artefakte.

Öffnen Sie die Dockerfile des Projekts und ersetzen Sie deren Inhalt mit dem folgenden:

//:path=Dockerfile
# Stage 1: Build the Maven project
FROM public.ecr.aws/sam/build-java8.al2:latest AS build-image
WORKDIR /task
COPY src/src/
COPY pom.xml ./
RUN mvn -q clean install
RUN mvn dependency:copy-dependencies -DincludeScope=compile

# Stage 2: Create the Lambda runtime image
FROM public.ecr.aws/lambda/java:8.al2

# Update the package index and install system libraries required by Chromium.
# These packages provide font rendering, graphics, audio, GTK3, and input
# method support — all needed by the headless browser inside IronPDF.
RUN yum update -y && \
    yum install -y \
        pango.x86_64 \
        libXcomposite.x86_64 \
        libXcursor.x86_64 \
        libXdamage.x86_64 \
        libXext.x86_64 \
        libXi.x86_64 \
        libXtst.x86_64 \
        cups-libs.x86_64 \
        libXScrnSaver.x86_64 \
        libXrandr.x86_64 \
        GConf2.x86_64 \
        alsa-lib.x86_64 \
        atk.x86_64 \
        gtk3.x86_64 \
        ipa-gothic-fonts \
        xorg-x11-fonts-100dpi \
        xorg-x11-fonts-75dpi \
        xorg-x11-utils \
        xorg-x11-fonts-cyrillic \
        xorg-x11-fonts-Type1 \
        xorg-x11-fonts-misc \
        glibc-devel.x86_64 \
        at-spi2-atk.x86_64 \
        mesa-libgbm.x86_64 \
        libxkbcommon \
        amazon-linux-extras && \
    amazon-linux-extras install epel -y && \
    yum install -y libgdiplus

# Ensure /tmp is writable by the Lambda execution user.
RUN chmod 777 /tmp/

# Copy the compiled classes and dependencies from the build stage.
COPY --from=build-image /task/target/classes /var/task/
COPY --from=build-image /task/target/dependency /var/task/lib

# Entry point: package.ClassName::methodName
CMD ["helloworld.App::handleRequest"]

Die Basisbilder für beide Phasen verwenden das java8.al2-Tag anstelle von reinem java8. Das .al2-Suffix zeigt Amazon Linux 2 an, das für IronPDF erforderlich ist. Das ältere java8-Image läuft auf dem ursprünglichen Amazon Linux 1, das yum-Repositories verwendet, die keine Updates mehr erhalten und mehrere Pakete fehlen, auf die IronPDF angewiesen ist. Verwenden Sie immer .al2-Images, wenn Sie IronPDF auf Java 8 bereitstellen.

Der yum install-Block installiert die X11-, GTK3-, Pango- und Schriftarten-Bibliotheken, die Chromium benötigt, um Seiten zu rendern. Das Auslassen eines dieser Pakete kann zu unvollständiger PDF-Ausgabe oder einem Absturz der Rendering-Engine durch einen Fehler einer fehlenden freigegebenen Bibliothek führen. Das libgdiplus-Paket wird für GDI+-Kompatibilität benötigt, die von einigen IronPDF-Zeichnungsoperationen verwendet wird.

Aktualisieren Sie die CMD-Anweisung so, dass sie mit Ihrem tatsächlichen Paket- und Klassennamen übereinstimmt, falls diese von helloworld.App abweichen.

Wie erstellen und bereitstellen Sie die Lambda-Funktion?

Mit der Dockerdatei, template.yaml, pom.xml, und App.java, alle konfiguriert, führen Sie die folgenden zwei SAM CLI-Befehle vom Projektstamm aus.

Schritt 1 — Erstellen Sie das Container-Image:

//:path=build.sh
sam build -u
//:path=build.sh
sam build -u
SHELL

Das -u-Flag weist SAM an, Docker (den "Container nutzen"-Modus) zu verwenden. SAM führt die mehrstufige Docker-Datei aus, die das Maven-Projekt kompiliert und das endgültige Lambda-Image erzeugt. Erwarten Sie, dass dieser Schritt beim ersten Ausführen mehrere Minuten dauert, da Docker die Basis-Images herunterlädt.

Schritt 2 — Bereitstellung auf AWS:

//:path=deploy.sh
sam deploy --guided
//:path=deploy.sh
sam deploy --guided
SHELL

Das --guided-Flag startet eine interaktive Eingabeaufforderung, die nach dem Stack-Namen, der AWS-Region, dem S3-Bucket für Artefakte und ob Änderungen vor der Bereitstellung bestätigt werden sollen, fragt. Beantworten Sie die Eingabeaufforderungen, und SAM wird das Container-Image an Amazon ECR übertragen und die in template.yaml definierte Lambda-Funktion, das API Gateway und die IAM-Rolle erstellen.

Nach Abschluss der Bereitstellung gibt das SAM CLI die API-Endpunkt-URL aus. Öffnen Sie die AWS Lambda-Konsole, um die bereitgestellte Funktion anzusehen, Testaufrufe auszuführen und CloudWatch-Logs für IronPDF-Debug-Ausgaben zu überprüfen.

Bei der ersten Ausführung (Kaltstart) erwarten Sie eine Antwortzeit von 60–120 Sekunden, da die Lambda-Ausführungsumgebung startet und IronPDF seine Rendering-Engine zu /tmp extrahiert. Nachfolgende Aufrufe auf derselben warmen Instanz kehren innerhalb weniger Sekunden zurück. Falls die Kaltstart-Latenz bei Produktionsworkloads ein Problem ist, überlegen Sie, Lambda Provisioned Concurrency zu verwenden, um Instanzen warm zu halten.

Sie können die Funktion auch lokal testen, bevor Sie sie bereitstellen, indem Sie sam local invoke mit einer Testereignisnutzlast ausführen, vorausgesetzt, Docker läuft auf dem Entwicklungsrechner.

Was sind die nächsten Schritte?

Die Lambda-Funktion ist jetzt bereitgestellt und rendert PDFs. Die folgenden Anleitungen decken die häufigsten nächsten Schritte nach einer erfolgreichen IronPDF-Bereitstellung ab:

Starten Sie eine kostenlose IronPDF for Java-Testversion, um PDFs in Ihrer Lambda-Funktion ohne Einschränkungen während der Bewertung zu generieren und zu bearbeiten. Sobald Sie bereit sind, in die Produktion zu gehen, sehen Sie sich die IronPDF-Lizenzierungsoptionen an, um den Plan zu finden, der zu Ihrer serverlosen Arbeitslast passt.

Häufig gestellte Fragen

Warum kann ich IronPDF nicht auf AWS Lambda mit Zip-Bereitstellung verwenden?

IronPDF enthält eine native Chromium-basierte Rendering-Engine, die zur Laufzeit extrahiert und ausgeführt werden muss. Zip-Bereitstellungen laufen in einer verwalteten Laufzeitumgebung, die Schreibzugriffe einschränkt und die Paketgröße begrenzt. Die Bereitstellung von Container-Images gibt vollen Zugriff auf das Dateisystem, installierte Systembibliotheken und die Imagegröße – alles erforderlich für IronPDF.

Warum muss das Arbeitsverzeichnis der IronPDF-Engine auf /tmp/eingestellt werden?

Die Lambda-Ausführungsumgebung bindet das Funktionscode-Verzeichnis als schreibgeschützt ein. IronPDF muss seine Engine-Binärdateien, Socket-Dateien und temporäre Rendering-Assets an einem schreibbaren Ort speichern. Der einzige schreibbare Pfad in einer Lambda-Funktion ist /tmp/, daher muss Settings.setIronPdfEngineWorkingDirectory(Paths.get("/tmp/")) vor jedem Rendering-Vorgang aufgerufen werden.

Wie viel Speicher sollte die Lambda-Funktion mindestens haben?

Setzen Sie MemorySize auf mindestens 1024 MB. Der Chromium-Renderer ist speicherintensiv und Funktionen mit weniger Speicher stoßen auf Out-of-Memory-Fehler. 2048 MB werden für produktive Arbeitslasten empfohlen, da AWS auch die CPU-Zuweisung proportional zum Speicher skaliert, was die Renderzeiten verkürzt.

Warum ist die EphemeralStorage-Größe auf 1024 MB gesetzt?

Die standardmäßige Ephemeral-Speicherzuweisung von Lambda beträgt 512 MB. Beim Kaltstart extrahiert IronPDF die Rendering-Engine-Binärdateien und den Schriftarten-Cache nach /tmp/. Diese Assets können 512 MB überschreiten, was dazu führt, dass die Extraktion fehlschlägt. Die Setzung von EphemeralStorage auf 1024 MB verhindert dieses Versagen.

Warum sollten base images java8.al2 anstelle von java8 verwendet werden?

Das java8 base image läuft auf dem ursprünglichen Amazon Linux 1, das veraltete Paket-Repositories hat und mehrere Bibliotheken fehlt, die IronPDF benötigt. Das java8.al2 Image benutzt Amazon Linux 2, das über aktuelle Pakete und volle Unterstützung für die X11-, GTK3- und Pango-Bibliotheken verfügt, die der Chromium-Renderer benötigt.

Welches Lambda-Timeout ist für IronPDF erforderlich?

Stellen Sie das Timeout auf mindestens 330 Sekunden ein. Beim Kaltstart muss IronPDF seine Rendering-Engine extrahieren und einen Chromium-Prozess starten, was 30-60 Sekunden dauern kann. Kurze Timeouts führen dazu, dass Kaltstart-Aufrufe mit einem Timeout-Fehler fehlschlagen. Warme Aufrufe sind viel schneller und werden in der Regel innerhalb weniger Sekunden abgeschlossen.

Kann ich die Lambda-Funktion vor der Bereitstellung lokal testen?

Ja. Mit Docker, das auf der Entwicklungsmaschine läuft, führen Sie sam local invoke mit einer Testereignisnutzlast aus. SAM startet das Container-Image lokal und ruft die Handler-Funktion auf, sodass Sie die PDF-Generierung ohne Bereitstellung auf AWS überprüfen können.

Wie reduziere ich die Kaltstart-Latenz für IronPDF in der Produktion?

Verwenden Sie die AWS Lambda Provisioned Concurrency, um eine bestimmte Anzahl von Instanzen initialisiert und einsatzbereit zu halten. Dies beseitigt Kaltstarts für diese Instanzen, kostet jedoch zusätzliche Gebühren für die reservierte Kapazität.

Welche IronPDF Maven-Artefakte werden für AWS Lambda benötigt?

Sie benötigen ironpdf für die Java-API, ironpdf-engine-linux-x64 für die native Rendering-Engine und die gRPC-Transportabhängigkeiten grpc-okhttp, grpc-netty-shaded und perfmark-api. Die Versionen von ironpdf und ironpdf-engine-linux-x64 müssen übereinstimmen.

Wie gebe ich das generierte PDF als binäre HTTP-Antwort zurück?

Anstatt pdf.saveAs() aufzurufen, rufen Sie die rohen Bytes mit pdf.getBinaryData() ab und kodieren Sie sie mit Base64. Setzen Sie isBase64Encoded: true und Content-Type: application/pdf auf die API-Gateway-Antwort. Für große Dateien ist das Hochladen zu Amazon S3 und das Zurückgeben einer vorab signierten URL ein praktischer Ansatz.

Curtis Chau
Technischer Autor

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender ...

Weiterlesen
Bereit anzufangen?
Version: 2026.6 gerade veröffentlicht
Still Scrolling Icon

Scrollst du immer noch?

Sie brauchen schnell einen Beweis?
Führen Sie eine Probe aus Sehen Sie zu, wie Ihr HTML-Code in eine PDF-Datei umgewandelt wird.