تجزیه جامع یک پروژه بارگذاری رزومه بدون سرور در AWS

این پروژه یک معماری بدون سرور برای بارگذاری و پردازش رزومه ها با استفاده از AWS S3 ، Lambda ، DynamoDB ، CloudFormation و SAM نشان می دهد. قبل از اینکه به جنبه فنی بپردازیم ، اجازه می دهیم معماری های رویداد محور (EDA) و یک سیستم بدون سرور چیست.
Serverless و EDA دو الگوی معماری هستند که به زیبایی یکدیگر را تکمیل می کنند.
بدون سرور به معنای “بدون سرور” نیست – این بدان معنی است که شما سرورها را مدیریت نمی کنید. ارائه دهنده ابر ارائه ، مقیاس بندی و نگهداری را کنترل می کند. شما فقط روی نوشتن و استقرار منطق کسب و کار خود تمرکز می کنید که شما را از بقیه متمایز می کند.
در AWS ، محبوب ترین سرویس محاسبه سرور AWS Lambda است.
معماری رویداد محور (EDA)
EDA یک طراحی سیستم است که در آن رویدادها (تغییر در حالت یا به روزرسانی ها) اقدامات را ایجاد می کند. رویدادها به طور معمول در استفاده از مؤلفه هایی مانند تولید کنندگان رویداد ، روترهای رویداد (کارگزاران) و مصرف کنندگان رویداد ، منتشر می شوند ، ضبط می شوند و واکنش نشان می دهند.
به این شکل فکر کنید:
تهیه کننده: “سلام! یک کاربر جدید ثبت نام کرد!”
روتر: “آن را دریافت کردم! چه کسی باید در این مورد بداند؟”
مصرف کنندگان: (به عنوان مثال ، ارسال ایمیل خوش آمدید ، اضافه کردن به CRM ، ورود به سیستم)
اکنون که ما از این راه خارج شده ایم ، در زیر توضیحات مفصل و گام به گام در مورد معماری پروژه ، پوشش زیرساخت ها ، استقرار ، اتوماسیون و بهترین شیوه ها آورده شده است.
1. بررسی اجمالی پروژه
عینی
- ساخت سیستم بدون سرور که:
- بارگذاری رزومه از طریق S3
- محرک الف عملکرد لامبدا در بارگذاری پرونده
- فروشگاه های ابرداده (نام پرونده ، جدول زمانی ، اندازه) در دینامودب
- کاربردهای زیرساخت به عنوان کد (IAC) برای تکرارپذیری
خدمات کلیدی AWS استفاده شده
AWS S3 رزومه های بارگذاری شده فروشگاه ها
AWS Lambda فایلها و به روزرسانی ها را پردازش می کند
من مجوزهای امنیتی
اطلاعات ابر AWS زیرساخت به عنوان کد (IAC)
AWS سام استقرار بدون سرور را ساده می کند
دینامودب File Metatdata (NOSQL)
2. تجزیه مرحله به مرحله
مرحله 1: استقرار زیرساخت ها (منابع اصلی AWS)
هدف: برای جلوگیری از وابستگی های دایره ای ، سطل S3 + جدول DynamoDB را به طور مستقل مستقر کنید.
چه اتفاقی افتاد؟
-
الگوی ابری
(infrastructure.yaml)
تعریف شده:- سطل S3
(UploadBucket)
برای ذخیره رزومه - جدول دینامودب
(FileMetadataTable)
برای ردیابی ابرداده. - نقش های IAM برای دسترسی به حداقل قدرت.
- سطل S3
-
از طریق CLI مستقر شده است:
aws cloudformation deploy \ --template-file infrastructure.yaml \ --stack-name ServerlessResumeUploader-Infra \ --capabilities CAPABILITY_IAM
- شکل ابری منابع ارائه شده به صورت متوالی (IAM → S3 → DynamoDB).
- بازده
(BucketName, TableName)
برای مرجع متقاطع ذخیره شدند.
-
تأیید:
aws cloudformation describe-stacks --stack-name ServerlessResumeUploader-Infra
فاز 2: استقرار عملکرد لامبدا (منطق پردازش)
هدف: عملکرد Lambda را که پردازش بارگذاری و به روزرسانی DynamoDB را انجام می دهد ، مستقر کنید.
چه اتفاقی افتاد؟
-
الگوی AWS SAM
(lambda.yaml)
تعریف شده:-
عملکرد لامبدا
(FileMetadataFunction)
در پایتون - در حال حاضر سیاست ها (تولید خودکار توسط SAM برای دسترسی S3 + DynamoDB).
- متغیرهای محیط (نام جدول DynamoDB ، نام سطل).
-
عملکرد لامبدا
-
مستقر از طریق سام کلی:
sam deploy \ --template-file lambda.yaml \ --stack-name ServerlessResumeUploader-Lambda \ --parameter-overrides BucketName=... TableName=... \ --capabilities CAPABILITY_IAM
- سام به طور خودکار:
- بسته بندی شده کد لامبدا را به .zip.
- بارگذاری شده به S3
- الگوی ابری گسترش یافته تولید شدهبشر
- با استفاده از CloudFormation مستقر شده است.
-
پشت صحنه:
- SAM تعریف لامبدا را ساده کرد (در مقابل ابر ابر خام).
- سیاست های IAM تولید شده توسط خودکار (به JSON دستی نیاز ندارد).
- منابع متقاطع مدیریت شده (سطل + نام جدول).
فاز 3: پیکربندی مجوز و رویداد
هدف: اجازه دهید S3 هنگام بارگذاری پرونده ، لامبدا را تحریک کند.
چه اتفاقی افتاد؟
-
مجوز S3 برای استناد به لامبدا را صادر کرد:
- تضمین کردن فقط سطل S3 می توانید این عملکرد Lambda را صدا کنید.
aws lambda add-permission \
--function-name FileMetadataFunction \
--principal s3.amazonaws.com \
--action lambda:InvokeFunction \
--source-arn arn:aws:s3:::upload-bucket-name
-
اعلان رویداد S3 پیکربندی شده:
aws s3api put-bucket-notification-configuration \ --bucket upload-bucket-name \ --notification-configuration '{ "LambdaFunctionConfigurations": [{ "LambdaFunctionArn": "arn:aws:lambda:...", "Events": ["s3:ObjectCreated:*"] }] }'
فاز 4: تأیید سیستم (آزمایش)
هدف: اطمینان حاصل کنید که گردش کار پایان به پایان.
1. یک فایل آزمایشی بارگذاری کرد:aws s3 cp resume.pdf s3://upload-bucket-name/test-resume.pdf
2. اعدام لامبدا:
– رویداد S3 باعث لامبدا شد.
– لامبدا پرونده را پردازش کرد (ابرداده استخراج شده).
– داده های ذخیره شده در DynamoDB:
```
{
"fileId": "123",
"fileName": "test-resume.pdf",
"uploadTime": "2024-04-09T12:00:00Z",
"fileSize": "250KB"
}
```
3. گزارش های تأیید شده و DynamoDB:
# Check Lambda logs
aws logs tail /aws/lambda/FileMetadataFunction
# Scan DynamoDB
aws dynamodb scan --table-name FileMetadataTable
3. غذای کلیدی فنی
1. نقش CloudFormation
- زیرساخت ها به عنوان کد (IAC): تمام منابع موجود در YAML را تعریف می کند.
- مدیریت وابستگی: اداره IAM → Lambda → S3 → ترتیب DynamoDB.
- منابع متقاطع: خروجی ها/پارامترهای مورد استفاده برای پیوند پشته ها.
- ایمنی Rollback: در صورت عدم موفقیت استقرار لامبدا ، CloudFormation Rolledback.
2. مزایای AWS سام
- استقرار بدون سرور ساده:
-
AWS::Serverless::Function
در مقابلAWS::Lambda::Function
- بسته بندی خودکار
sam package
- سیاست های داخلی IAM (
S3CrudPolicy
باDynamoDBCrudPolicy
).
-
- تست محلی
sam local invoke
- استقرار هدایت شده
sam deploy --guided
3. معماری رویداد محور
- S3 → Lambda → Flow DynamoDB.
- کاملاً خودکار (بدون سرور برای مدیریت).
- مقیاس پذیر (دسته 1 یا 1000 بارگذاری یکپارچه).
4. بهترین شیوه ها دنبال شد
حداقل امتیاز iam حداقل سیاست های سام تولید شده است.
جدایی نگرانی ها پشته های Split Infra (S3/DynamoDB) و برنامه (Lambda).
استقرار idempotent CloudFormation قوام را تضمین می کند.
تست خودکار سام محلی قبل از استقرار فراخوانی می کند.
نسخه زیرساخت الگوهای ذخیره شده در Git.
جدایی به دو پشته معنی دارد زیرا:
جداسازی نگرانی ها – هر پشته یک منطقه عملکردی مجزا را اداره می کند (رزومه بارگذاری در مقابل پردازش ابرداده عمومی S3)
جداسازی منابع – منابع را برای اهداف مختلف از هم جدا نگه می دارد
مقیاس گذاری مستقل – هر پشته می تواند به طور مستقل به روز و مقیاس شود
مرزهای امنیتی – مجوزهای مختلف IAM می تواند برای هر پشته اعمال شود
قابلیت حفظ – پشته های کوچکتر و متمرکز برای مدیریت آسان تر از یک پشته یکپارچه هستند.