ساخت و مدیریت برنامه های کاربردی در فضای ابری می تواند یک کار دلهره آور باشد. این امر به ویژه در مورد مدیریت محیطهای مختلف، مقیاسبندی و بهروزرسانیها صادق است.
اما سرویسی در AWS وجود دارد که می تواند این کار را ساده کند. AWS Elastic Beanstalk اینجاست تا زندگی شما را آسانتر کند. این یک پلتفرم با کاربری آسان برای استقرار، مدیریت و مقیاسبندی برنامههای شما در AWS Cloud فراهم میکند.
در این آموزش، ما به اصول اولیه Elastic Beanstalk می پردازیم و سپس شما را در فرآیند استقرار یک برنامه NodeJS متصل به پایگاه داده RDS راهنمایی می کنیم. بیا شروع کنیم!
Elastic Beanstalk چیست؟
AWS Elastic Beanstalk یک سرویس کاملاً مدیریت شده است که به شما کمک می کند تا برنامه های کاربردی را در AWS استقرار، مدیریت و مقیاس بندی کنید. از تامین منابع مورد نیاز مانند نمونه های EC2، پایگاه داده های RDS و بار متعادل کننده مراقبت می کند.
Elastic Beanstalk همچنین وظایف استقرار، نظارت و نگهداری برنامه را انجام می دهد تا بتوانید روی نوشتن کد و ارائه ویژگی ها تمرکز کنید.
Elastic Beanstalk از CloudFormation برای تهیه منابع استفاده می کند. خوبی این است که شما نیازی به نوشتن قالب های CloudFormation ندارید. Elastic Beanstalk به طور خودکار از آن مراقبت می کند.
اکنون که درک اولیه ای از Elastic Beanstalk داریم، بیایید به استقرار برنامه NodeJS خود با اتصال RDS بپردازیم.
نحوه تهیه کد منبع NodeJS
ما نمی توانیم برنامه خود را مستقیماً در Elastic Beanstalk (مشابه استقرار در EC2) مستقر کنیم. قبل از استقرار باید چند مرحله را دنبال کنیم. ساعت ها طول کشید تا من متوجه این موضوع شوم، اما به شما کمک می کنم تا آن را در ۵ دقیقه اجرا کنید.
در این مقاله، ما این برنامه Node.js را مستقر خواهیم کرد. اما برای استقرار کد خود نیازی به مخزن نداریم، در عوض به کد منبع خود نیاز داریم. فایل زیپ مخزن فوق را می توانید از اینجا دانلود کنید.
اگر می خواهید برنامه خود را راه اندازی کنید، مراحل را در اینجا اضافه کنید. اما اگر میخواهید فقط کد بالا را اجرا کنید، میتوانید به بخش بعدی ( نحوه ایجاد برنامه Elastic Beanstalk ) بروید.
نحوه استقرار اپلیکیشن خود
ابتدا مطمئن شوید که فایل package.json
شما دستور start
را دارد و این دستور start
باید برای اجرای برنامه شما پیکربندی شود. Beanstalk به صورت پیش فرض npm start
اجرا می کند و اگر نتواند آن را پیدا کند خطا می دهد.

یک چیز بسیار مهم در مورد پیکربندی متغیرهای محیطی وجود دارد. AWS از متغیرهای محیطی از پیش تعریف شده برای اتصالات RDS پیروی می کند. مطمئن شوید که از نامگذاری درست استفاده کرده اید. برای اطلاعات بیشتر می توانید این مقاله AWS را بخوانید.
یک مثال سریع برای شما اگر این نکته را متوجه نشدید. برای پیکربندی نام میزبان برای RDS، باید از متغیر محیطی RDS_HOSTNAME
استفاده کنید. اگر از نام متغیر دیگری (به عنوان مثال DB_HOSTNAME
) استفاده کرده باشید، برنامه شما نمیتواند متصل شود.
می توانید متغیرهای محیطی سفارشی را در کنسول AWS Elastic Beanstalk بر اساس نیاز خود تعریف کنید.
در اینجا نحوه پیکربندی اتصال DB شما باید به نظر برسد:

Elastic Beanstalk (EBS) به طور پیشفرض روی پورت ۸۰۸۰ اجرا میشود. پس باید برنامهمان را طوری پیکربندی کنیم که روی پورت ۸۰۸۰ اجرا شود. گفت ن شماره پورت در متغیرهای محیطی و پیکربندی آن در کنسول EBS همیشه بهترین روش است.

برای اینکه Elastic Beanstalk متغیرهای محیطی ما را بخواند، باید فایلی به نام .ebextensions
با کد زیر در فهرست اصلی پروژه اضافه کنیم:
commands: setvars: command: /opt/elasticbeanstalk/bin/get-config environment | jq -r 'to_entries | .[] | "export \(.key)=\"\(.value)\""' > /etc/profile.d/sh.local packages: yum: jq: []
با اجرای npm install
وابستگی ها را نصب کنید و کد خود را به همراه node_modules
با اجرای دستور زیر زیپ کنید:
zip [filename].zip -r ./
به یاد داشته باشید که فایل زیپ شده باید شامل تمام فایل ها و زیر شاخه های موجود در پوشه ریشه باشد و نباید داخل هیچ پوشه دیگری باشد. این به این دلیل است که Elastic Beanstalk فایل package.json
را در پوشه ریشه تحلیل می کند و اگر نتواند آن را پیدا کند، خطا می دهد.


