如何在AWS Lambda函数中运行Aspose.CAD Docker镜像
Contents
[
Hide
]先决条件
- 必须在系统上安装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函数和在Amazon Elastic Container Registry中创建镜像的足够权限。
要创建AWS Lambda函数程序,请按照以下步骤操作:
- 创建AWS Lambda项目。
- 选择.NET 6(容器镜像)并单击“完成”按钮。
- 在Visual Studio中打开AWS Explorer(视图->AWS Explorer)。
- 在AWS Explorer中添加AWS凭证配置文件。
- 输入访问密钥ID和秘密访问密钥,您可以在安全凭据中获取这些密钥或联系管理员并获取授权的csv文件。
- 从NuGet安装最新的库。
- 将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" } } }; } }
- 按照配置Dockerfile部分的说明编辑DockerFile。
- 启动Docker Desktop。
- 发布到AWS Lambda。
- 编辑上传配置。
- 点击“上传”按钮。
- 转到AWS并选择Lambda。
- 选择您的新函数并创建URL函数。
- 选择身份验证类型
- AWS_IAM - 只有经过身份验证的IAM用户和角色才能请求您的函数URL。
- NONE - Lambda不会对请求您的函数URL进行IAM身份验证。除非您在函数中实现自己的授权逻辑,否则URL端点将是公开的。
配置Dockerfile
下一步是在项目中编辑配置Dockerfile。
- 在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镜像的本地字体。
- 在下一行中指定的工作目录。
- 将所有内容复制到容器、发布应用程序并指定入口点的命令。
执行示例
- Postman设置。
- 选择任何DXF、DWG、DGN、DWF、DWFX、IFC、STL、DWT、IGES、PLT、CF2、OBJ、HPGL、IGS、PCL、FBX、PDF、SVG文件。
- 点击发送按钮。
如果返回成功,点击“保存到文件”,您将收到转换后的pdf格式文件
更多示例
有关如何在Docker中使用Aspose.CAD的更多示例,请参阅示例。