Verwenden von IronPDF zum Erstellen von PDF-Dateien auf AWS Lambda

This article was translated from English: Does it need improvement?
Translated
View the article in English

1. Erstellen von AWS Lambda mit einer Container-Vorlage (.NET 5)

Bitte beziehen Sie sich auf den ersten Teil dieses offiziellen Dokuments von AWS: .NET 5 AWS Lambda-Unterstützung mit Container-Abbildern.

2. Paketabhängigkeiten hinzufügen

Diese Abhängigkeiten sind für Chrome in dieser AWS-Umgebung erforderlich.

Bitte ändern Sie die Docker-Datei entsprechend dieser Anleitung:

AWS Lambda mit .NET 5

<script src="https://gist.github.com/ironsoftwarebuild/7f2265f7751240398fb532bd318fc90c.js"></script>
<script src="https://gist.github.com/ironsoftwarebuild/7f2265f7751240398fb532bd318fc90c.js"></script>
HTML

AWS Lambda mit .NET 7

<script src="https://gist.github.com/ironsoftwarebuild/ea399e109586f3ac29ebd43d1d0f6285.js"></script>
<script src="https://gist.github.com/ironsoftwarebuild/ea399e109586f3ac29ebd43d1d0f6285.js"></script>
HTML

AWS Lambda mit .NET 8

<script src="https://gist.github.com/ironsoftwarebuild/b700ca3ee47f405c257e72b2f8a33d52.js"></script>
<script src="https://gist.github.com/ironsoftwarebuild/b700ca3ee47f405c257e72b2f8a33d52.js"></script>
HTML

3. Fügen Sie das IronPDF (Linux) NuGet-Paket hinzu

IronPDF.Linux" installieren

  1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf Referenzen, Verwalten Sie NuGet-Pakete

  2. Wählen Sie Durchsuchen und suchen Sie "IronPDF.Linux"

  3. Wählen Sie das Paket aus und installieren Sie es.

4. FunctionHandler-Code modifizieren

In diesem Beispiel wird eine PDF-Datei aus einer Webseite erstelltIronPDF-Website und speichern Sie sie in /tmp. Um diese PDF-Datei anzeigen zu können, müssen Sie sie auf einen anderen Dienst wie S3 hochladen.

Bei der Verwendung von IronPDF auf AWS Lambda ist es erforderlich, den temporären Ordner zu konfigurieren. Bitte verwenden Sie dazu die Eigenschaften TempFolderPath und CustomDeploymentDirectory.

public Casing FunctionHandler(string input, ILambdaContext context)
{
    try
    {
        context.Logger.LogLine($"START FunctionHandler RequestId: {context.AwsRequestId} Input: {input}");

        var awsTmpPath = @"/tmp/"; // AWS temporary storage

        //[optional] enable logging (please uncomment these code if you face any problem)
        //IronPdf.Logging.Logger.EnableDebugging = true;
        //IronPdf.Logging.Logger.LogFilePath = awsTmpPath;
        //IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.All;

        //set your license key
        IronPdf.License.LicenseKey = "YOUR_LICENSE_KEY";

        //set ChromeGpuMode to Disabled
        IronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled;

        //set IronPDF Temp Path
        IronPdf.Installation.TempFolderPath = awsTmpPath;
        IronPdf.Installation.CustomDeploymentDirectory = awsTmpPath;

        //set auto LinuxAndDockerDependenciesAutoConfig
        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 name : {fileName}");
        pdfDoc.SaveAs(fileName);

        //you can upload the saved PDF file to anywhere such as 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

        //[optional] enable logging (please uncomment these code if you face any problem)
        //IronPdf.Logging.Logger.EnableDebugging = true;
        //IronPdf.Logging.Logger.LogFilePath = awsTmpPath;
        //IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.All;

        //set your license key
        IronPdf.License.LicenseKey = "YOUR_LICENSE_KEY";

        //set ChromeGpuMode to Disabled
        IronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled;

        //set IronPDF Temp Path
        IronPdf.Installation.TempFolderPath = awsTmpPath;
        IronPdf.Installation.CustomDeploymentDirectory = awsTmpPath;

        //set auto LinuxAndDockerDependenciesAutoConfig
        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 name : {fileName}");
        pdfDoc.SaveAs(fileName);

        //you can upload the saved PDF file to anywhere such as 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

		'[optional] enable logging (please uncomment these code if you face any problem)
		'IronPdf.Logging.Logger.EnableDebugging = true;
		'IronPdf.Logging.Logger.LogFilePath = awsTmpPath;
		'IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.All;

		'set your license key
		IronPdf.License.LicenseKey = "YOUR_LICENSE_KEY"

		'set ChromeGpuMode to Disabled
		IronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled

		'set IronPDF Temp Path
		IronPdf.Installation.TempFolderPath = awsTmpPath
		IronPdf.Installation.CustomDeploymentDirectory = awsTmpPath

		'set auto LinuxAndDockerDependenciesAutoConfig
		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 name : {fileName}")
		pdfDoc.SaveAs(fileName)

		'you can upload the saved PDF file to anywhere such as 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
VB   C#

5. Speicher und Timeout erhöhen

IronPDF benötigt mehr Zeit und Speicher als der Standardwert von Lambda. Sie können sie in aws-lambda-tools-defaults.json konfigurieren. Bitte passen Sie dies an Ihre Funktion an. In diesem Beispiel setzen wir den Wert auf 512(MB) und 330(sekunden).

"function-memory-size" : 512, 
"function-timeout"     : 330,

Sie können diese Konfiguration auch über die Lambda-Konsole aktualisieren. Navigieren Sie zumAWS Lambda-Speicher-Konfigurationshandbuch artikel für weitere Informationen.

6. Veröffentlichen

Bitte befolgen Sie die Anweisungen im letzten Teil des Dokuments '.NET 5 AWS Lambda-Unterstützung mit Container-Abbilderndokument, um Ihre Lambda-Funktion zu veröffentlichen und zu testen.

7. Probieren Sie es aus!

Sie können die Lambda-Funktion mit der OptionAWS Lambda-Konsole oder über Visual Studio unter Verwendung derAWS-Toolkit für Visual Studio.