Jak uruchomic IronPDF for Java w AWS Lambda
Wazne: Wymagane ustawienia
- Zip Deployment nie jest wspierane, poniewaz IronPDF wymaga wykonania binariów w czasie rzeczywistym.
- Nalezy ustawic
PackageTypenaImage, poniewaz IronPDF for Java wspiera tylko wdrazanie w Dockerze. - Nalezy uzyc obrazu Docker
AmazonLinux2. - Nalezy ustawic nastepujacy IronPdfEngineWorkingDirectory:
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/"));
Uwaga: Jest to wymagane, poniewaz jest to jedyna sciezka, ktora AWS pozwala na uzycie w srodowisku wykonawczym.
- Zwiekszyc rozmiar
/tmp. Domyslna wartosc wynosi 512 MB. Ustaw to na co najmniej 1024 MB. - Dolacz zaleznosc
ironpdf-engine-linux-x64do swojego projektu:
<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>
- Ustaw timeout Lambda na 330 sekund z powodu wolnego startu.
- Ustaw rozmiar pamieci Lambda na co najmniej 1024 MB.
Szybki start z AWS Toolkit dla IntelliJ IDEA (AWS SAM)
-
Instalacja narzedzi:
- IntelliJ IDEA - Pobierz IntelliJ IDEA
- AWS Toolkit - Skonfiguruj AWS Toolkit dla JetBrains
- SAM CLI - Zainstaluj SAM CLI dla aplikacji serverless
- Docker - Zainstaluj Docker Community Edition
Opcjonalnie (do lokalnych testów):
- Java 8 - Pobierz Java SE Development Kit 8
- Maven - Wytyczne do instalacji Mavena
- Utwórz projekt: (
File->New->Project...)

- Konfiguracja:
- Typ pakietu:
Image - Srodowisko wykonawcze:
java8lubjava11 - Szablon SAM:
Maven
- Typ pakietu:

- Dodaj nastepujace zaleznosci do swojego
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>
- Zmien kod funkcji
handleRequestwApp.javana:
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);
}
}
}
- Ustaw konfiguracje Lambda w
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
- Zaktualizuj plik Dockerfile:
- Uwaga: Dla Java 8 uzywaj obrazów
java8.al2, poniewaz uzywajaAmazonLinux2, podczas gdyjava8uzywa staregoAmazonLinux.
- Uwaga: Dla Java 8 uzywaj obrazów
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"]
- Zbuduj projekt:
sam build -u
sam build -u
- Wdróz projekt:
sam deploy --guided
sam deploy --guided
- Ciesz sie IronPDF w AWS Lambda! Twoja funkcja jest teraz dostepna pod adresem: Uzyskaj dostep do konsoli AWS Lambda
Często Zadawane Pytania
Jak mogę tworzyć i edytować pliki PDF w Javie na AWS Lambda?
Możesz używać IronPDF for Java w AWS Lambda, konfigurując środowisko za pomocą obrazu Docker „AmazonLinux2” i wprowadzając niezbędne ustawienia, takie jak zwiększenie rozmiaru katalogu /tmp oraz ustawienie limitu czasu Lambda.
Dlaczego nie mogę używać wdrożenia ZIP do przetwarzania plików PDF w AWS Lambda?
Wdrożenie w formacie ZIP nie jest obsługiwane dla IronPDF w AWS Lambda, ponieważ wymaga ono wykonywania plików binarnych w czasie wykonywania. W przypadku wdrożenia w Dockerze parametr „PackageType” musi być ustawiony na „Image”.
Jakie są wymagane konfiguracje katalogu roboczego IronPDF w AWS Lambda?
Ustaw katalog roboczy silnika IronPDF na „/tmp/” i upewnij się, że rozmiar katalogu został zwiększony do co najmniej 1024 MB, aby zapewnić wydajne przetwarzanie plików PDF.
Jakie zależności należy uwzględnić w celu generowania plików PDF w projekcie Maven na AWS Lambda?
Dodaj zależność „IronPDF-engine-linux-x64” do pliku pom.xml swojego projektu Maven wraz z innymi bibliotekami niezbędnymi do tworzenia i edycji plików PDF.
Jak mogę wygenerować plik PDF z adresu URL w AWS Lambda przy użyciu języka Java?
Użyj metody IronPDF PdfDocument.renderUrlAsPdf, aby przekonwertować adres URL na dokument PDF, a następnie zapisz go za pomocą metody pdf.saveAs.
Jakie są zalecane ustawienia limitu czasu i pamięci Lambda dla przetwarzania plików PDF?
Ustaw limit czasu Lambda na 330 sekund i przydziel co najmniej 1024 MB pamięci, aby zaspokoić potrzeby przetwarzania IronPDF w AWS Lambda.
Jakie środowiska uruchomieniowe można wykorzystać do wykonywania operacji na plikach PDF w Javie na AWS Lambda?
IronPDF obsługuje środowiska uruchomieniowe „java8” i „java11” do wykonywania zadań związanych z przetwarzaniem plików PDF w AWS Lambda.
Jak szybko rozpocząć pracę z AWS Toolkit for IntelliJ IDEA w celu przetwarzania plików PDF w języku Java?
Zainstaluj IntelliJ IDEA, AWS Toolkit, SAM CLI i Docker. Opcjonalnie, w celu przeprowadzenia lokalnych testów, skonfiguruj Java 8 i Maven, a następnie postępuj zgodnie z przewodnikiem szybkiego startu, aby utworzyć i skonfigurować swój projekt.
Jak wygląda proces wdrażania projektu przetwarzania plików PDF w Javie na AWS Lambda przy użyciu SAM CLI?
Najpierw skompiluj projekt za pomocą polecenia sam build -u, a następnie wdróż go za pomocą sam deploy --guided, aby skutecznie skonfigurować przetwarzanie plików PDF w AWS Lambda.


