Come eseguire l'immagine Dockers di Aspose.CAD in una funzione AWS Lambda

Requisiti

  • Docker deve essere installato sul tuo sistema. Per informazioni su come installare Docker su Windows o Mac, fare riferimento ai collegamenti della sezione “Vedi anche”.
  • Visual Studio 2022.
  • AWS Toolkit per Visual Studio 2022.
  • Il SDK .NET 6 è utilizzato nell’esempio.
  • Postman

Funzione AWS Lambda

Lambda è un servizio di calcolo che consente di eseguire codice senza provisioning o gestione dei server. Lambda esegue il tuo codice su un’infrastruttura di calcolo ad alta disponibilità e svolge tutta l’amministrazione delle risorse di calcolo, inclusa la manutenzione del server e del sistema operativo, il provisioning della capacità e il ridimensionamento automatico, e la registrazione. Con Lambda, puoi eseguire codice per praticamente qualsiasi tipo di applicazione o servizio backend.

Creazione della Funzione AWS Lambda

Per creare il programma della Funzione AWS Lambda, segui i passaggi qui sotto:

  1. Crea un progetto AWS Lambda.
    Crea pulsante funzione AWS
  2. Seleziona .NET 6 (Immagine del contenitore) e fai clic sul pulsante ‘Fine’.
    Crea pulsante funzione contenitore
  3. Apri AWS Explorer in Visual Studio (Visualizza->AWS Explorer).
  4. Aggiungi il profilo delle credenziali AWS in AWS Explorer.
    Profilo credenziali
  5. Inserisci l’ID chiave di accesso e la chiave di accesso segreta, puoi ottenere queste chiavi nelle credenziali di sicurezza oppure contatta l’amministratore e ottieni un file csv per l’autenticazione.
    Impostazioni profilo account
  6. Installa le ultime librerie da NuGet.
    Gestore NuGet
  7. Esempio di codice per convertire l’immagine CAD in un file 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. Modifica il DockerFile come nella sezione Configurazione di un Dockerfile.
  9. Avvia Docker Desktop.
  10. Pubblica su AWS Lambda.
    Pubblica AWS lambda
  11. Modifica la configurazione di caricamento.
    Carica aws lambda
  12. Fai clic sul pulsante ‘Carica’.
    Carica aws lambda ultimo
  13. Vai su AWS e seleziona Lambda.
    AWS Lambda
  14. Seleziona la tua nuova funzione e crea l’url della funzione.
    Configurazione url funzione
  15. Seleziona il tipo di autenticazione
  • AWS_IAM - Solo gli utenti e i ruoli IAM autenticati possono inviare richieste all’URL della tua funzione.
  • NONE - Lambda non eseguirà l’autenticazione IAM sulle richieste all’URL della tua funzione. L’endpoint URL sarà pubblico a meno che tu non implementi la tua logica di autorizzazione nella tua funzione.

Configurazione di un Dockerfile

Il passaggio successivo è modificare e configurare il Dockerfile nel progetto.

  1. Nel Dockerfile, specifica:
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"]

Quello sopra è un semplice Dockerfile, che contiene le seguenti istruzioni:

  • L’immagine SDK da utilizzare. Qui si tratta dell’immagine Net 6. Docker la scaricherà quando viene eseguita la build. La versione del SDK è specificata come tag.
  • Inoltre, potrebbe essere necessario installare i font perché l’immagine SDK contiene pochissimi font. Inoltre, puoi utilizzare font locali copiati nell’immagine docker.
  • La cartella di lavoro, che è specificata nella riga successiva.
  • Il comando per copiare tutto nel contenitore, pubblicare l’applicazione e specificare il punto di entrata.

Esempio di esecuzione

  1. Impostazioni di Postman.
    Menu panoramica
  2. Seleziona qualsiasi file DXF, DWG, DGN, DWF, DWFX, IFC, STL, DWT, IGES, PLT, CF2, OBJ, HPGL, IGS, PCL, FBX, PDF, SVG.
  3. Fai clic sul pulsante invia.

Ulteriori esempi

Per ulteriori esempi su come puoi utilizzare Aspose.CAD in Docker, vedere gli esempi.

Vedi anche.