Como executar e implantar o IronPDF .NET no AWS Lambda
1. Criar uma função AWS Lambda com um modelo de contêiner (.NET 5)
Consulte a primeira parte deste documento oficial da AWS: Suporte do AWS Lambda for .NET 5 com imagens de contêiner .
2. Adicionar dependências de pacotes
Essas dependências são necessárias para o Chrome neste ambiente AWS.
Modifique o arquivo Docker de acordo com estas instruções:
AWS Lambda com .NET 5
AWS Lambda com .NET 7
AWS Lambda com .NET 8
3. Adicione o pacote NuGet IronPDF (Linux).
Instale IronPdf.Linux
- No Solution Explorer, clique com o botão direito do mouse em Referências e selecione Gerenciar Pacotes NuGet.
- Selecione Procurar e pesquise
IronPdf.Linux. - Selecione o pacote e instale.
4. Modifique o código do FunctionHandler.
Este exemplo criará um arquivo PDF a partir de uma página da web.https://ironpdf.com/ e salve-o em /tmp. Para visualizar este PDF, você precisa carregá-lo em outro serviço, como o S3.
É necessário configurar a pasta temporária ao usar o IronPDF no AWS Lambda. Utilize as propriedades TempFolderPath e CustomDeploymentDirectory para fazer isso.
public Casing FunctionHandler(string input, ILambdaContext context)
{
try
{
context.Logger.LogLine($"START FunctionHandler RequestId: {context.AwsRequestId} Input: {input}");
var awsTmpPath = @"/tmp/"; // AWS temporary storage location
// [Optional] Enable logging for debugging
// Uncomment these lines if you encounter issues
// IronPdf.Logging.Logger.EnableDebugging = true;
// IronPdf.Logging.Logger.LogFilePath = awsTmpPath;
// IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.All;
// Set your IronPDF license key
IronPdf.License.LicenseKey = "YOUR_LICENSE_KEY";
// Disable GPU for Chrome rendering in headless environments
IronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled;
// Configure IronPDF to use the AWS temporary directory
IronPdf.Installation.TempFolderPath = awsTmpPath;
IronPdf.Installation.CustomDeploymentDirectory = awsTmpPath;
// Automatically configure Linux and Docker dependencies
IronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = true;
context.Logger.LogLine($"Creating IronPdf.ChromePdfRenderer");
var Renderer = new IronPdf.ChromePdfRenderer();
context.Logger.LogLine($"Rendering PDF");
using var pdfDoc = Renderer.RenderUrlAsPdf("https://ironpdf.com/");
var guid = Guid.NewGuid();
var fileName = $"/tmp/{input}_{guid}.pdf"; // Save file to /tmp
context.Logger.LogLine($"Saving PDF with name: {fileName}");
pdfDoc.SaveAs(fileName);
// Place for future code to upload the PDF file to a service like AWS S3.
context.Logger.LogLine($"COMPLETE!");
}
catch (Exception e)
{
context.Logger.LogLine($"[ERROR] FunctionHandler : {e.Message}");
}
return new Casing(input?.ToLower(), input?.ToUpper());
}
public Casing FunctionHandler(string input, ILambdaContext context)
{
try
{
context.Logger.LogLine($"START FunctionHandler RequestId: {context.AwsRequestId} Input: {input}");
var awsTmpPath = @"/tmp/"; // AWS temporary storage location
// [Optional] Enable logging for debugging
// Uncomment these lines if you encounter issues
// IronPdf.Logging.Logger.EnableDebugging = true;
// IronPdf.Logging.Logger.LogFilePath = awsTmpPath;
// IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.All;
// Set your IronPDF license key
IronPdf.License.LicenseKey = "YOUR_LICENSE_KEY";
// Disable GPU for Chrome rendering in headless environments
IronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled;
// Configure IronPDF to use the AWS temporary directory
IronPdf.Installation.TempFolderPath = awsTmpPath;
IronPdf.Installation.CustomDeploymentDirectory = awsTmpPath;
// Automatically configure Linux and Docker dependencies
IronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = true;
context.Logger.LogLine($"Creating IronPdf.ChromePdfRenderer");
var Renderer = new IronPdf.ChromePdfRenderer();
context.Logger.LogLine($"Rendering PDF");
using var pdfDoc = Renderer.RenderUrlAsPdf("https://ironpdf.com/");
var guid = Guid.NewGuid();
var fileName = $"/tmp/{input}_{guid}.pdf"; // Save file to /tmp
context.Logger.LogLine($"Saving PDF with name: {fileName}");
pdfDoc.SaveAs(fileName);
// Place for future code to upload the PDF file to a service like AWS S3.
context.Logger.LogLine($"COMPLETE!");
}
catch (Exception e)
{
context.Logger.LogLine($"[ERROR] FunctionHandler : {e.Message}");
}
return new Casing(input?.ToLower(), input?.ToUpper());
}
Public Function FunctionHandler(ByVal input As String, ByVal context As ILambdaContext) As Casing
Try
context.Logger.LogLine($"START FunctionHandler RequestId: {context.AwsRequestId} Input: {input}")
Dim awsTmpPath = "/tmp/" ' AWS temporary storage location
' [Optional] Enable logging for debugging
' Uncomment these lines if you encounter issues
' IronPdf.Logging.Logger.EnableDebugging = true;
' IronPdf.Logging.Logger.LogFilePath = awsTmpPath;
' IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.All;
' Set your IronPDF license key
IronPdf.License.LicenseKey = "YOUR_LICENSE_KEY"
' Disable GPU for Chrome rendering in headless environments
IronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled
' Configure IronPDF to use the AWS temporary directory
IronPdf.Installation.TempFolderPath = awsTmpPath
IronPdf.Installation.CustomDeploymentDirectory = awsTmpPath
' Automatically configure Linux and Docker dependencies
IronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = True
context.Logger.LogLine($"Creating IronPdf.ChromePdfRenderer")
Dim Renderer = New IronPdf.ChromePdfRenderer()
context.Logger.LogLine($"Rendering PDF")
Dim pdfDoc = Renderer.RenderUrlAsPdf("https://ironpdf.com/")
Dim guid As System.Guid = System.Guid.NewGuid()
Dim fileName = $"/tmp/{input}_{guid}.pdf" ' Save file to /tmp
context.Logger.LogLine($"Saving PDF with name: {fileName}")
pdfDoc.SaveAs(fileName)
' Place for future code to upload the PDF file to a service like AWS S3.
context.Logger.LogLine($"COMPLETE!")
Catch e As Exception
context.Logger.LogLine($"[ERROR] FunctionHandler : {e.Message}")
End Try
Return New Casing(input?.ToLower(), input?.ToUpper())
End Function
5. Aumentar a memória e o tempo limite
O IronPDF requer mais tempo e memória do que o valor padrão do Lambda. Você pode configurá-lo em aws-lambda-tools-defaults.json. Ajuste isso de acordo com a sua função. Neste exemplo, vamos definir para 512 (MB) e 330 (segundos).
{
"function-memory-size": 512,
"function-timeout": 330
}
Você também pode atualizar essa configuração usando o console do Lambda. Acesse o artigo Configurando funções do AWS Lambda para obter mais informações.
6. Publicar
Siga as instruções na última parte do documento ' Suporte do AWS Lambda for .NET 5 com imagens de contêiner ' para publicar e testar sua função Lambda.
7. Experimente!
Você pode ativar a função Lambda usando o console do Lambda ou via Visual Studio, utilizando o AWS Toolkit para Visual Studio .
Perguntas frequentes
Como faço para criar um PDF a partir de uma URL usando uma função .NET AWS Lambda?
Para criar um PDF a partir de uma URL em uma função .NET AWS Lambda, use o método ` ChromePdfRenderer.RenderUrlAsPdf do IronPDF. Certifique-se de que a pasta temporária esteja configurada usando as propriedades TempFolderPath e CustomDeploymentDirectory .
Quais são os passos que devo seguir para configurar o IronPDF no AWS Lambda?
Configure o IronPDF no AWS Lambda definindo os caminhos das pastas temporárias usando TempFolderPath e CustomDeploymentDirectory , desativando a GPU com ChromeGpuModes.Disabled e ativando a configuração automática das dependências do Linux e do Docker com LinuxAndDockerDependenciesAutoConfig definido como `true`.
Por que é importante ajustar as configurações de memória e tempo limite para o AWS Lambda?
Ajustar as configurações de memória e tempo limite do AWS Lambda é crucial, pois o IronPDF requer mais recursos do que as configurações padrão. Isso pode ser configurado no arquivo aws-lambda-tools-defaults.json ou por meio do console do AWS Lambda.
Como posso garantir que as dependências do Chrome estejam instaladas corretamente para o AWS Lambda?
Garanta que as dependências do Chrome estejam instaladas corretamente, modificando o Dockerfile de acordo com as instruções específicas para sua versão do .NET, conforme fornecido no artigo. Isso inclui a instalação dos pacotes Linux necessários para o Chrome no ambiente AWS.
Posso usar o Visual Studio para ativar e testar minha função AWS Lambda?
Sim, você pode usar o Visual Studio para ativar e testar sua função AWS Lambda usando o AWS Toolkit para Visual Studio, que permite a implantação e os testes de forma integrada diretamente do ambiente de desenvolvimento integrado (IDE).
Qual a importância de usar um modelo de contêiner for .NET 5 no AWS Lambda?
Utilizar um modelo de contêiner for .NET 5 no AWS Lambda é importante porque facilita a implantação de aplicativos com suas dependências, como o IronPDF, garantindo consistência entre os ambientes.
Como posso lidar com exceções na minha função AWS Lambda usando o IronPDF?
Lide com exceções em sua função AWS Lambda envolvendo suas operações do IronPDF em um bloco try-catch e registrando erros usando context.Logger.LogLine para depuração e solução de problemas.

