如何在AWS Lambda函数中运行Aspose.CAD Docker镜像

先决条件

  • 必须在系统上安装Docker。有关如何在Windows或Mac上安装Docker的信息,请参阅“另请参阅”部分中的链接。
  • Visual Studio 2022。
  • AWS Toolkit for Visual Studio 2022。
  • 示例中使用了.NET 6 SDK。
  • Postman

AWS Lambda函数

Lambda是一种计算服务,可让您在无需配置或管理服务器的情况下运行代码。Lambda在高可用性计算基础架构上运行您的代码,并执行计算资源的所有管理,包括服务器和操作系统维护、容量配置和自动扩展以及日志记录。使用Lambda,您几乎可以为任何类型的应用程序或后端服务运行代码。

创建AWS Lambda函数

要创建AWS Lambda函数程序,请按照以下步骤操作:

  1. 创建AWS Lambda项目。
    创建AWS函数按钮
  2. 选择.NET 6(容器镜像)并单击“完成”按钮。
    创建容器函数按钮
  3. 在Visual Studio中打开AWS Explorer(视图->AWS Explorer)。
  4. 在AWS Explorer中添加AWS凭证配置文件。
    凭证配置文件
  5. 输入访问密钥ID和秘密访问密钥,您可以在安全凭据中获取这些密钥或联系管理员并获取授权的csv文件。
    账户配置文件设置
  6. 从NuGet安装最新的库。
    NuGet管理器
  7. 将cad图像转换为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. 按照配置Dockerfile部分的说明编辑DockerFile。
  9. 启动Docker Desktop。
  10. 发布到AWS Lambda。
    AWS lambda发布
  11. 编辑上传配置。
    上传AWS Lambda
  12. 点击“上传”按钮。
    上传AWS Lambda最后
  13. 转到AWS并选择Lambda。
    AWS Lambda
  14. 选择您的新函数并创建URL函数。
    配置URL函数
  15. 选择身份验证类型
  • AWS_IAM - 只有经过身份验证的IAM用户和角色才能请求您的函数URL。
  • NONE - Lambda不会对请求您的函数URL进行IAM身份验证。除非您在函数中实现自己的授权逻辑,否则URL端点将是公开的。

配置Dockerfile

下一步是在项目中编辑配置Dockerfile。

  1. 在Dockerfile中指定:
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"]

上述是一个简单的Dockerfile,其中包含以下指令:

  • 要使用的SDK镜像。在这里它是.NET 6镜像。Docker将在构建运行时下载它。SDK的版本作为标签指定。
  • 之后,您可能需要安装字体,因为SDK镜像包含的字体非常少。此外,您可以使用复制到Docker镜像的本地字体。
  • 在下一行中指定的工作目录。
  • 将所有内容复制到容器、发布应用程序并指定入口点的命令。

执行示例

  1. Postman设置。
    概述菜单
  2. 选择任何DXF、DWG、DGN、DWF、DWFX、IFC、STL、DWT、IGES、PLT、CF2、OBJ、HPGL、IGS、PCL、FBX、PDF、SVG文件。
  3. 点击发送按钮。

更多示例

有关如何在Docker中使用Aspose.CAD的更多示例,请参阅示例

另请参阅。