چگونه در توابع AWS Lambda تصویر Docker Aspose.CAD را اجرا کنیم

پیش نیازها

  • Docker باید بر روی سیستم شما نصب شده باشد. برای اطلاعات در مورد نحوه نصب Docker در ویندوز یا مک، به لینک‌های بخش “به همچنین ببینید” مراجعه کنید.
  • 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 (Container Image) را انتخاب کرده و روی دکمه ‘پایان’ کلیک کنید.
    دکمه ایجاد تابع کانتینر
  3. AWS Explorer را در Visual Studio باز کنید (View->AWS Explorer).
  4. پروفایل اعتبارنامه AWS را در AWS Explorer اضافه کنید.
    پروفایل اعتبارنامه
  5. Access Key ID و Secret Access Key را وارد کنید، می‌توانید این کلیدها را در اعتبارنامه امنیتی پیدا کنید یا با مدیر تماس بگیرید و یک فایل 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. فایل Docker را مانند بخش پیکربندی 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.
    منوی Overview
  2. هر فایل DXF، DWG، DGN، DWF، DWFX، IFC، STL، DWT، IGES، PLT، CF2، OBJ، HPGL، IGS، PCL، FBX، PDF، SVG را انتخاب کنید.
  3. روی دکمه ارسال کلیک کنید.

مثال‌های بیشتر

برای نمونه‌های بیشتر از نحوه استفاده از Aspose.CAD در Docker، به نمونه‌ها مراجعه کنید.

به همچنین ببینید.