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:
- Utwórz projekt AWS Lambda.
- Wybierz .NET 6 (Obraz kontenera) i kliknij przycisk ‘Zakończ’.
- Otwórz AWS Explorer w Visual Studio (Widok->AWS Explorer).
- Dodaj profil poświadczeń AWS w AWS Explorer.
- 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.
- Zainstaluj najnowsze biblioteki z NuGet.
- 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" } } }; } }
- Edytuj DockerFile, jak w sekcji Konfigurowanie Dockerfile.
- Uruchom Docker Desktop.
- Publikuj do AWS Lambda.
- Edytuj konfigurację przesyłania.
- Kliknij przycisk ‘Prześlij’.
- Przejdź do AWS i wybierz Lambda.
- Wybierz swoją nową funkcję i utwórz URL funkcji.
- 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.
- 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
- Ustawienia Postmana.
- Wybierz dowolny plik DXF, DWG, DGN, DWF, DWFX, IFC, STL, DWT, IGES, PLT, CF2, OBJ, HPGL, IGS, PCL, FBX, PDF, SVG.
- 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.