How to Run IronPDF for Java in AWS Lambda

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

Wichtig: Erforderliche Einstellungen

  • Zip Deployment wird nicht unterstützt, da IronPDF die Ausführung von Binärdateien zur Laufzeit erfordert.
  • Sie müssen PackageType auf Image setzen, da IronPDF for Java nur Docker Deployment unterstützt.
  • Sie müssen ein AmazonLinux2 Docker-Image verwenden.
  • Sie müssen das folgende IronPdfEngineWorkingDirectory einstellen:
import com.ironsoftware.ironpdf.Settings;
import java.nio.file.Paths;

// Setting the working directory for IronPDF engine
Settings.setIronPdfEngineWorkingDirectory(Paths.get("/tmp/"));
import com.ironsoftware.ironpdf.Settings;
import java.nio.file.Paths;

// Setting the working directory for IronPDF engine
Settings.setIronPdfEngineWorkingDirectory(Paths.get("/tmp/"));
JAVA

Hinweis: Dies ist erforderlich, weil es der einzige Pfad ist, den AWS für die Ausführungsumgebung zulässt.

  • Erhöhen Sie die Größe von /tmp. Der Standardwert ist 512 MB. Bitte setzen Sie sie auf mindestens 1024 MB.
  • Binden Sie die ironpdf-engine-linux-x64-Abhängigkeit in Ihr Projekt ein:
<dependency>
    <groupId>com.ironsoftware</groupId>
    <artifactId>ironpdf-engine-linux-x64</artifactId>
    <version>2022.xx.x</version>
</dependency>
<dependency>
    <groupId>com.ironsoftware</groupId>
    <artifactId>ironpdf-engine-linux-x64</artifactId>
    <version>2022.xx.x</version>
</dependency>
XML
  • Setzen Sie die Lambda-Zeitüberschreitung aufgrund eines langsamen Starts auf 330 Sekunden.
  • Setzen Sie die Lambda-Speichergröße auf mindestens 1024 MB.

Schnellstart mit AWS Toolkit für IntelliJ IDEA (AWS SAM)

  1. Installationswerkzeuge:

    Optional (für lokale Tests):

  2. Projekt erstellen: (Datei -> Neu -> Projekt...)

AWS Lambda Project Creation

  1. Konfiguration:
    • Paket-Typ: Bild
    • Laufzeit: java8 oder java11
    • SAM-Vorlage: Maven

AWS Lambda Konfiguration

  1. Fügen Sie die folgenden Abhängigkeiten zu Ihrer pom.xml hinzu:
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-simple</artifactId>
    <version>2.0.3</version>
</dependency>
<dependency>
    <groupId>com.ironsoftware</groupId>
    <artifactId>ironpdf-engine-linux-x64</artifactId>
    <version>2022.11.1</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>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-simple</artifactId>
    <version>2.0.3</version>
</dependency>
<dependency>
    <groupId>com.ironsoftware</groupId>
    <artifactId>ironpdf-engine-linux-x64</artifactId>
    <version>2022.11.1</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
  1. Ändern Sie den Code der Funktion handleRequest in App.java zu:
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;

// AWS Lambda function to generate a PDF from a URL using IronPDF.
public class App {
    public APIGatewayProxyResponseEvent handleRequest(final APIGatewayProxyRequestEvent input, final Context context) {
        APIGatewayProxyResponseEvent response = new APIGatewayProxyResponseEvent();

        // Enable debugging for IronPDF (optional)
        Settings.setDebug(true);

        // Set the working directory for the IronPDF engine (required)
        Settings.setIronPdfEngineWorkingDirectory(Paths.get("/tmp/"));

        try {
            context.getLogger().log("RENDER PDF");

            // Render the PDF from a URL
            PdfDocument pdf = PdfDocument.renderUrlAsPdf("https://www.google.com");

            context.getLogger().log("RENDER PDF SUCCESS");

            // Save the generated PDF to a file
            pdf.saveAs("/tmp/my-first-pdf.pdf");

            // Set HTTP response headers
            Map<String, String> headers = new HashMap<>();
            headers.put("Content-Type", "application/json");
            headers.put("X-Custom-Header", "application/json");

            // Return the successful response
            return response
                    .withHeaders(headers)
                    .withStatusCode(200)
                    .withBody("ENJOY IRON-PDF!");

        } catch (Exception e) {
            // Return the error response
            return response
                    .withBody("{" + e.getMessage() + "}")
                    .withStatusCode(500);
        }
    }
}
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;

// AWS Lambda function to generate a PDF from a URL using IronPDF.
public class App {
    public APIGatewayProxyResponseEvent handleRequest(final APIGatewayProxyRequestEvent input, final Context context) {
        APIGatewayProxyResponseEvent response = new APIGatewayProxyResponseEvent();

        // Enable debugging for IronPDF (optional)
        Settings.setDebug(true);

        // Set the working directory for the IronPDF engine (required)
        Settings.setIronPdfEngineWorkingDirectory(Paths.get("/tmp/"));

        try {
            context.getLogger().log("RENDER PDF");

            // Render the PDF from a URL
            PdfDocument pdf = PdfDocument.renderUrlAsPdf("https://www.google.com");

            context.getLogger().log("RENDER PDF SUCCESS");

            // Save the generated PDF to a file
            pdf.saveAs("/tmp/my-first-pdf.pdf");

            // Set HTTP response headers
            Map<String, String> headers = new HashMap<>();
            headers.put("Content-Type", "application/json");
            headers.put("X-Custom-Header", "application/json");

            // Return the successful response
            return response
                    .withHeaders(headers)
                    .withStatusCode(200)
                    .withBody("ENJOY IRON-PDF!");

        } catch (Exception e) {
            // Return the error response
            return response
                    .withBody("{" + e.getMessage() + "}")
                    .withStatusCode(500);
        }
    }
}
JAVA
  1. Lambda-Konfiguration in template.yaml einstellen:
