AWS Lambda IronPDF를 Amazon Linux 2에서 사용

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

AWS Lambda / Amazon Linux 2 ( IronPdf.Linux를 사용하여 관리자/루트 권한으로 설치)

이 정보는 저희 웹사이트( AWS Lambda IronPDF 가이드) 에도 나와 있습니다.

AWS 지침

  1. 컨테이너 이미지를 사용한 AWS .NET 5 Lambda 지원을 참조하세요.
  2. 다음 Dockerfile을 생성하고 사용하십시오.
# Use the .NET 5 AWS Lambda runtime as the base image
FROM public.ecr.aws/lambda/dotnet:5.0
WORKDIR /var/task

# Install the necessary dependencies for IronPDF
RUN yum install -y pango.x86_64 \
                   libXcomposite.x86_64 \
                   libXcursor.x86_64 \
                   libXdamage.x86_64 \
                   libXext.x86_64 \
                   libXi.x86_64 \
                   libXtst.x86_64 \
                   cups-libs.x86_64 \
                   libXScrnSaver.x86_64 \
                   libXrandr.x86_64 \
                   GConf2.x86_64 \
                   alsa-lib.x86_64 \
                   atk.x86_64 \
                   gtk3.x86_64 \
                   ipa-gothic-fonts \
                   xorg-x11-fonts-100dpi \
                   xorg-x11-fonts-75dpi \
                   xorg-x11-utils \
                   xorg-x11-fonts-cyrillic \
                   xorg-x11-fonts-Type1 \
                   xorg-x11-fonts-misc \
                   glibc-devel.x86_64 \
                   at-spi2-atk.x86_64 \
                   mesa-libgbm.x86_64

# This COPY command copies the .NET Lambda project's build artifacts from the host machine into the image.
COPY "bin/Release/lambda-publish" .
  1. 솔루션에 IronPdf.Linux 패키지를 추가하세요.
  2. _FunctionHandler 코드를 수정하세요. 이 예제는 웹페이지( IronPDF )에서 PDF를 생성하고 /tmp에 저장합니다. 이 PDF 파일을 보려면 S3와 같은 다른 서비스에 업로드해야 합니다. (AWS 공식 예제는 여기에서 확인할 수 있습니다 - AWS S3 기본 사항 )
// Define the function handler for AWS Lambda
public Casing FunctionHandler(string input, ILambdaContext context)
{
    try
    {
        // Start logging the function process with input details
        context.Logger.LogLine($"START FunctionHandler RequestId: {context.AwsRequestId} Input: {input}");

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

        // Optional: Enable debugging for IronPdf
        // IronPdf.Logging.Logger.EnableDebugging = true;
        // IronPdf.Logging.Logger.LogFilePath = awsTmpPath;
        // IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.All;

        // Set your license key for IronPDF
        IronPdf.License.LicenseKey = "YOUR_LICENSE_KEY";

        // Configuration for IronPDF rendering
        IronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled;
        IronPdf.Installation.DefaultRenderingEngine = IronPdf.Rendering.PdfRenderingEngine.Chrome;
        Environment.SetEnvironmentVariable("TEMP", awsTmpPath, EnvironmentVariableTarget.Process);
        Environment.SetEnvironmentVariable("TMP", awsTmpPath, EnvironmentVariableTarget.Process);
        IronPdf.Installation.TempFolderPath = awsTmpPath;
        IronPdf.Installation.CustomDeploymentDirectory = awsTmpPath;
        IronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = true;

        context.Logger.LogLine($"Creating IronPdf.ChromePdfRenderer");

        // Create instance of ChromePdfRenderer and render PDF from URL
        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"; // Name for the PDF file

        // Save the rendered PDF document
        context.Logger.LogLine($"Saving PDF name : {fileName}");
        pdfDoc.SaveAs(fileName);

        // Here you can upload the saved PDF file to anywhere such as AWS S3.
        context.Logger.LogLine($"COMPLETE!");
    }
    catch (Exception e)
    {
        // Log errors if any occur
        context.Logger.LogLine($"[ERROR] FunctionHandler : {e.Message}");
    }

    // Return a new instance of Casing with lower and upper case input strings
    return new Casing(input?.ToLower(), input?.ToUpper());
}

