AWS Lambda üzerinde IronPDF .NET Nasıl Çalıştırılır ve Dağıtılır
1. Konteyner şablonuyla AWS Lambda oluşturun (.NET 5)
AWS'nin bu resmi belgesinin ilk bölümüne bakın: Konteyner Resimleri ile .NET 5 AWS Lambda Desteği.
2. Paket bağımlılıklarını ekleyin
Bu bağımlılıklar, AWS ortamında Chrome için gereklidir.
Docker dosyasını bu talimhatlara göre değiştirin:
.NET 5 ile AWS Lambda
.NET 7 ile AWS Lambda
.NET 8 ile AWS Lambda
3. IronPDF (Linux) NuGet paketini ekleyin
Install IronPdf.Linux
- Çözüm Gezgini'nde, Referanslar'a sağ tıklayın, NuGet Paketlerini Yönet.
- Select Browse and search
IronPdf.Linux. - Paketi seçin ve yükleyin.
4. FunctionHandler kodunu değiştirin
This example will create a PDF file from a webpage https://ironpdf.com/ and save it to /tmp. Bu PDF'yi görmek için, S3 gibi başka bir hizmete yüklemeniz gerekmektedir.
AWS Lambda üzerinde IronPDF kullanırken geçici klasörü yapılandırmak gereklidir. Bunu yapmak için TempFolderPath ve CustomDeploymentDirectory özelliklerini kullanın.
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. Bellek ve Zaman Aşımını Artırın
IronPDF, Lambda'nın varsayılan değerinden daha fazla zaman ve bellek gerektirir. You can configure it in aws-lambda-tools-defaults.json. Lütfen bunu işlevinize uyacak şekilde ayarlayın. Bu örnekte, 512 (MB) ve 330 (saniye) olarak ayarlayacağız.
{
"function-memory-size": 512,
"function-timeout": 330
}
Bu yapılandırmayı Lambda konsolu kullanarak da güncelleyebilirsiniz. AWS Lambda işlevlerini yapılandırma makalesine daha fazla bilgi için gidin.
6. Yayınla
'Konteyner Resimleri ile .NET 5 AWS Lambda Desteği' belgesinin ikinci bölümündeki talimatları takip ederek Lambda işlevinizi yayınlayın ve test edin.
7. Deneyin!
Lambda işlevini Lambda konsolu veya Visual Studio kullanarak AWS Araç Seti ile Visual Studio kullanarak etkinleştirebilirsiniz.
Sıkça Sorulan Sorular
.NET AWS Lambda fonksiyonu kullanarak bir URL'den nasıl PDF oluşturabilirim?
.NET AWS Lambda fonksiyonunda bir URL'den PDF oluşturmak için IronPDF'in ChromePdfRenderer.RenderUrlAsPdf yöntemini kullanın. Geçici klasörün TempFolderPath ve CustomDeploymentDirectory özellikleriyle yapılandırıldığından emin olun.
AWS Lambda'da IronPDF'i yapılandırmak için hangi adımları izlemeliyim?
AWS Lambda'da IronPDF'i yapılandırmak için TempFolderPath ve CustomDeploymentDirectory ayarlarını kullanarak geçici klasör yollarını ayarlayın, GPU'yu ChromeGpuModes.Disabled ile devre dışı bırakın ve LinuxAndDockerDependenciesAutoConfig özelliği true olarak ayarlanarak Linux ve Docker bağımlılıklarının otomatik yapılandırılmasını etkinleştirin.
AWS Lambda için bellek ve zaman aşımı ayarlarını değiştirmenin önemi nedir?
Bellek ve zaman aşımı ayarlarını değiştirmek çok önemlidir çünkü IronPDF, varsayılan ayarlardan daha fazla kaynak gerektirir. Bu ayarlar aws-lambda-tools-defaults.json veya AWS Lambda konsolu üzerinden yapılandırılabilir.
AWS Lambda için Chrome bağımlılıklarının doğru kurulması nasıl sağlanır?
Chrome bağımlılıklarının doğru kurulduğundan emin olun, makalede sağlanan .NET versiyonunuza özel talimatlara uygun olarak Dockerfile'ı değiştirin. Bu, Chrome için AWS ortamında gerekli Linux paketlerinin kurulumunu içerir.
AWS Lambda fonksiyonumu etkinleştirmek ve test etmek için Visual Studio kullanabilir miyim?
Evet, AWS Toolkit for Visual Studio'yu kullanarak AWS Lambda fonksiyonunuzu etkinleştirebilir ve test edebilirsiniz, bu doğrudan IDE'den kesintisiz dağıtım ve test yapmanıza olanak tanır.
AWS Lambda'da .NET 5 kapsayıcı şablonunu kullanmanın önemi nedir?
.NET 5 kapsayıcı şablonunun AWS Lambda'da kullanılması önemli bir adımdır çünkü bu, IronPDF gibi bağımlılıklarla birlikte uygulamaların dağıtımını kolaylaştırır ve farklı ortamlar arasında tutarlılık sağlar.
AWS Lambda fonksiyonumda IronPDF kullanarak istisnaları nasıl ele alabilirim?
IronPDF işlemlerinizi bir try-catch bloğu içinde sararak AWS Lambda fonksiyonunuzdaki istisnaları ele alın ve planlama ve hata ayıklama için context.Logger.LogLine kullanarak hataları kaydedin.

