IronPDF .NET'i AWS Lambda Üzerinde Nasıl Çalıştırır ve Dağıtırsınız
1. Konteyner şablonu ile AWS Lambda oluşturun (.NET 5)
AWS'den bu resmi belgenin ilk bölümüne bakınız: .NET 5 AWS Lambda Support with Container Images.
2. Paket bağımlılıklarını ekleyin
Bu bağımlılıklar bu AWS ortamında Chrome için gereklidir.
Lütfen Docker dosyasını bu talimatlara 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
IronPdf.Linux kurun
- Çözüm Gezgini'nde, Referanslar'a sağ tıklayın, NuGet Paketlerini Yönet'i seçin.
- Gözat seçeneğini belirleyin ve
IronPdf.Linuxarayın. - Paketi seçin ve kurun.
4. FunctionHandler kodunu değiştirin
Bu örnek, https://ironpdf.com/ websitesinden bir PDF dosyası oluşturacak ve /tmp konumuna kaydedecektir. Bu PDF'yi görüntülemek için, S3 gibi başka bir hizmete yüklemeniz gerekir.
AWS Lambda üzerinde IronPDF'i kullanırken geçici klasör yapılandırması gereklidir. Lütfen 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. Bunu aws-lambda-tools-defaults.json içinde yapılandırabilirsiniz. Lütfen bu değeri fonksiyonunuza uygun ş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. Daha fazla bilgi için AWS Lambda işlevlerini yapılandırma makalesine gidin.
6. Yayınla
'Konteyner Görüntüleriyle .NET 5 AWS Lambda Desteği' belgesinin son kısmındaki talimatları izleyerek Lambda işlevinizi yayınlayın ve test edin.
7. Deneyin!
Lambda konsolu veya AWS Toolkit for Visual Studio aracılığıyla Lambda işlevini etkinleştirebilirsiniz.
Sıkça Sorulan Sorular
Bir .NET AWS Lambda işlevi kullanarak bir URL'den nasıl PDF oluşturabilirim?
Bir URL'den .NET AWS Lambda işlevi ile PDF oluşturmak için IronPDF'nin ChromePdfRenderer.RenderUrlAsPdf metodunu kullanın. Geçici klasörün TempFolderPath ve CustomDeploymentDirectory özellikleri kullanılarak yapılandırıldığından emin olun.
AWS Lambda'da IronPDF'yi yapılandırmak için hangi adımları izlemeliyim?
IronPDF'yi AWS Lambda'da TempFolderPath ve CustomDeploymentDirectory kullanarak geçici klasör yolları ayarlayarak, ChromeGpuModes.Disabled ile GPU'yu devre dışı bırakarak ve LinuxAndDockerDependenciesAutoConfig true olarak ayarlayarak Linux ve Docker bağımlılıklarının otomatik yapılandırmasını etkinleştirerek yapılandırın.
AWS Lambda için bellek ve zaman aşımı ayarlarını ayarlamak neden önemlidir?
Bellek ve zaman aşımı ayarlarını AWS Lambda için ayarlamak önemlidir çünkü IronPDF, varsayılan ayarlardan daha fazla kaynak gerektirir. Bu, aws-lambda-tools-defaults.json içinde veya AWS Lambda konsolu aracılığıyla yapılandırılabilir.
AWS Lambda için Chrome bağımlılıklarının doğru yüklenmesini nasıl sağlarım?
Makaledeki özel .NET sürüm talimatlarına göre Dockerfile dosyasını değiştirerek Chrome bağımlılıklarının doğru yüklendiğinden emin olun. Bu, AWS ortamında Chrome için gerekli Linux paketlerinin yüklenmesini içerir.
Visual Studio'yu AWS Lambda işlevimi etkinleştirmek ve test etmek için kullanabilir miyim?
Evet, AWS Lambda işlevinizi etkinleştirmek ve test etmek için Visual Studio'yu, Visual Studio için AWS Toolkit kullanarak sorunsuz bir şekilde dağıtım ve testi doğrudan IDE'den yapabilirsiniz.
AWS Lambda'da .NET 5 için bir kapsayıcı şablon kullanmanın önemi nedir?
AWS Lambda'da .NET 5 için bir kapsayıcı şablon kullanmak önemlidir çünkü IronPDF gibi bağımlılıklarıyla birlikte uygulamaların dağıtımını kolaylaştırır ve ortamlar arası tutarlılığı sağlar.
IronPDF'yi kullanarak AWS Lambda işlevimde hataları nasıl ele alabilirim?
AWS Lambda işlevinizde hataları, IronPDF işlemlerini bir try-catch bloğuna sarmak ve hataları context.Logger.LogLine kullanarak hata ayıklama ve sorun giderme için günlüğe kaydederek ele alın.

