Как запустить образ Aspose.CAD Docker в AWS Lambda Function
Требования
- Docker должен быть установлен в вашей системе. Для получения информации о том, как установить Docker на Windows или Mac, обратитесь к ссылкам в разделе «См. также».
- Visual Studio 2022.
- AWS Toolkit для Visual Studio 2022.
- В примере используется .NET 6 SDK.
- Postman
AWS Lambda Function
Lambda — это вычислительный сервис, который позволяет запускать код без provisionning или управления серверами. Lambda запускает ваш код на высокодоступной вычислительной инфраструктуре и выполняет все административные задачи вычислительных ресурсов, включая обслуживание серверов и операционных систем, provisioning мощностей и автоматическое масштабирование, а также ведение логов. С помощью Lambda вы можете запускать код практически для любого типа приложения или бэкэнд-сервиса.
Создание AWS Lambda Function
Чтобы создать программу AWS Lambda Function, выполните следующие шаги:
- Создайте проект AWS Lambda.
- Выберите .NET 6 (Container Image) и нажмите кнопку ‘Finish’.
- Откройте AWS Explorer в Visual Studio (View->AWS Explorer).
- Добавьте профиль учетных данных AWS в AWS Explorer.
- Введите Access Key ID и Secret Access Key, вы можете получить эти ключи в разделе Безопасность или связаться с администратором и получить 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.
- Измените конфигурацию загрузки.
- Нажмите кнопку ‘Upload’.
- Перейдите в 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 смотрите примеры.