برنامه نویسی

Terraform، Lambda، و Event Bridge: سه گانه عالی برای بهینه سازی هزینه AWS

اگر در حال خواندن این مطلب هستید، شاید هنوز دیر نشده است. با این حال، این احتمال وجود دارد که شما ترس از دریافت صورتحساب غیرمنتظره بزرگ ابر را تجربه کرده باشید. از طرف دیگر، ممکن است شما با AWS تازه کار باشید، و این مقاله می تواند به شما کمک کند از انجام اشتباه مشابه جلوگیری کنید. در صنعت ما، بسیار آسان است که قربانی اشتباهات رایج شوید، مانند اینکه یک نمونه EC2 برای مدت طولانی کار کند، که منجر به هزینه های پرهزینه می شود که می تواند به سرعت جمع شود. به همین دلیل است که من این مقاله را نوشتم تا به شما در جلوگیری از این سردردهای مالی و استفاده از زیرساخت های کارآمدتر و مقرون به صرفه تر کمک کنم.

آیا تا به حال میم دو مرد را در حال صحبت دیده اید؟ یکی لباس قشنگ پوشیده و از دومی که شبیه آدم بی خانمان است می پرسد: “چطور در نهایت بی خانمان شدی؟ قمار یا مواد مخدر؟” مرد دوم پاسخ می دهد، “من یک نمونه EC2 را روشن گذاشتم.” متأسفانه، برای ما در صنعت فناوری، ما به خوبی واقعیت نه چندان خنده دار پشت این شوخی را می دانیم. یکی از بزرگ‌ترین مقصران این است که به‌طور تصادفی یک نمونه EC2 راه‌اندازی و راه‌اندازی می‌شود که در نتیجه صورت‌حساب‌هایی بسیار بالا را به همراه دارد که می‌تواند به سرعت بودجه را تخلیه کند.

نگران نباش من پشتت را گرفته ام در این مقاله راه حلی را کشف خواهید کرد که می تواند به شما در جلوگیری از این کابوس مالی کمک کند. ما مزایای زیرساخت کاملاً بدون سرور را با استفاده از AWS Lambda و AWS Event Bridge بررسی خواهیم کرد. پیاده سازی این ترکیب قدرتمند نه تنها امکانات شگفت انگیزی را ارائه می دهد، بلکه این پتانسیل را نیز دارد که هزاران دلار در هزینه های غیر ضروری شما و شرکتتان صرفه جویی کند.

صرفه جویی در پول

قبل از اینکه به جزئیات بپردازیم، اگر با نمونه های AWS یا EC2 آشنایی ندارید، توصیه می کنم مقاله قبلی خود را بررسی کنید که در آن توضیح دادم EC2 چیست و چگونه آنها را با استفاده از Terraform استقرار دهید. برای تکمیل این مقاله به شناسه های نمونه نیاز دارید. در اینجا پیوندی برای بازگشت مقاله وجود دارد که برای ادامه آماده باشید.

اکنون که برگشته اید، این مقاله فرض می کند که دانش پایه ای در مورد EC2، AWS Lambda و Event Bridge دارید. بیایید به بخش سرگرم کننده برسیم، اجازه دهید توضیح دهم که این استقرار چگونه خواهد بود. ما از Terraform برای مدیریت زیرساخت خود به عنوان کد استفاده خواهیم کرد. Terraform یک ابزار منبع باز است که به شما امکان می دهد زیرساخت خود را در کد تعریف کنید و نگهداری، نسخه و اشتراک گذاری آن را آسان تر می کند. با استفاده از Terraform، ما به راحتی می‌توانیم منابع AWS خود، از جمله توابع EC2، Event Bridge و Lambda را ایجاد و مدیریت کنیم.

معماری ما از دو تابع Lambda تشکیل شده است – یکی برای شروع نمونه EC2 و دیگری برای متوقف کردن آن. این توابع توسط یک قانون پل رویداد در یک برنامه زمانبندی راه‌اندازی می‌شوند و به ما امکان می‌دهند شروع و توقف نمونه EC2 خود را در یک زمان خاص هر روز به طور خودکار انجام دهیم.

کد لامبدا قبلی:

data "template_file" "ec2_start_large" {
  count = length(local.source_files)

  template = file(element(local.source_files, count.index))
}

data "archive_file" "ec2_start_large_events" {
  type        = "zip"
  output_path = "start.zip"

  source {
    content  = data.template_file.ec2_start_large.0.rendered
    filename = basename(local.source_files[0])
  }


}

resource "aws_lambda_function" "ec2_start_large_lambda" {
  description = "EC2 large EC2"
  function_name    = "start-ec2-large"
  handler          = "start.handler"
  filename         = "${data.archive_file.ec2_start_large_events.output_path}"
  source_code_hash = "${data.archive_file.ec2_start_large_events.output_base64sha256}"
  role             =  aws_iam_role.lambda_role.arn
  memory_size      = 128
  runtime          = "python3.9"
  timeout          = 3
  publish  = true
  depends_on = [
    aws_iam_role_policy_attachment.role_policy_login_attch
]

  tracing_config {
    mode = "PassThrough"
  }

   tags = {
    Project = "large_ec2"
  }
}

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

کد EventBridge قبلی:

resource "aws_cloudwatch_event_rule" "start_event_rule" {
    name = "start-large-ec2"
    schedule_expression = "cron(0 12 * * ? *)"

    tags = {
    Project = "large_ec2"
  }
}

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

با استفاده از توابع Lambda، می‌توانیم بدون نگرانی در مورد تأمین یا مدیریت سرورها، کد را اجرا کنیم و هزینه‌هایمان را بیشتر کاهش دهیم. علاوه بر این، استفاده از EventBridge به ما این امکان را می دهد که رویدادهای خود را به راحتی مدیریت کنیم و گردش کار خود را خودکار کنیم، کارایی خود را بهبود بخشیده و خطر خطای انسانی را کاهش می دهیم.

فکر می کنم وقت استراحت است. پاهایمان را دراز کنیم یا قهوه بخوریم. در بخش بعدی، پروژه خود را پوشش می‌دهیم و یک مخزن GitHub مفصل ارائه می‌کنیم که شامل راهنمای گام به گام در مورد نحوه تکمیل و تسلط بر این زیرساخت بدون سرور است. در ضمن، اگر کسی را می شناسید که می تواند از این مقاله بهره مند شود، لطفاً آن را به اشتراک بگذارید یا نظر خود را در زیر با نظرات خود بیان کنید.

به زودی شما را می بینیم و به یاد داشته باشید که اگر دیگر از آنها استفاده نمی کنید، موارد EC2 خود را خاتمه دهید😉

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا