Comment exécuter IronPDF for Java dans AWS Lambda
Important : Paramètres requis
- Déploiement Zip n'est pas pris en charge car IronPDF nécessite l'exécution de binaires à l'exécution.
- Vous devez remplacer
PackageTypeparImagecar IronPDF for Java ne prend en charge que le déploiement Docker. - Vous devez utiliser une image Docker
AmazonLinux2. - Vous devez définir le répertoire de travail suivant pour IronPdfEngine :
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/"));
Remarque : Ceci est requis car c'est le seul chemin qu'AWS autorise pour l'environnement d'exécution.
- Augmentez la taille de
/tmp. La valeur par défaut est de 512 Mo. Veuillez le régler à au moins 1024 Mo. - Incluez la dépendance
ironpdf-engine-linux-x64dans votre projet :
<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>
- Définir le délai d'attente Lambda à 330 secondes en raison d'un démarrage lent.
- Définir la taille de la mémoire Lambda à au moins 1024 Mo.
Démarrage rapide avec AWS Toolkit pour IntelliJ IDEA (AWS SAM)
-
Installer les outils :
- IntelliJ IDEA - Télécharger IntelliJ IDEA
- AWS Toolkit - Configurer AWS Toolkit pour JetBrains
- SAM CLI - Installer le SAM CLI pour les applications serverless
- Docker - Installer Docker Community Edition
Optionnel (pour les tests locaux) :
- Créer un projet : (
File->New->Project...)

- Configuration :
- Type de paquet :
Image - Durée d'exécution :
java8oujava11 - Modèle SAM :
Maven
- Type de paquet :

- Ajoutez les dépendances suivantes à votre
pom.xml:
<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>
- Modifiez le code de fonction
handleRequestdansApp.javacomme suit :
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);
}
}
}
- Configurez Lambda dans
template.yaml:
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
- Mettre à jour Dockerfile :
- Remarque : Pour Java 8, utilisez les images
java8.al2car elles utilisentAmazonLinux2, tandis quejava8utilise l'ancienAmazonLinux.
- Remarque : Pour Java 8, utilisez les images
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"]
- Construire le projet :
sam build -u
sam build -u
- Déployer le projet :
sam deploy --guided
sam deploy --guided
- Profitez d'IronPDF dans AWS Lambda ! Maintenant votre fonction est en ligne à : Accéder à la console AWS Lambda
Questions Fréquemment Posées
Comment puis-je créer et modifier des PDF en Java sur AWS Lambda ?
Vous pouvez utiliser IronPDF for Java dans AWS Lambda en configurant l'environnement avec une image Docker 'AmazonLinux2' et en configurant les réglages nécessaires tels que l'augmentation de la taille du répertoire /tmp et la configuration du timeout Lambda.
Pourquoi ne puis-je pas utiliser le déploiement Zip pour le traitement des PDF sur AWS Lambda ?
Le déploiement Zip n'est pas pris en charge pour IronPDF dans AWS Lambda parce qu'il nécessite une exécution binaire au moment de l'exécution. Le 'PackageType' doit être réglé sur 'Image' pour le déploiement Docker.
Quelles sont les configurations requises pour le répertoire de travail d'IronPDF sur AWS Lambda ?
Définissez le répertoire de travail pour le moteur IronPDF sur '/tmp/' et assurez-vous que la taille du répertoire est augmentée à au moins 1024 Mo pour gérer efficacement le traitement des PDF.
Quelles dépendances devraient être incluses pour la génération de PDF dans un projet Maven sur AWS Lambda ?
Incluez la dépendance 'ironpdf-engine-linux-x64' dans le pom.xml de votre projet Maven, ainsi que d'autres bibliothèques nécessaires pour permettre la création et la modification de PDF.
Comment puis-je rendre un PDF à partir d'une URL sur AWS Lambda en utilisant Java ?
Utilisez la méthode IronPDF PdfDocument.renderUrlAsPdf pour convertir une URL en document PDF, et enregistrez-le avec la méthode pdf.saveAs.
Quelles sont les recommandations pour les réglages de timeout et de mémoire de Lambda pour le traitement des PDF ?
Réglez le timeout Lambda à 330 secondes et allouez au moins 1024 Mo de mémoire pour répondre aux besoins de traitement d'IronPDF sur AWS Lambda.
Quels environnements d'exécution peuvent être utilisés pour exécuter des opérations PDF en Java sur AWS Lambda ?
IronPDF prend en charge les environnements d'exécution 'java8' et 'java11' pour exécuter des tâches de traitement PDF sur AWS Lambda.
Comment puis-je commencer rapidement avec AWS Toolkit pour IntelliJ IDEA pour le traitement de PDF en Java ?
Installez IntelliJ IDEA, AWS Toolkit, SAM CLI, et Docker. Facultativement, pour les tests locaux, configurez Java 8 et Maven, puis suivez le guide de démarrage rapide pour créer et configurer votre projet.
Quel est le processus pour déployer un projet de traitement de PDF Java sur AWS Lambda en utilisant SAM CLI ?
Tout d'abord, construisez votre projet avec la commande sam build -u, puis déployez-le en utilisant sam deploy --guided pour configurer efficacement votre traitement de PDF sur AWS Lambda.

