Jak uruchomić obraz Docker Aspose.CAD w funkcji AWS Lambda

Wymagania wstępne

  • Docker musi być zainstalowany w twoim systemie. Aby uzyskać informacje na temat instalacji Docker na Windows lub Mac, zapoznaj się z linkami w sekcji “Zobacz także”.
  • Visual Studio 2022.
  • AWS Toolkit for Visual Studio 2022.
  • W przykładzie używany jest pakiet .NET 6 SDK.
  • Postman

Funkcja AWS Lambda

Lambda to usługa obliczeniowa, która pozwala uruchamiać kod bez provisionowania lub zarządzania serwerami. Lambda uruchamia Twój kod na infrastrukturze obliczeniowej o wysokiej dostępności i wykonuje wszystkie zadania administracyjne związane z zasobami obliczeniowymi, w tym konserwację serwerów i systemu operacyjnego, provisionowanie pojemności i automatyczne skalowanie oraz rejestrowanie. Dzięki Lambda możesz uruchamiać kod dla prawie każdego rodzaju aplikacji lub usługi zaplecza.

Tworzenie funkcji AWS Lambda

Aby utworzyć program funkcji AWS Lambda, wykonaj poniższe kroki:

  1. Utwórz projekt AWS Lambda.
    Utwórz przycisk funkcji AWS
  2. Wybierz .NET 6 (Obraz kontenera) i kliknij przycisk ‘Zakończ’.
    Utwórz przycisk funkcji kontenera
  3. Otwórz AWS Explorer w Visual Studio (Widok->AWS Explorer).
  4. Dodaj profil poświadczeń AWS w AWS Explorer.
    Profil poświadczeń
  5. Wprowadź Access Key ID oraz Secret Access Key, możesz uzyskać te klucze w poświadczeniach zabezpieczeń lub skontaktować się z administratorem i uzyskać plik csv do autoryzacji.
    Ustawienia profilu konta
  6. Zainstaluj najnowsze biblioteki z NuGet.
    Menadżer NuGet
  7. Przykład kodu do konwersji obrazu CAD do pliku PDF.
    public APIGatewayHttpApiV2ProxyResponse FunctionHandler(APIGatewayHttpApiV2ProxyRequest stream, ILambdaContext context)
    {
        try
        {            
            var parser = HttpMultipartParser.MultipartFormDataParser.Parse(new MemoryStream(Convert.FromBase64String(stream.Body)));
            var file = parser.Files.First();
            Stream fileStream = file.Data;
    
            using (var img = Aspose.CAD.Image.Load(fileStream))
            {
                var ms = new MemoryStream();
                img.Save(ms, new PdfOptions());
                ms.Seek(0, (System.IO.SeekOrigin)SeekOrigin.Begin);
              
                return new APIGatewayHttpApiV2ProxyResponse
                {
                    StatusCode = (int)HttpStatusCode.OK,
                    Body = Convert.ToBase64String(ms.ToArray()),
                    IsBase64Encoded = true,
                    Headers = new Dictionary<string, string>
                    {
                        {"Content-Type", "application/pdf" },
                        {"Content-Disposition", "attachment;filename=filename.pdf" }
                    }
                };
            }
        }
        catch (Exception e)
        {           
            return new APIGatewayHttpApiV2ProxyResponse
            {
                StatusCode = (int)HttpStatusCode.OK,
                Body = e.Message,
                Headers = new Dictionary<string, string>
                {
                    {
                        "Content-Type", "text/html"
                    }
                }
            };
        }
    }
  8. Edytuj DockerFile, jak w sekcji Konfigurowanie Dockerfile.
  9. Uruchom Docker Desktop.
  10. Publikuj do AWS Lambda.
    Publikuj AWS Lambda
  11. Edytuj konfigurację przesyłania.
    Przesyłanie AWS Lambda
  12. Kliknij przycisk ‘Prześlij’.
    Ostatnie przesłanie AWS Lambda
  13. Przejdź do AWS i wybierz Lambda.
    AWS Lambda
  14. Wybierz swoją nową funkcję i utwórz URL funkcji.
    Konfiguracja URL funkcji
  15. Wybierz typ uwierzytelniania
  • AWS_IAM - Tylko uwierzytelnieni użytkownicy i role IAM mogą wysyłać żądania do URL funkcji.
  • NONE - Lambda nie będzie przeprowadzać uwierzytelniania IAM dla żądań do URL funkcji. Punkt końcowy URL będzie publiczny, chyba że wdrożysz własną logikę autoryzacyjną w swojej funkcji.

Konfigurowanie Dockerfile

Następnym krokiem jest edytowanie i konfigurowanie Dockerfile w projekcie.

  1. W Dockerfile określ:
FROM public.ecr.aws/lambda/dotnet:6

WORKDIR /var/task

COPY "bin/Release/lambda-publish"  .

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

CMD ["AWSLambda::AWSLambda.Function::FunctionHandler"]

Powyżej znajduje się prosty Dockerfile, który zawiera następujące instrukcje:

  • Obraz SDK, który ma być używany. Tutaj jest to obraz Net 6. Docker pobierze go podczas uruchamiania budowy. Wersja SDK jest określona jako etykieta.
  • Następnie możesz potrzebować zainstalować czcionki, ponieważ obraz SDK zawiera bardzo mało czcionek. Możesz również użyć lokalnych czcionek skopiowanych do obrazu dockera.
  • Katalog roboczy, który jest określony w następnej linii.
  • Komenda do skopiowania wszystkiego do kontenera, publikowania aplikacji i określenia punktu wejścia.

Przykład wykonania

  1. Ustawienia Postmana.
    Menu przegląd
  2. Wybierz dowolny plik DXF, DWG, DGN, DWF, DWFX, IFC, STL, DWT, IGES, PLT, CF2, OBJ, HPGL, IGS, PCL, FBX, PDF, SVG.
  3. Kliknij przycisk wyślij.

Więcej przykładów

Aby uzyskać więcej próbek, jak można użyć Aspose.CAD w Docker, zobacz przykłady.

Zobacz także.