Як запустити 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, виконайте такі кроки:

  1. Створіть проект AWS Lambda.
    Створення кнопки функції AWS
  2. Виберіть .NET 6 (Контейнерний образ) і натисніть кнопку ‘Завершити’.
    Створення кнопки контейнерної функції
  3. Відкрийте AWS Explorer у Visual Studio (Перегляд->AWS Explorer).
  4. Додайте профіль облікових даних AWS в AWS Explorer.
    Профіль облікових даних
  5. Введіть ідентифікатор ключа доступу та секретний ключ доступу, ці ключі можна отримати в розділі Безпека облікових даних або зв’язатися з адміністратором та отримати файл 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 не виконуватиме автентифікацію IAM для запитів до вашого URL-функції. 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. Натисніть кнопку відправлення.

Більше прикладів

Для отримання більше зразків того, як ви можете використовувати Aspose.CAD в Docker, перегляньте приклади.

Дивіться також.