اکنون برنامه ما آماده است، پس بیایید برنامه Elastic Beanstalk را ایجاد کنیم.
نحوه ایجاد اپلیکیشن Elastic Beanstalk
مرحله ۱: محیط خود را پیکربندی کنید
ابتدا به کنسول مدیریت AWS بروید و Elastic Beanstalk را از منوی Services انتخاب کنید. بر روی دکمه "ایجاد برنامه" کلیک کنید.
سپس محیط وب سرور را انتخاب کرده و نامی برای برنامه خود در نظر بگیرید.


Managed platform
در «نوع پلتفرم» و Node.js
در «پلتفرم» انتخاب کنید و بقیه را به همان شکلی که هست رها کنید.
سپس در قسمت «کد برنامه» گزینه Upload your code
انتخاب کرده و فایل zip
را آپلود کنید.

سپس برچسب نسخه را روی ۱
تنظیم کنید و در قسمت "Presets" گزینه Single instance
را انتخاب کنید و روی Next کلیک کنید.
توجه: High availability
برای محیط تولید ترجیح دهید.

مرحله ۲: دسترسی سرویس را پیکربندی کنید
در این بخش باید نقش های IAM را پیکربندی کنیم. ما باید دو نقش IAM ایجاد کنیم، یکی برای Elastic Beanstalk و دیگری برای EC2
برای نقش سرویس، Create and use new service role
انتخاب کنید. به طور خودکار مجوزهای لازم را ایجاد و ارائه می کند
اگر می خواهید از طریق ترمینال به نمونه EC2 خود وارد شوید، یک جفت کلید-مقدار ایجاد کنید و آن را انتخاب کنید. اگر نمی خواهید وارد EC2 شوید، این مرحله را نادیده بگیرید.
یک نقش IAM با مجوزهای زیر ایجاد کنید و نقش را به "نمونه نمایه EC2" اضافه کنید و بعد ادامه دهید.
AWSElasticBeanstalkWebTier
AWSElasticBeanstalkWorkerTier
AWSElasticBeanstalkMulticontainerDocker
مرحله ۳: شبکه، پایگاه داده و برچسب ها را تنظیم کنید
اکنون کلید Enable database
را روشن کرده و mysql
Engine را انتخاب کنید. فیلدهای دیگر را بر اساس نیاز خود پر کنید.

هنگام انتخاب "خط مشی حذف پایگاه داده" بسیار مراقب باشید. همانطور که من در حال ایجاد برنامه نمونه هستم، گزینه Delete
را انتخاب کردم که با حذف برنامه Elastic Beanstalk پایگاه داده را حذف می کند.
اگر روی یک پایگاه داده تولید کار می کنید، انتخاب گزینه Create Snapshot
یا Retain
همیشه بهترین روش است.

مرحله ۴: ترافیک نمونه و مقیاس بندی را پیکربندی کنید
شما نیازی به تغییر چیزی در اینجا ندارید، مگر اینکه به آن نیاز خاصی داشته باشید. اگر در حال ساختن این نمونه برنامه هستید، فیلدها را با مقادیر پیش فرض رها کنید. به طور پیش فرض Elastic Beanstalk یک ماشین لینوکس آمازون ایجاد می کند.

مرحله ۵: پیکربندی به روز رسانی، نظارت و ورود به سیستم
در «گزارشدهی سلامت» Basic
انتخاب کنید و علامت فعالسازی بهروزرسانیهای مدیریتشده را بردارید.

متغیرهای محیط خود را اضافه کنید و روی Next کلیک کنید.

در نهایت، تمام تنظیمات خود را تحلیل کرده و به مراحل بعدی ادامه دهید. تهیه RDS زمان می برد، پس بنشینید و قهوه خود را بنوشید

شاید تا به حال متوجه شده باشید که چرا من برای اولین بار ساعت ها را صرف این فرآیند کردم 😂. هر بار که اشتباه می کردم باید حدود ۱۰ تا ۱۵ دقیقه صبر می کردم تا نتیجه را تحلیل کنم و اگر مشکلی پیش آمد تمام مراحل بالا را دوباره انجام دهم. Elastic Beanstalk قطعا صبر شما را آزمایش خواهد کرد، پس آرام باشید و آرام باشید.
هنگامی که همه چیز انجام شد، باید بتوانید ببینید که سلامتی سبز می شود 🎉 و یک URL دامنه تولید می شود 🥳

اگر از مخزن نمونه من استفاده کرده باشید، صفحه زیر را در باز کردن URL مشاهده خواهید کرد.

وقتی domain-url/hikes
را می زنید، می توانید صفحه زیر را ببینید. مقداری داده را تایپ کنید و دکمه Record Hike
را بزنید، داده ها در جدول hikes
در RDS MySQL ذخیره می شوند.

نتیجه
در این مقاله، ما با موفقیت یک برنامه NodeJS را با اتصال RDS با استفاده از AWS Elastic Beanstalk اجرا کردیم. این سرویس قدرتمند فرآیند استقرار و مدیریت را ساده می کند و به شما امکان می دهد بر روی توسعه و مقیاس بندی برنامه های خود تمرکز کنید.
اگر در هر نقطه ای گیر کردید، می توانید سوالات خود را در ایمیل من به من ارسال کنید. من خوشحال خواهم شد که به شما کمک کنم.
امیدواریم از خواندن این مقاله لذت برده باشید!
اگر می خواهید درباره AWS بیشتر بدانید، در خبرنامه من ( https://5minslearn.gogosoon.com/ ) مشترک شوید و من را در رسانه های اجتماعی دنبال کنید.