Como executar o IronPDF for Java no AWS Lambda
Importante: Configurações obrigatórias
- A implantação em formato Zip não é suportada, pois o IronPDF requer a execução de binários em tempo de execução.
- Você deve definir
PackageTypeparaImageporque o IronPDF for Java suporta apenas implantação em Docker. - Você deve usar uma imagem Docker
AmazonLinux2. - Você deve definir o seguinte 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/"));
Observação: Isso é necessário porque é o único caminho que a AWS permite para o ambiente de execução.
- Aumente o tamanho do arquivo
/tmp. O valor padrão é 512 MB. Por favor, defina para pelo menos 1024 MB. - Inclua a dependência
ironpdf-engine-linux-x64em seu projeto:
<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>
- Defina o tempo limite do Lambda para 330 segundos devido a uma inicialização lenta.
- Defina o tamanho da memória Lambda para pelo menos 1024 MB.
Guia de Início Rápido com o AWS Toolkit para IntelliJ IDEA (AWS SAM)
-
Instalar ferramentas:
- IntelliJ IDEA - Baixe o IntelliJ IDEA
- AWS Toolkit - Configurar o AWS Toolkit para JetBrains
- SAM CLI - Instale o SAM CLI para aplicações sem servidor
- Docker - Instalar o Docker Community Edition
Opcional (para testes locais):
- Java 8 - Baixe o Java SE Development Kit 8
- Maven - Orientações para instalar o Maven
- Criar projeto: (
File->New->Project...)

- Configuração:
- Tipo de pacote:
Image - Tempo de execução:
java8oujava11 - Modelo SAM:
Maven
- Tipo de pacote:

- Adicione as seguintes dependências ao seu
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>
- Altere o código da função
handleRequestemApp.javapara:
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);
}
}
}
- Configure o Lambda em
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
- Atualizar Dockerfile:
- Nota: Para Java 8, use imagens
java8.al2porque elas usamAmazonLinux2, enquantojava8usa o antigoAmazonLinux.
- Nota: Para Java 8, use imagens
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"]
- Desenvolva o projeto:
sam build -u
sam build -u
- Implante o projeto:
sam deploy --guided
sam deploy --guided
- Aproveite o IronPDF no AWS Lambda! Agora sua função está ativa em: Acesse o Console do AWS Lambda
Perguntas frequentes
Como posso criar e editar PDFs em Java no AWS Lambda?
Você pode usar o IronPDF for Java no AWS Lambda configurando o ambiente com uma imagem Docker 'AmazonLinux2' e definindo as configurações necessárias, como aumentar o tamanho do diretório /tmp e definir o tempo limite do Lambda.
Por que não consigo usar o Zip Deployment para processamento de PDF no AWS Lambda?
A implantação em formato Zip não é compatível com o IronPDF no AWS Lambda, pois requer a execução de binários em tempo de execução. O 'PackageType' deve ser definido como 'Image' para a implantação em Docker.
Quais são as configurações necessárias para o diretório de trabalho do IronPDF no AWS Lambda?
Defina o diretório de trabalho do mecanismo IronPDF como '/tmp/' e certifique-se de que o tamanho do diretório seja aumentado para pelo menos 1024 MB para lidar com o processamento de PDF de forma eficiente.
Quais dependências devem ser incluídas para a geração de PDFs em um projeto Maven no AWS Lambda?
Inclua a dependência 'ironpdf-engine-linux-x64' no arquivo pom.xml do seu projeto Maven, juntamente com outras bibliotecas necessárias para habilitar a criação e edição de PDFs.
Como posso renderizar um PDF a partir de uma URL no AWS Lambda usando Java?
Utilize o método ` PdfDocument.renderUrlAsPdf do IronPDF para converter uma URL em um documento PDF e salve-o com o método pdf.saveAs .
Quais são as configurações recomendadas de tempo limite e memória do Lambda para processamento de PDF?
Defina o tempo limite do Lambda para 330 segundos e aloque pelo menos 1024 MB de memória para atender às necessidades de processamento do IronPDF no AWS Lambda.
Quais ambientes de execução podem ser usados para executar operações de PDF em Java no AWS Lambda?
O IronPDF oferece suporte aos ambientes de execução 'java8' e 'java11' para executar tarefas de processamento de PDF no AWS Lambda.
Como posso começar rapidamente a usar o AWS Toolkit para IntelliJ IDEA para processamento de PDF em Java?
Instale o IntelliJ IDEA, o AWS Toolkit, o SAM CLI e o Docker. Opcionalmente, para testes locais, configure o Java 8 e o Maven e, em seguida, siga o guia de início rápido para criar e configurar seu projeto.
Qual é o processo para implantar um projeto de processamento de PDF em Java no AWS Lambda usando a CLI do SAM?
Primeiro, compile seu projeto com o comando sam build -u , depois implante-o usando sam deploy --guided para configurar efetivamente o processamento de PDF no AWS Lambda.

