Como Executar a Imagem Docker Aspose.CAD na Função AWS Lambda
Pré-requisitos
- O Docker deve estar instalado em seu sistema. Para informações sobre como instalar o Docker no Windows ou Mac, consulte os links na seção “Veja Também”.
- Visual Studio 2022.
- AWS Toolkit para Visual Studio 2022.
- O SDK .NET 6 é usado no exemplo.
- Postman
Função AWS Lambda
Lambda é um serviço de computação que permite executar código sem provisionar ou gerenciar servidores. O Lambda executa seu código em uma infraestrutura de computação de alta disponibilidade e realiza toda a administração dos recursos de computação, incluindo manutenção de servidores e sistemas operacionais, provisionamento de capacidade e escalonamento automático, e registro. Com o Lambda, você pode executar código para virtualmente qualquer tipo de aplicação ou serviço de backend.
Criando a Função AWS Lambda
Para criar o programa da Função AWS Lambda, siga os passos abaixo:
- Crie o Projeto AWS Lambda.
- Selecione .NET 6 (Imagem de Conteiner) e clique no botão ‘Finalizar’.
- Abra o AWS Explorer no Visual Studio (Ver->AWS Explorer).
- Adicione o perfil de credenciais da AWS no AWS Explorer.
- Insira o ID da Chave de Acesso e a Chave de Acesso Secreta, você pode obter essas chaves nas credenciais de segurança ou entrar em contato com o administrador e obter um arquivo csv para autorização.
- Instale as bibliotecas mais recentes do NuGet.
- Exemplo de código para converter imagem cad em arquivo 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" } } }; } }
- Edite o DockerFile conforme a seção Configurando um Dockerfile.
- Inicie o Docker Desktop.
- Publique para a AWS Lambda.
- Edite a configuração de upload.
- Clique no botão ‘Upload’.
- Vá para a AWS e selecione Lambda.
- Selecione sua nova função e crie a URL da função.
- Selecione o tipo de autorização
- AWS_IAM - Apenas usuários e funções IAM autenticados podem fazer solicitações para sua URL de função.
- NONE - O Lambda não realizará autenticação IAM nas solicitações para sua URL de função. O endpoint da URL será público, a menos que você implemente sua própria lógica de autorização em sua função.
Configurando um Dockerfile
O próximo passo é editar e configurar o Dockerfile no projeto.
- No 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"]
O acima é um Dockerfile simples, que contém as seguintes instruções:
- A imagem do SDK a ser utilizada. Aqui é a imagem .NET 6. O Docker a baixará quando a construção for executada. A versão do SDK é especificada como uma tag.
- Depois, pode ser necessário instalar fontes porque a imagem do SDK contém muito poucas fontes. Além disso, você pode usar fontes locais copiadas para a imagem do docker.
- O diretório de trabalho, que é especificado na linha seguinte.
- O comando para copiar tudo para o contêiner, publicar a aplicação e especificar o ponto de entrada.
Exemplo de execução
- Configurações do Postman.
- Selecione qualquer arquivo DXF, DWG, DGN, DWF, DWFX, IFC, STL, DWT, IGES, PLT, CF2, OBJ, HPGL, IGS, PCL, FBX, PDF, SVG.
- Clique no botão enviar.
Mais Exemplos
Para mais amostras de como você pode usar Aspose.CAD em Docker, veja os exemplos.