So führen Sie das Aspose.CAD Docker-Image in AWS Lambda-Funktionen aus

Voraussetzungen

  • Docker muss auf Ihrem System installiert sein. Informationen zur Installation von Docker unter Windows oder Mac finden Sie in den Links im Abschnitt „Siehe auch“.
  • Visual Studio 2022.
  • AWS-Toolkit für Visual Studio 2022.
  • .NET 6 SDK wird im Beispiel verwendet.
  • Postman

AWS Lambda-Funktion

Lambda ist ein Rechenservice, der es Ihnen ermöglicht, Code auszuführen, ohne Server bereitzustellen oder zu verwalten. Lambda führt Ihren Code auf einer hochverfügbaren Compute-Infrastruktur aus und übernimmt die gesamte Verwaltung der Compute-Ressourcen, einschließlich Server- und Betriebssystemwartung, Kapazitätsbereitstellung und automatische Skalierung sowie Protokollierung. Mit Lambda können Sie Code für nahezu jede Art von Anwendung oder Backend-Service ausführen.

Erstellen der AWS Lambda-Funktion

Um das AWS Lambda-Funktionsprogramm zu erstellen, befolgen Sie die folgenden Schritte:

  1. Erstellen Sie ein AWS Lambda-Projekt.
    AWS-Funktion erstellen
  2. Wählen Sie .NET 6 (Container-Image) aus und klicken Sie auf die Schaltfläche ‘Fertigstellen’.
    Container-Funktion erstellen
  3. Öffnen Sie AWS Explorer in Visual Studio (Ansicht->AWS Explorer).
  4. Fügen Sie ein AWS-Credentials-Profil im AWS Explorer hinzu.
    Anmeldeprofil
  5. Geben Sie die Access Key ID und den Secret Access Key ein. Diese Schlüssel können Sie in den Sicherheitsanmeldeinformationen erhalten oder den Administrator kontaktieren, um eine CSV-Datei zur Autorisierung zu erhalten.
    Kontoprofileinstellungen
  6. Installieren Sie die neuesten Bibliotheken von NuGet.
    NuGet-Manager
  7. Beispielcode zum Konvertieren von CAD-Bildern in PDF-Dateien.
    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. Bearbeiten Sie die Dockerfile wie im Abschnitt Konfigurieren einer Dockerfile.
  9. Starten Sie Docker Desktop.
  10. Veröffentlichen Sie die AWS Lambda.
    AWS Lambda veröffentlichen
  11. Bearbeiten Sie die Upload-Konfiguration.
    Upload AWS Lambda
  12. Klicken Sie auf die Schaltfläche ‘Hochladen’.
    Upload AWS Lambda abschließen
  13. Gehen Sie zu AWS und wählen Sie Lambda aus.
    AWS Lambda
  14. Wählen Sie Ihre neue Funktion aus und erstellen Sie eine URL-Funktion.
    Konfiguration URL-Funktion
  15. Wählen Sie den Authentifizierungstyp aus
  • AWS_IAM - Nur authentifizierte IAM-Benutzer und -Rollen können Anfragen an Ihre Funktions-URL stellen.
  • NONE - Lambda führt keine IAM-Authentifizierung für Anfragen an die Funktion-URL durch. Der URL-Endpunkt wird öffentlich, es sei denn, Sie implementieren Ihre eigene Autorisierungslogik in Ihrer Funktion.

Konfigurieren einer Dockerfile

Der nächste Schritt besteht darin, die Dockerfile im Projekt zu konfigurieren.

  1. Geben Sie in der Dockerfile Folgendes an:
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"]

Das obige ist eine einfache Dockerfile, die die folgenden Anweisungen enthält:

  • Das SDK-Image, das verwendet werden soll. Hier handelt es sich um das .NET 6-Image. Docker lädt es herunter, wenn der Build ausgeführt wird. Die Version des SDK wird als Tag angegeben.
  • Danach müssen Sie möglicherweise Schriftarten installieren, da das SDK-Image sehr wenige Schriftarten enthält. Außerdem können Sie lokale Schriftarten verwenden, die in das Docker-Image kopiert wurden.
  • Das Arbeitsverzeichnis, das in der nächsten Zeile angegeben ist.
  • Der Befehl, um alles in den Container zu kopieren, die Anwendung zu veröffentlichen und den Einstiegspunkt anzugeben.

Ausführungsbeispiel

  1. Postman-Einstellungen.
    Kursübersicht
  2. Wählen Sie eine beliebige DXF-, DWG-, DGN-, DWF-, DWFX-, IFC-, STL-, DWT-, IGES-, PLT-, CF2-, OBJ-, HPGL-, IGS-, PCL-, FBX-, PDF- oder SVG-Datei aus.
  3. Klicken Sie auf die Schaltfläche Senden.

Weitere Beispiele

Für weitere Beispiele, wie Sie Aspose.CAD in Docker verwenden können, siehe die Beispiele.

Siehe auch.