Globals:
  Function:
    Timeout: 400
    MemorySize: 2048
    EphemeralStorage:
      Size: 1024
# Do not modify other configurations
Globals:
  Function:
    Timeout: 400
    MemorySize: 2048
    EphemeralStorage:
      Size: 1024
# Do not modify other configurations
YAML
  1. Dockerfile aktualisieren:
    • Hinweis: Für Java 8 verwenden Sie java8.al2-Images, da diese AmazonLinux2 verwenden, während java8 das alte AmazonLinux verwendet.
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

FROM public.ecr.aws/lambda/java:8.al2
RUN yum update -y
RUN 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
RUN amazon-linux-extras install epel -y
RUN yum install -y libgdiplus
RUN chmod 777 /tmp/
COPY --from=build-image /task/target/classes /var/task/
COPY --from=build-image /task/target/dependency /var/task/lib

# Command can be overridden by providing a different command in the template directly.
CMD ["helloworld.App::handleRequest"]
  1. Erstellung des Projekts:
sam build -u
sam build -u
SHELL
  1. Bereitstellung des Projekts:
sam deploy --guided
sam deploy --guided
SHELL
  1. Genießen Sie IronPDF in AWS Lambda! Jetzt ist Ihre Funktion live auf: Access AWS Lambda Console

Häufig gestellte Fragen

Wie kann ich PDFs in Java auf AWS Lambda erstellen und bearbeiten?

Sie können IronPDF für Java innerhalb von AWS Lambda verwenden, indem Sie die Umgebung mit einem 'AmazonLinux2' Docker-Image einrichten und die erforderlichen Einstellungen konfigurieren, wie z.B. die Erhöhung der /tmp-Verzeichnisgröße und das Festlegen des Lambda-Timeouts.

Warum kann ich Zip Deployment für die PDF-Verarbeitung in AWS Lambda nicht verwenden?

Zip Deployment wird für IronPDF in AWS Lambda nicht unterstützt, da eine binäre Ausführung zur Laufzeit erforderlich ist. Der 'PackageType' muss auf 'Image' für die Docker-Bereitstellung eingestellt werden.

Welche Konfigurationen sind für das Arbeitsverzeichnis von IronPDF in AWS Lambda erforderlich?

Setzen Sie das Arbeitsverzeichnis für die IronPDF-Engine auf '/tmp/' und stellen Sie sicher, dass die Verzeichnisgröße auf mindestens 1024 MB erhöht wird, um die PDF-Verarbeitung effizient zu handhaben.

Welche Abhängigkeiten sollten für die PDF-Erstellung in einem Maven-Projekt auf AWS Lambda enthalten sein?

Schließen Sie die 'ironpdf-engine-linux-x64'-Abhängigkeit in die pom.xml Ihres Maven-Projekts ein, zusammen mit anderen erforderlichen Bibliotheken, um die PDF-Erstellung und -Bearbeitung zu ermöglichen.

Wie kann ich ein PDF aus einer URL in AWS Lambda mit Java rendern?

Verwenden Sie die IronPDF-Methode PdfDocument.renderUrlAsPdf, um eine URL in ein PDF-Dokument zu konvertieren, und speichern Sie es mit der Methode pdf.saveAs.

Was sind die empfohlenen Lambda-Timeout- und Speichereinstellungen für die PDF-Verarbeitung?

Setzen Sie das Lambda-Timeout auf 330 Sekunden und weisen Sie mindestens 1024 MB Speicher zu, um den Verarbeitungsbedarf von IronPDF in AWS Lambda zu decken.

Welche Laufzeitumgebungen können für PDF-Operationen in Java auf AWS Lambda verwendet werden?

IronPDF unterstützt 'java8' und 'java11' Laufzeitumgebungen für die Ausführung von PDF-Verarbeitungsaufgaben auf AWS Lambda.

Wie kann ich schnell mit dem AWS Toolkit für IntelliJ IDEA für die PDF-Verarbeitung in Java beginnen?

Installieren Sie IntelliJ IDEA, AWS Toolkit, SAM CLI und Docker. Optional richten Sie für lokale Tests Java 8 und Maven ein und folgen der Schnellstartanleitung, um Ihr Projekt zu erstellen und zu konfigurieren.

Was ist der Prozess zur Bereitstellung eines Java-PDF-Verarbeitungsprojekts auf AWS Lambda mit SAM CLI?

Erstellen Sie zuerst Ihr Projekt mit dem Befehl sam build -u und stellen Sie es dann bereit mit sam deploy --guided, um Ihre PDF-Verarbeitung in AWS Lambda effektiv einzurichten.

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: 2025.11 gerade veröffentlicht