Unable to load shared library 'libgdiplus' or one of its dependencies while running lambda function

Viewed 1419

I am writing an AWS Lambda function in .NET Core 3.1. I am using Aspose.slides library in the AWS Lambda function. I am publishing the AWS lambda function as docker on AWS. Lambda function successfully gets published but when i test the Lambda it gives me the following error:

Aspose.Slides.PptxReadException: The type initializer for 'Gdip' threw an exception.
---> System.TypeInitializationException: The type initializer for 'Gdip' threw an exception.
---> System.DllNotFoundException: Unable to load shared library 'libgdiplus' or one of its dependencies. In order to help diagnose loading problems, consider setting the LD_DEBUG environment variable: liblibgdiplus: cannot open shared object file: No such file or directory
at System.Drawing.SafeNativeMethods.Gdip.GdiplusStartup(IntPtr& token, StartupInput& input, StartupOutput& output)
at System.Drawing.SafeNativeMethods.Gdip..cctor()

Even though, i am installing the libgdiplus package from the docker file but i am still getting the above error.

Docker file is:

FROM public.ecr.aws/lambda/dotnet:core3.1 AS base  

FROM mcr.microsoft.com/dotnet/sdk:3.1 as build  
WORKDIR /src  
COPY ["Lambda.PowerPointProcessor.csproj", "base/"]  
RUN dotnet restore "base/Lambda.PowerPointProcessor.csproj"  
  
WORKDIR "/src"  
COPY . .  
RUN apt-get update && apt-get install -y libc6-dev
RUN apt-get update && apt-get install -y libgdiplus
RUN dotnet build "Lambda.PowerPointProcessor.csproj" --configuration Release --output /app/build  
  
FROM build AS publish  
RUN dotnet publish "Lambda.PowerPointProcessor.csproj" \  
            --configuration Release \   
            --runtime linux-x64 \  
            --self-contained false \   
            --output /app/publish \  
            -p:PublishReadyToRun=true    
  
FROM base AS final  
WORKDIR /var/task  
COPY --from=publish /app/publish .  
CMD ["Lambda.PowerPointProcessor::Lambda.PowerPointProcessor.Function::FunctionHandler"]

Any help would be much appreciated.

1 Answers
FROM public.ecr.aws/lambda/dotnet:core3.1

WORKDIR /var/task

COPY "bin/Release/netcoreapp3.1/linux-x64"  .

RUN yum install -y amazon-linux-extras 
RUN amazon-linux-extras install epel -y
RUN yum install -y libgdiplus  

CMD ["Lambda.PowerPointProcessor::Lambda.PowerPointProcessor.Function::FunctionHandler"]

This docker file resolved the issue for me. It's working fine for me.

Related