در این مقاله یادداشتها و نکاتی که در مورد AWS یاد میگیرم را با شما به اشتراک میگذارم. برای وبلاگم و برخی پروژه هایی که حالت سرگرمی و یادگیری دارند نیاز به یک سرور دارم که بتونم پروژه ها رو روی آن راه اندازی و اجرا کنم و همکاری با هاستینگها و پروایدرهای مختلف رو تست کردم و در نهایت به نتایج خوبی نرسیدم که هزینه های بالایی داشت تا اینکه خواستم با یه تیر ۲ نشون بزنم که هم AWS رو یاد بگیرم و هم از این به بعد پروژه های شخصیم رو روی AWS راه اندازی کنم که کیفیت و اطمینان بالاتری هم دارد.
وبسرویسهای آمازون (Amazon Web Services) مجموعهای از خدمات وب هستند که شرکت آمازون بر روی بستر cloud خود و از طریق اینترنت به عموم عرضه میکند. این سرویسها زیرساختهای فناوری اطلاعات را به صورت سرویسهای انعطافپذیر به مشتریان اجاره میدهد. این سرویسها شامل سرویسهای محاسباتی و رایانشی(EC2)، ذخیرهسازی (S3)، تحویل محتوا، پایگاه داده، تجارت الکترونیک، پرداخت و صدور صورتحساب و موارد دیگری میشود. آمازون ارائه این خدمات به عموم را از ابتدای سال ۲۰۰۶ آغاز نمود. (ویکی پدیا)
اگر بخوام به طور خلاصه بگم این سرویس مدیریت دسترسی های کاربرانی است که قراره به سرویسهای aws دسترسی داشته باشند در اینجا ما یوزرها را ایجاد و دسترسیها را مشخص میکنیم و معمولا بهترین کار اینه که وقتی خودمون اکانتی میسازیم و ثبت نام میکنیم به عنوان root با اکانت کار نکنیم یعنی بعد از ثبت نام یک اکانت با دسترسی Administrator برای مدیریت سرویسها ایجاد کنیم.
وقتی که وارد بخش ورود وبسایت میشویم نوشته شده که میخواهید به عنوان root یا IAM user وارد شوید.
وقتی به صورت root وارد اکانت میشوید از بخش سرویسها میتونید IAM رو انتخاب کنید و یا از بخش search box سرویس IAM رو سرچ و انتخاب کنید. همانطور که در تصویر پایین مشاهده میکنید ما به منوهای user groups, users, policies, Roles, Identity providers, و Account Settings دسترسی داریم که میتوانیم برای userهای موردنظرمان group ایجاد کنیم و آنها را دسته بندی کنیم و یا اینکه policy مشخصی رو تعریف کنیم و به Role یا user موردنظر assign کنیم و همچنین پیشنهاد میکنم برای اکانت root گزینه MFA یعنی Multi-factor authentication را از بخش settings فعال کنید.
نکته: در سایدبار سمت راست شما میتوانیم برای ورود کاربرانی که ایجاد میکنید یک alias با اسم مشخص برای خودتون تعریف کنید، مثلا آدرس ورود برای کاربران اگر به این صورت است asdc32asdcz.signin.aws.amazon.com/console ما با تعریف یک alias به اسم mekaeil آن را به این صورت خواهیم داشت: mekaeil.signin.aws.amazon.com/console
وقتی وارد بخش Policyها میشیم میتوانیم لیستی ار موارد موجود را ببینیم و یا policy جدید ایجاد کنیم. همانطور که در تصویر میبینید در json مورد نظر میبینیم که برای چه بخشهایی این policy تعریف شده است.
۳ راه برای دسترسی به aws وجود دارد که یکی از روشهای آن را در بالا اشاره کردیم که با استفاده از username, password (و MFA، اگر فعال باشید) وارد وبسایت شویم و از سرویسهایی که داریم استفاده کنیم.
روش دوم SDK که مخفف Software Developer Kit است که برای دسترسی از اپلیکشن به AWS استفاده میشود و همچنین برای دسترسی به آن به Access Key نیاز داریم.
حالا که یا ایجاد user, policy و ... آشنا شدیم در مورد AWS CLI که روش سوم دسترسی به AWS است صحبت کنیم، CLI مخفف Command Line Interface است و برای اینکه با استفاده از cli دسترسی داشته باشیم باید Access key داشته باشیم و برای ایجاد آن به صورت زیر اقدام میکنیم.
نکته۱: برای ایجاد Access Key از محیط مدیریت AWS استفاده میکنیم و نکته ای که بسیار مهم است اینه که به هیچ عنوان آن را با دیگران به اشتراک نگذارید چون با استفاده از آن به سرویسهای شما دسترسی خواهند داشت.
نکته۲: از طریق لینک Installing or updating the latest version of the AWS CLI برای سیستم عامل خودتون AWS CLI را نصب کنید، در واقع با استفاده از آن شما میتوانید از طریق command line به AWS و سرویسهایی که دارید دسترسی داشته باشید. بعد از نصب AWS CLI در محیط ترمینال خود (برای مک من از iTerm استفاده میکنم) دستور asw --version را بزنید ورژنی که نصب کردید را باید به شما نشان دهد.
نکته۳: برای ایجاد ACCESS KEY از اکانت root استفاده نکنید و از اکانتی که برای Administrator ایجاد کردید استفاده کنید.
با توجه به اینکه هر کاربر Access key مختص خود را دارد وارد بخش کاربران میشویم و روی اسم کاربری که میخواهیم access key ایجاد کنیم کلیک میکنیم و روی تب Security Credentials کلیک میکنیم و مطابق تصویر زیر با کلیک بر روی create access key آن را ایجاد میکنیم.
بعد از ایجاد، شما یک Access key ID , Access key security ID دارید و برای اینکه روی محیط ترمینال خود ست کنید باید روی ترمینال خود دستور (aws configure) رو وارد میکنید و مشخصات درخواستی را وارد میکنید. برای اینکه مطمئن شوید دسترسی دارید و به درستی کار میکند دستور aws iam list-users را وارد کنید و در خروجی لیست کاربرانی که در سرویس IAM وجود دارد را مشاهده میکنید.
همچنین ما میتوانیم از سرویس CloudShell هم استفاده کنیم ولی درحال حاضر در همه regionها در دسترس نیست، البته اگر با AWS CLI راحت هستید نیازی به استفاده از Cloud Shell نیست، در واقع CloudShell یک ترمینال در بستر cloud aws است. با استفاده ازCloudShell ما به امکاناتی که aws فراهم کرده است دسترسی داریم همچون آپلود و دانلود فایل و تنظیم فونت و ...
Role یک هویت IAM است که می توانید در حساب خود ایجاد کنید که دارای سطح دسترسیهای خاص است. Role شباهت هایی به User دارد، هر دو هویت AWS با خطمشیهای مجوز هستند که تعیین میکنند هویت موردنظر در AWS چه کاری میتواند انجام دهد و چه کاری را نمیتواند انجام دهد. با این حال، به جای اینکه به طور منحصر به فرد با یک کاربر مرتبط باشد، هر کسی یا سرویسی که به آن نیاز دارد می تواند Role را داشته باشد. میتوانید از Roleها برای واگذاری دسترسی به کاربران، برنامهها یا سرویسهایی استفاده کنید که معمولاً به منابع AWS شما دسترسی ندارند. مثلا یک سرویس خارجی میخواهد از منابع شما استفاده کند و ... همانطور که در تصویر زیر میبینید ما بخشی که میخواهیم براش Role ایجاد کنیم به صورت زیر است که در مرحله دوم پرمیشن و در نهایت در مرحله آخر نام Role و policyها را مشاهده و ایجاد میکنیم.
در مرحله دوم سطح دسترسیها را مشخص میکنیم:
و در نهایت نام گذاری Role و policyها را مرور میکنیم:
یکی دیگر از امکانات خوبی که سرویس IAM در اختیار ما قرار میدهد گزارشگیری آن در دو سطح Account level و User level است به این معنا در سطح Account Level ما وارد منوی Credential Report میشویم و یک CSV Report را دانلود میکنیم و آخرین اطلاعات از کاربرانی که در سرویس داریم را مشاهده میکنیم مثلا آخرین باری که وارد اکانت شده اند و زمانی که رمز عبور خود را تغییر داده اند و یا اینکه Access key دارند و...
در سطح User Level وارد بخش کاربران میشویم و وقتی روی کاربر موردنظر کلیک کنیم در تب Access Advisor میتوانیم آخرین فعالیتهای کاربر از استفاده از سرویسها و ... را مشاهده کنیم. در این بخش میتوانیم ببینم که اگر کاربر از سرویسهایی اصلا استفاده نمیکند میتوانیم سطح دسترسی کاربر موردنظر را بازبینی کنیم و مدیریت بهتری رو سطح دسترسی کاربران داشته باشیم.
در این مقاله هدف اصلی بیشتر آشنایی اولیه با محیط AWS بود، در نهایت وقتی از سرویسی استفاده میکنید حتما بخش Bills را برای مصارفی که داشتید بررسی کنید و هزینه هایی که دارید را از این طریق میتوانید با جزئیات مشاهده کنید
همچنین یکی دیگر از ویژگیهای بسیار خوب، استفاده از بخش budget است که میتوانیم ماکزیمم سقف پولی که میخواهیم خرج کنیم را مشخص کنیم و برای خودمان نوتیفیکیشن تعریف کنیم که اگر ۸۰ درصد مبلغ مصرف شد بهمون ایمیلی ارسال شود و ...