Cómo ejecutar la imagen de Docker de Aspose.CAD en la función AWS Lambda

Prerrequisitos

  • Docker debe estar instalado en su sistema. Para obtener información sobre cómo instalar Docker en Windows o Mac, consulte los enlaces en la sección “Ver También”.
  • Visual Studio 2022.
  • AWS Toolkit para Visual Studio 2022.
  • Se utiliza .NET 6 SDK en el ejemplo.
  • Postman

Función AWS Lambda

Lambda es un servicio de computación que le permite ejecutar código sin aprovisionar o administrar servidores. Lambda ejecuta su código en una infraestructura de computación de alta disponibilidad y realiza toda la administración de los recursos computacionales, incluyendo el mantenimiento del servidor y del sistema operativo, aprovisionamiento de capacidad y escalado automático, y registro. Con Lambda, puede ejecutar código para prácticamente cualquier tipo de aplicación o servicio de backend.

Creando la función AWS Lambda

Para crear el programa de la Función AWS Lambda, siga los pasos a continuación:

  1. Cree el Proyecto de AWS Lambda.
    Crear botón de función AWS
  2. Seleccione .NET 6 (Imagen de Contenedor) y haga clic en el botón ‘Finalizar’.
    Crear botón de función de contenedor
  3. Abra AWS Explorer en Visual Studio (Ver->AWS Explorer).
  4. Agregue el perfil de credenciales de AWS en AWS Explorer.
    Perfil de credenciales
  5. Ingrese el ID de clave de acceso y la clave de acceso secreta, puede obtener estas claves en las credenciales de seguridad o contactar al administrador y obtener un archivo csv para autorización.
    Configuración del perfil de la cuenta
  6. Instale las últimas bibliotecas de NuGet.
    Administrador de NuGet
  7. Ejemplo de código para convertir una imagen CAD a un archivo 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. Edite el DockerFile como en la sección Configuración de un Dockerfile.
  9. Inicie Docker Desktop.
  10. Publique en AWS Lambda.
    Publicación en AWS lambda
  11. Edite la configuración de carga.
    Subir AWS Lambda
  12. Haga clic en el botón ‘Subir’.
    Subir AWS Lambda último
  13. Vaya a AWS y seleccione Lambda.
    AWS Lambda
  14. Seleccione su nueva función y cree la URL de la función.
    Configuración de la URL de la función
  15. Seleccione el tipo de autenticación
  • AWS_IAM - Solo los usuarios y roles IAM autenticados pueden realizar solicitudes a la URL de su función.
  • NONE - Lambda no realizará autenticación IAM en las solicitudes a la URL de su función. El punto final de la URL será público a menos que implemente su propia lógica de autorización en su función.

Configuración de un Dockerfile

El siguiente paso es editar la configuración del Dockerfile en el proyecto.

  1. En el Dockerfile, especifique:
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"]

Lo anterior es un Dockerfile simple, que contiene las siguientes instrucciones:

  • La imagen del SDK que se utilizará. Aquí está la imagen de Net 6. Docker la descargará cuando se ejecute la construcción. La versión del SDK se especifica como una etiqueta.
  • Después, puede necesitar instalar fuentes porque la imagen del SDK contiene muy pocas fuentes. Además, puede usar fuentes locales copiadas en la imagen docker.
  • El directorio de trabajo, que se especifica en la siguiente línea.
  • El comando para copiar todo al contenedor, publicar la aplicación y especificar el punto de entrada.

Ejemplo de ejecución

  1. Configuración de Postman.
    Menú de la vista general
  2. Seleccione cualquier archivo DXF, DWG, DGN, DWF, DWFX, IFC, STL, DWT, IGES, PLT, CF2, OBJ, HPGL, IGS, PCL, FBX, PDF, SVG.
  3. Haga clic en el botón enviar.

Más Ejemplos

Para más muestras de cómo puede utilizar Aspose.CAD en Docker, consulte los ejemplos.

Ver También.