Jak uruchomić i wdrożyć IronPDF .NET na AWS Lambda
1. Utwórz AWS Lambda z szablonem kontenera (.NET 5)
Proszę odnieść się do pierwszej części tego oficjalnego dokumentu od AWS: .NET 5 AWS Lambda Support with Container Images.
2. Dodaj zależności pakietu
Te zależności są wymagane dla Chrome w tym środowisku AWS.
Proszę zmodyfikować plik Docker zgodnie z tymi instrukcjami:
AWS Lambda z .NET 5
AWS Lambda z .NET 7
AWS Lambda z .NET 8
3. Dodaj pakiet NuGet IronPDF (Linux)
Install IronPdf.Linux
- W Eksploratorze rozwiązań kliknij prawym przyciskiem myszy Odwołania, Zarządzaj pakietami NuGet.
- Select Browse and search
IronPdf.Linux. - Wybierz pakiet i zainstaluj.
4. Zmodyfikuj kod FunctionHandler
This example will create a PDF file from a webpage https://ironpdf.com/ and save it to /tmp. Aby wyświetlić ten plik PDF, musisz go przesłać do innej usługi, na przykład S3.
Konieczne jest skonfigurowanie folderu tymczasowego podczas używania IronPDF na AWS Lambda. Proszę użyć właściwości TempFolderPath i CustomDeploymentDirectory do tego celu.
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. Zwiększ pamięć i limit czasu
IronPDF wymaga więcej czasu i pamięci niż domyślna wartość Lambda. You can configure it in aws-lambda-tools-defaults.json. Proszę dostosować to do swojej funkcji. W tym przykładzie ustawimy go na 512 (MB) i 330 (sekund).
{
"function-memory-size": 512,
"function-timeout": 330
}
Możesz również zaktualizować tę konfigurację za pomocą konsoli Lambda. Przejdź do artykułu Konfigurowanie funkcji AWS Lambda po więcej informacji.
6. Opublikuj
Proszę postępować zgodnie z instrukcjami w drugiej części dokumentu '.NET 5 AWS Lambda Support with Container Images', aby opublikować i przetestować swoją funkcję Lambda.
7. Wypróbuj to!
Możesz aktywować funkcję Lambda za pomocą konsoli Lambda lub przez Visual Studio, korzystając z AWS Toolkit for Visual Studio.
Często Zadawane Pytania
Jak utworzyć plik PDF z adresu URL przy użyciu funkcji .NET AWS Lambda?
Aby utworzyć plik PDF z adresu URL w funkcji .NET AWS Lambda, należy użyć metody ChromePdfRenderer.RenderUrlAsPdf biblioteki IronPDF. Należy upewnić się, że folder tymczasowy jest skonfigurowany przy użyciu właściwości TempFolderPath i CustomDeploymentDirectory.
Jakie kroki należy podjąć, aby skonfigurować IronPDF w AWS Lambda?
Skonfiguruj IronPDF na AWS Lambda, ustawiając ścieżki folderów tymczasowych za pomocą TempFolderPath i CustomDeploymentDirectory, wyłączając GPU za pomocą ChromeGpuModes.Disabłęd oraz włączając automatyczną konfigurację zależności Linux i Docker poprzez ustawienie LinuxAndDockerDependenciesAutoConfig na true.
Dłączego ważne jest dostosowanie ustawień pamięci i limitu czasu dla AWS Lambda?
Dostosowanie ustawień pamięci i limitu czasu dla AWS Lambda ma kluczowe znaczenie, ponieważ IronPDF wymaga większych zasobów niż domyślne ustawienia. Można to skonfigurować w pliku aws-lambda-tools-defaults.json lub za pośrednictwem konsoli AWS Lambda.
Jak upewnić się, że zależności Chrome są poprawnie zainstalowane dla AWS Lambda?
Upewnij się, że zależności Chrome są poprawnie zainstalowane, modyfikując plik Dockerfile zgodnie z instrukcjami dotyczącymi konkretnej wersji .NET, podanymi w artykułe. Obejmuje to instalację niezbędnych pakietów Linux dla Chrome w środowisku AWS.
Czy mogę użyć programu Visual Studio do aktywacji i przetestowania mojej funkcji AWS Lambda?
Tak, możesz użyć programu Visual Studio do aktywacji i testowania funkcji AWS Lambda za pomocą zestawu AWS Toolkit for Visual Studio, który umożliwia płynne wdrażanie i testowanie bezpośrednio z poziomu środowiska IDE.
Jakie znaczenie ma użycie szablonu kontenera dla .NET 5 w AWS Lambda?
Korzystanie z szablonu kontenera dla .NET 5 w AWS Lambda jest istotne, ponieważ ułatwia wdrażanie aplikacji wraz z ich zależnościami, takimi jak IronPDF, zapewniając spójność w różnych środowiskach.
Jak mogę obsługiwać wyjątki w mojej funkcji AWS Lambda przy użyciu IronPDF?
Obsługuj wyjątki w funkcji AWS Lambda, otaczając operacje IronPDF blokiem try-catch oraz rejestrując błędy za pomocą context.Logger.LogLine w celu debugowania i rozwiązywania problemów.