// Casing record to hold lower and upper case strings
public record Casing(string Lower, string Upper);
// Define the function handler for AWS Lambda
public Casing FunctionHandler(string input, ILambdaContext context)
{
    try
    {
        // Start logging the function process with input details
        context.Logger.LogLine($"START FunctionHandler RequestId: {context.AwsRequestId} Input: {input}");

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

        // Optional: Enable debugging for IronPdf
        // IronPdf.Logging.Logger.EnableDebugging = true;
        // IronPdf.Logging.Logger.LogFilePath = awsTmpPath;
        // IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.All;

        // Set your license key for IronPDF
        IronPdf.License.LicenseKey = "YOUR_LICENSE_KEY";

        // Configuration for IronPDF rendering
        IronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled;
        IronPdf.Installation.DefaultRenderingEngine = IronPdf.Rendering.PdfRenderingEngine.Chrome;
        Environment.SetEnvironmentVariable("TEMP", awsTmpPath, EnvironmentVariableTarget.Process);
        Environment.SetEnvironmentVariable("TMP", awsTmpPath, EnvironmentVariableTarget.Process);
        IronPdf.Installation.TempFolderPath = awsTmpPath;
        IronPdf.Installation.CustomDeploymentDirectory = awsTmpPath;
        IronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = true;

        context.Logger.LogLine($"Creating IronPdf.ChromePdfRenderer");

        // Create instance of ChromePdfRenderer and render PDF from URL
        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"; // Name for the PDF file

        // Save the rendered PDF document
        context.Logger.LogLine($"Saving PDF name : {fileName}");
        pdfDoc.SaveAs(fileName);

        // Here you can upload the saved PDF file to anywhere such as AWS S3.
        context.Logger.LogLine($"COMPLETE!");
    }
    catch (Exception e)
    {
        // Log errors if any occur
        context.Logger.LogLine($"[ERROR] FunctionHandler : {e.Message}");
    }

    // Return a new instance of Casing with lower and upper case input strings
    return new Casing(input?.ToLower(), input?.ToUpper());
}

// Casing record to hold lower and upper case strings
public record Casing(string Lower, string Upper);
$vbLabelText   $csharpLabel
  1. 메모리 및 타임아웃 늘리기 - IronPDF는 Lambda의 기본값보다 더 많은 시간과 메모리를 필요로 합니다. 이 설정은 aws-lambda-tools-defaults.json에서 구성할 수 있습니다. 함수의 요구 사항에 맞게 이 값들을 조정하십시오.

이 예시에서는 크기를 512MB, 시간을 330초로 설정했습니다.

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

Lambda 콘솔( AWS Lambda 메모리 구성) 을 사용해서도 구성을 업데이트할 수 있습니다.

  1. AWS .NET 5 Lambda 컨테이너 이미지 지원에 대한 문서의 마지막 부분을 참조하여 Lambda 함수를 게시하고 테스트해 보세요.
  2. Lambda 함수는 Lambda 콘솔, AWS Lambda 콘솔을 사용하거나 AWS Toolkit for Visual Studio를 사용하여 Visual Studio를 통해 호출할 수도 있습니다.

"GPU 프로세스를 사용할 수 없습니다"라는 메시지가 표시되면 설치가 관리자 권한으로 실행되지 않았을 수 있습니다. 관리자/루트 권한으로 소프트웨어를 다시 실행해 보세요. 또는 Dockerfile에 다음 내용을 추가하세요.

RUN chmod 755 "runtimes/linux-x64/native/IronCefSubprocess"
커티스 차우
기술 문서 작성자

커티스 차우는 칼턴 대학교에서 컴퓨터 과학 학사 학위를 취득했으며, Node.js, TypeScript, JavaScript, React를 전문으로 하는 프론트엔드 개발자입니다. 직관적이고 미적으로 뛰어난 사용자 인터페이스를 만드는 데 열정을 가진 그는 최신 프레임워크를 활용하고, 잘 구성되고 시각적으로 매력적인 매뉴얼을 제작하는 것을 즐깁니다.

커티스는 개발 분야 외에도 사물 인터넷(IoT)에 깊은 관심을 가지고 있으며, 하드웨어와 소프트웨어를 통합하는 혁신적인 방법을 연구합니다. 여가 시간에는 게임을 즐기거나 디스코드 봇을 만들면서 기술에 대한 애정과 창의성을 결합합니다.

시작할 준비 되셨나요?
Nuget 다운로드 17,527,568 | 버전: 2026.2 방금 출시되었습니다