Як запустити Docker-образ Aspose.CAD у функції AWS Lambda
Попередні вимоги
- Docker повинен бути встановлений на вашій системі. Для отримання інформації про те, як встановити Docker на Windows або Mac, зверніть увагу на посилання в розділі “Дивіться також”.
- Visual Studio 2022.
- AWS Toolkit для Visual Studio 2022.
- У прикладі використовується .NET 6 SDK.
- Postman
Функція AWS Lambda
Lambda — це обчислювальна служба, яка дозволяє вам запускати код без необхідності налаштовувати або керувати серверами. Lambda виконує ваш код на інфраструктурі високої доступності та виконує всі адміністративні роботи з обчислювальними ресурсами, включаючи обслуговування серверів і операційних систем, постачання потужностей і автоматичне масштабування, а також ведення журналів. За допомогою Lambda ви можете виконувати код практично для будь-якого типу програми або служби на задньому плані.
Створення функції AWS Lambda
Щоб створити програму функції AWS Lambda, виконайте такі кроки:
- Створіть проект AWS Lambda.
- Виберіть .NET 6 (Контейнерний образ) і натисніть кнопку ‘Завершити’.
- Відкрийте AWS Explorer у Visual Studio (Перегляд->AWS Explorer).
- Додайте профіль облікових даних AWS в AWS Explorer.
- Введіть ідентифікатор ключа доступу та секретний ключ доступу, ці ключі можна отримати в розділі Безпека облікових даних або зв’язатися з адміністратором та отримати файл 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 не виконуватиме автентифікацію IAM для запитів до вашого URL-функції. 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.
- Натисніть кнопку відправлення.
Більше прикладів
Для отримання більше зразків того, як ви можете використовувати Aspose.CAD в Docker, перегляньте приклади.