Course-এর সূচি

1.4

Free Tier, Budget আর খরচের alert

কিছু বানানোর আগেই budget সেট করো, আর জেনে রাখো কোন জিনিস বন্ধ করার পরও টাকা কাটতেই থাকে।

14 মিনিট পড়া + Animation

টিপস: ডটেড-আন্ডারলাইন করা যেকোনো শব্দে ট্যাপ বা Hover করলে তার অর্থ দেখবে।

এই লেসন শেষে তুমি যা পারবে

  • এখনকার Free Tier কীভাবে চলে বুঝিয়ে বলতে পারবে: নতুন account-এর free plan আর paid plan, credit, always-free সুবিধা, আর পুরোনো account-এর ১২ মাসের Free Tier।
  • AWS Budgets-এ actual আর forecasted alert সহ একটা budget বানাতে পারবে, সেটা email আর SNS topic-এ পাঠাতে পারবে, আর জানবে এর data কতটা দেরিতে আসতে পারে।
  • Budget action দিয়ে ক্ষতি নিজে থেকেই আটকাতে পারবে, আর বোঝাতে পারবে কেন paid account-এ AWS-এর কোনো feature-ই খরচের শক্ত সীমা (hard cap) না।
  • খরচ নিয়ে প্রতিটা প্রশ্নের জন্য ঠিক tool বেছে নিতে পারবে: Budgets, Cost Explorer, Cost Anomaly Detection, CloudWatch billing alarm, Cost and Usage Report, cost allocation tag।
  • Instance stop বা terminate করার পরও কী কী জিনিসের বিল চলতে থাকে বলতে পারবে, আর এমন ক্রমে একটা environment পরিষ্কার করতে পারবে যাতে কোনো Region-এ কিছুই পড়ে না থাকে।
  • একদম নতুন একটা account প্রথম দশ মিনিটেই নিরাপদ করে ফেলতে পারবে।

#বিলের কথা সবার আগে কেন

AWS-এ কোনো কিছু কেনার জন্য কাগজে সই করতে হয় না। তুমি Launch-এ click করলে, একটা মিটার চলতে শুরু করল, আর মাস শেষে AWS সব মিটার যোগ করে বিল পাঠাল। Pay-as-you-go-এর মজাটাই এখানে: আগে টাকা দিতে হয় না, অপেক্ষা করতে হয় না, কোনো সীমাও নেই। ঝুঁকিটাও ঠিক এখানেই। Paid account-এ কেউ নিজে থেকে খরচ থামায় না:

  • test করার জন্য বানিয়ে ভুলে যাওয়া একটা NAT Gateway, কেউ ব্যবহার করুক বা না করুক, দিনে প্রায় $1 খেয়ে ফেলে;
  • stop করা instance-ও তার disk আর Elastic IP-র টাকা দিতে থাকে;
  • ভুল করে public repository-তে চলে যাওয়া একটা access key কয়েক মিনিটের মধ্যেই bot খুঁজে পায়, আর এমন সব Region-এ দামি instance চালু করে দেয় যেগুলো তুমি কখনো খোলোই না;
  • অন্য কোনো Region-এ পড়ে থাকা resource console-এ চোখেই পড়ে না, অথচ সারা মাস বিল বাড়ায়।

তাই কিছু বানানোর আগেই এমন কিছু tool ঠিক করে নাও, যেগুলো জানাবে তুমি কত খরচ করছ, সীমা ছাড়ানোর আগেই সাবধান করবে, আর চাইলে তোমার হয়ে ব্যবস্থাও নেবে। এই লেসন সেটা নিয়েই। কাজটা দশ মিনিটের, আর এই কোর্সের বাকি সব lab ধরে নেয় যে তুমি এটা করে রেখেছ।

#এখনকার Free Tier

AWS Free Tier বদলেছে ১৫ জুলাই ২০২৫-এ। তুমি কী পাবে, সেটা নির্ভর করে account কবে খোলা হয়েছে তার ওপর।

#নতুন account: free plan না paid plan

১৫ জুলাই ২০২৫ থেকে নতুন প্রতিটা account-কে sign-up-এর সময়ই একটা plan বেছে নিতে হয়:

Free planPaid plan
Creditsign-up-এ $100, আর কিছু কাজ করলে আরও $100 পর্যন্তএকই
Serviceবাছাই করা কিছু service; যেগুলো দিয়ে খুব দ্রুত credit শেষ হতে পারে (Savings Plan, Reserved Instance, Marketplace-এর কিছু offer) সেগুলো নেইসবকিছু
টাকা কাটবে কি?না, কখনোই নাহ্যাঁ: credit-এর বাইরের usage স্বাভাবিক দামে বিল হয়
কবে শেষ৬ মাস পর, অথবা তার আগেই credit শেষ হলে, যেটা আগে ঘটেশেষ হয় না; credit ব্যবহার করা যায় sign-up থেকে ১২ মাস পর্যন্ত
তারপর কী হয়Account বন্ধ হয়ে যায়। AWS তোমার content ৯০ দিন রেখে দেয়; এর মধ্যে upgrade করলে সব ফিরে পাবেকিছুই বদলায় না: যেমন ব্যবহার, তেমন বিল
Always-free সুবিধাআছেআছে, সঙ্গে কিছু service-এর অল্প দিনের trial

বাড়তি $100 আসে শুরুর পাঁচটা কাজের প্রতিটার জন্য $20 করে, যেমন একটা EC2 instance চালু করা, একটা Lambda function বানানো, একটা RDS database বানানো, Amazon Bedrock একটু চালিয়ে দেখা, আর AWS Budgets-এ একটা cost budget বানানো। মানে এই লেসনে যে budget বানাবে, সেটা থেকেই তুমি $20 পেয়ে যাচ্ছ।

Free plan-এর account AWS Organizations-এ যোগ দিলে, AWS Control Tower landing zone বানালে, বা কিছু নির্দিষ্ট চুক্তি করলে, সেটা নিজে থেকেই paid plan হয়ে যায়। কোম্পানির organization-এ তোমার free account-কে কেউ invite করলে আগে budget বানিয়ে নাও: invitation গ্রহণ করার মুহূর্ত থেকেই বাড়তি খরচ হওয়া সম্ভব।

#Always free

৩০টার বেশি service-এ প্রতি মাসে কিছু পরিমাণ ব্যবহার একদম ফ্রি, আর এই সুবিধার কোনো মেয়াদ নেই, দুই plan-এই (যেমন প্রতি মাসে নির্দিষ্ট সংখ্যক Lambda request, কিছুটা DynamoDB storage)। এই সীমার ভেতরে কোনো খরচ নেই; সীমা ছাড়ালে টাকা কাটে credit থেকে, আর paid plan-এ credit শেষ হলে তোমার card থেকে। আসল সীমা কত, সেটা সবসময় Free Tier page-এ দেখে নিও: সীমাগুলো মাসিক, account প্রতি, আর মাঝে মাঝে বদলায়।

#পুরোনো account: আগের Free Tier

১৫ জুলাই ২০২৫-এর আগে খোলা account আগের নিয়মেই চলে: sign-up থেকে ১২ মাস কিছু জিনিস ফ্রি (যেমন মাসে ৭৫০ ঘণ্টা একটা micro instance, ৩০ GB EBS storage, ৫ GB S3 storage), সঙ্গে always-free আর trial। এখানে দুইটা ফাঁদে প্রায় সবাই পড়ে:

  • ৭৫০ ঘণ্টা মানে একটা instance, পুরো মাস। এক মাসে মোটামুটি ৭৩০ ঘণ্টা, তাই দুইটা micro instance পুরো মাস চালালে লাগে প্রায় ১,৪৬০ ঘণ্টা। বাড়তি ৭১০ ঘণ্টার বিল হবে, প্রথম মাসেই।
  • ১২ মাস শেষ হয় চুপচাপ। এক বছর পূর্ণ হলে account খোলাই থাকে, আর একই resource-গুলোর এখন পুরো দামে বিল শুরু হয়। তোমার হয়ে কেউ কিছু বন্ধ করে দেয় না।

Free Tier-এ একটা নতুন account-এর জীবন

১৫ জুলাই ২০২৫ থেকে যে account খোলা হয়েছে, সেগুলো sign-up-এর সময়ই free plan বা paid plan বেছে নেয়। এর আগের account-গুলো পুরোনো ১২ মাসের Free Tier-এই থাকে। প্রতিটা পথ শেষ পর্যন্ত দেখো।

পরিস্থিতি

তুমি
AWS accountfree plan
CreditUSD
বিলতোমার card
sign up, free plan বাছাই
ধাপ 1 / 6
1

তুমি sign up করে free plan বেছে নিলে। পরিচয় যাচাইয়ের জন্য card লাগে ঠিকই, কিন্তু এই plan-এ তোমার কাছ থেকে টাকা কাটা হয় না।

#বিলটা কোথায় দেখবে

টাকা-পয়সার সবকিছু থাকে Billing and Cost Management console-এ:

  • Home: এই মাসে এ পর্যন্ত খরচ, মাস শেষের forecast, কোন service-এ সবচেয়ে বেশি খরচ, আর বাকি tool-গুলোর link।
  • Bills: যেকোনো মাসের খরচ service আর Region অনুযায়ী ভাগ করা, সঙ্গে invoice। কোনো চার্জের মানে বুঝতে না পারলে প্রথমে এখানেই তাকাও।
  • Free Tier: এই মাসে প্রতিটা ফ্রি সুবিধার কতটুকু খরচ হয়ে গেছে, আর মাস শেষে কোথায় দাঁড়াবে তার forecast। Free plan-এ এখানে বাকি credit আর বাকি দিনও দেখায়।
  • Credits, Payments, Billing preferences (alert-এর setting, invoice কীভাবে আসবে, default মুদ্রা)।

#AWS Budgets: প্রথম পাহারাদার

Budget হলো একটা নির্দিষ্ট সময়ে তুমি কত খরচ (বা কতটা ব্যবহার) করবে বলে আশা করছ, সেই অঙ্ক, সঙ্গে কিছু alert, যেগুলো আসল বা আনুমানিক অঙ্ক তোমার বেছে দেওয়া threshold পার হলেই খবর দেয়। “আগেই জানাও” ধরনের কাজের tool এটাই।

#কী কী নিয়ে budget বানানো যায়

Budget typeকী মাপেকখন alert
Cost budgetকত ডলার খরচ হলো; সব service মিলিয়ে, বা service, Region, account, tag… ধরে বাছাই করেখরচ threshold ছাড়ালে (actual বা forecast)
Usage budgetব্যবহারের পরিমাণ: instance-এর ঘণ্টা, কত GB storage, কত GB data গেলব্যবহার threshold ছাড়ালে
RI utilization / coverageকেনা Reserved Instance-এর কতটুকু আসলে ব্যবহার হচ্ছে, আর তোমার usage-এর কতটুকু সেগুলো ঢাকছেলক্ষ্যের নিচে নামলে (commitment নষ্ট হচ্ছে বা কম পড়ছে)
Savings Plans utilization / coverageSavings Plan-এর জন্য একই হিসাবলক্ষ্যের নিচে নামলে

প্রতিটা budget-এর একটা period থাকে: দৈনিক, মাসিক, তিন মাস, বছর, অথবা নিজের বেছে নেওয়া তারিখ থেকে তারিখ (এটা নিজে নিজে নবায়ন হয় না, তাই মনে রাখার ব্যবস্থা করো)। অঙ্কটা হতে পারে fixed (একই), planned (প্রতি মাসে আলাদা) বা auto-adjusting (সাম্প্রতিক খরচ দেখে নিজেই ঠিক করে)। Cost budget-এ credit, refund, tax আর upfront fee ধরবে কি না, সেটা বেছে দেওয়া যায়: credit দিয়ে বিল মেটানো চলাকালে resource-গুলোর আসল খরচ দেখতে চাইলে credit বাদ দাও।

প্রথম budget-এর জন্য দুইটা template-ই প্রায় সব কাজ করে দেয়:

  • Zero spend budget: প্রথম যেদিন খরচ $0.01 ছাড়াবে, সেদিনই alert। যে learning account-এ কোনো খরচই হওয়ার কথা না, তার জন্য একদম ঠিক।
  • Monthly cost budget: মাসে একটা নির্দিষ্ট অঙ্ক, আসল খরচের ৮৫% আর ১০০%-এ alert, আর forecast-এর ১০০%-এ alert।

#Actual alert আর forecasted alert

প্রতিটা budget-এ কয়েকটা alert রাখা যায়। প্রতিটা alert-এর থাকে:

  • একটা ধরন: actual (এই period-এ এ পর্যন্ত আসল খরচ) বা forecasted (AWS-এর হিসাবে period শেষে খরচ কোথায় দাঁড়াবে);
  • একটা threshold: budget-এর শতকরা কত, অথবা নির্দিষ্ট একটা অঙ্ক;
  • কাকে জানাবে: প্রতিটা alert-এ সর্বোচ্চ ১০টা email ঠিকানা আর একটা SNS topic।

এই অংশের আসল কথা হলো দুই ধরনের পার্থক্য:

  • Actual alert আসতে পারে শুধু টাকা খরচ হয়ে যাওয়ার পরে। প্রতিটা budget period-এ একবারই আসে।
  • Forecasted alert আসে যখন period শেষের আনুমানিক অঙ্ক threshold পার হয়, অনেক সময় আসল টাকা খরচ হওয়ার কয়েক দিন আগেই। একই period-এ forecast নিচে নেমে আবার উঠলে এটা আবারও আসতে পারে।
  • Forecast বানাতে AWS-এর লাগে মোটামুটি পাঁচ সপ্তাহের usage-এর ইতিহাস। একদম নতুন account-এ forecasted alert তাই এখনো আসতেই পারবে না; সেজন্য কম threshold-এ কয়েকটা actual alert-ও রাখো (যেমন ৫০% আর ৮০%)।

$10-এর budget-এর সামনে এক মাসের খরচ

নীল দাগ: এই মাসে এ পর্যন্ত যত খরচ হয়েছে। ড্যাশ দাগ: এই গতিতে চললে ৩০ তারিখে খরচ কোথায় গিয়ে ঠেকবে। একটা scenario বেছে নাও, তারপর দেখো কোন alert কখন আসে।

পরিস্থিতি

একজন শিক্ষার্থী, মাসে $10-এর budget, ১০০%-এ forecast alert আর ৮০%-এ actual alert।

দিন

1

এই মাসে খরচ

$0.18

মাস শেষের forecast

$5.40

Budget

$10.00

$0$3$6$9$12151015202530forecast > ১০০%actual > ৮০%Budget $10.00

এ পর্যন্ত আসা alert

কোনো alert আসেনি।

ধাপ 1 / 4
1

মাসের ১ তারিখ। ছোট একটা instance আর অল্প storage মিলে দিনে খরচ প্রায় ১৮ সেন্ট। নীল দাগটা হলো এই মাসে এ পর্যন্ত যত খরচ হয়েছে; ড্যাশ দেওয়া দাগটা দেখায়, এই গতিতে চললে ৩০ তারিখে গিয়ে খরচ কোথায় দাঁড়াবে।

#Alert কোথায় যায়

Email সরাসরি যায়। আর SNS topic খুলে দেয় বাকি সব পথ: SMS, আরও কিছু email list, কিছু একটা করে ফেলার মতো একটা Lambda function, অথবা Amazon Q Developer in chat applications দিয়ে (আগের নাম AWS Chatbot) Slack বা Microsoft Teams-এর কোনো channel। SNS ঠিকমতো কাজ করার জন্য topic-এর access policy-তে budgets.amazonaws.com-কে publish করার অনুমতি দিতে হবে, আর প্রতিটা email subscription SNS-এর পাঠানো link দিয়ে confirm করতে হবে।

#সংখ্যাগুলো কতটা টাটকা

Budgets তোমার resource-এর দিকে সরাসরি তাকিয়ে থাকে না। সে পড়ে billing data, যেটা দিনে অন্তত একবার, সাধারণত তিনবার পর্যন্ত আপডেট হয়, আর ব্যবহারের কয়েক ঘণ্টা পরে। তাই:

  • threshold পার হওয়ার কয়েক ঘণ্টা পরে alert আসতে পারে;
  • তুমি যখন email পড়ছ, খরচ ততক্ষণে আরও এগিয়ে গেছে;
  • budget কোনো খরচের সীমা না। Action জুড়ে না দিলে threshold-এ গিয়ে কিছুই থামে না, আর action-ও কাজ করে কয়েক ঘণ্টা পুরোনো data দেখে।

#Budget action

Action হলো threshold পার হলে AWS Budgets তোমার হয়ে যে কাজটা করে, হয় নিজে থেকেই, নয়তো notification-এ তুমি approve করার পর। Action তিন রকম:

  1. User, group বা role-এ একটা IAM policy জুড়ে দেওয়া, সাধারণত এমন policy যেটা নতুন resource চালু করা নিষেধ করে।
  2. Organization-এর management account থেকে কোনো account বা OU-তে একটা service control policy (SCP) জুড়ে দেওয়া (একই ধারণার অনেক-account সংস্করণ, chapter 20)।
  3. তোমার বাছাই করা নির্দিষ্ট EC2 বা RDS instance stop করা।

Budgets action চালায় তোমার দেওয়া একটা IAM role দিয়ে। দুইটা সীমাবদ্ধতা জেনে রাখো:

  • Instance stop করলেও তার storage আর address-এর বিল থামে না।
  • Instance-গুলো যদি কোনো Auto Scaling group-এর হয়, group সোজা নতুন instance চালু করে দেবে। তাই stop-এর সঙ্গে আরেকটা action রাখো, যেটা group-এর launch করার অনুমতি কেড়ে নেয়, অথবা group-টাকে শূন্যে নামিয়ে আনো।

Usage থেকে তোমার inbox পর্যন্ত: একটা budget alert

Budget সরাসরি তোমার resource-এর দিকে তাকায় না; সে পড়ে billing data, যেটা usage-এর কয়েক ঘণ্টা পরে এসে পৌঁছায়। একটা alert, একটা action, আর দুইভাবে এগুলো ব্যর্থ হয়, সব ধাপে ধাপে দেখো।

পরিস্থিতি

তোমার resourceমাপা usage
Billing dataদিনে কয়েকবার refresh
AWS Budgetsমাসে $10
SNS topicbilling-alerts
তুমিemail, chat
usage-এর হিসাব
ধাপ 1 / 6
1

চালু থাকা প্রতিটা resource মাপা হয়: instance কত সেকেন্ড চলল, কত GB storage কত দিন রইল, কত gigabyte data গেল। এই হিসাবগুলো billing system-এ পৌঁছায় দল বেঁধে, কয়েক ঘণ্টা পরে।

#Budgets-এর খরচ কত

Budget বানানো আর alert পাওয়া ফ্রি। Action জোড়া প্রথম দুইটা budget ফ্রি; এরপর প্রতিটার জন্য দিনে $0.10। নির্দিষ্ট সময় পরপর পাঠানো budget report-এর দাম প্রতিটা $0.01।

নিজেকে যাচাই করোপ্রশ্ন

একটা startup চায়, এই মাসের বিল ৫০০ ডলার ছাড়াবে বলে AWS অনুমান করামাত্রই একটা email আসুক, যদিও আসল খরচ তখনো অনেক কম। কী সেট করবে?

#খরচের বাকি tool-গুলো

Budgets-এর কাজ “সাবধান করো”। অন্য প্রশ্নের জন্য অন্য tool।

#Cost Explorer: পেছনে তাকাও, সামনে তাকাও

Cost Explorer billing data দিয়ে chart আর table বানায়, যেগুলো service, Region, account, usage type, tag ধরে, দিন বা মাস হিসেবে ভাগ করে দেখা যায় (চালু করে নিলে গত ১৪ দিনের জন্য ঘণ্টা বা resource ধরেও)। এর সঙ্গে:

  • তোমার খরচের forecast দেয়, এখন সামনের ১৮ মাস পর্যন্ত;
  • তোমার usage দেখে Savings Plan আর Reserved Instance-এর পরামর্শ দেয় (lesson 4.4), আর যেগুলো কেনা আছে সেগুলো কতটা কাজে লাগছে দেখায়;
  • console-এ ফ্রি; এর API-তে প্রতি request $0.01।

একবার চালু (enable) করে নিতে হয় (প্রথমবার data আসতে এক দিন পর্যন্ত লাগতে পারে)। যেটা এটা করে না, সেটা হলো alert। যে forecast কেউ খুলেই দেখে না, সেটা কাউকে সাবধান করে না।

#Cost Anomaly Detection: “এটা তো তোমার স্বভাবের সাথে মেলে না”

Anomaly Detection তোমার আগের খরচ দেখে machine learning দিয়ে শিখে নেয় প্রতিটা service-এ (বা account, tag, cost category-তে) কোনটা স্বাভাবিক, আর খরচ সেই ধরন ভাঙলেই জানায়, যেমন এক দিনের হঠাৎ লাফ, বা হুট করে বেড়ে গিয়ে সেখানেই থেকে যাওয়া। তবে ধীরে ধীরে একটানা বাড়তে থাকা খরচ ওর চোখে স্বাভাবিক বৃদ্ধির মতোই লাগে; ওটা ধরে budget-এর forecasted alert (lesson 25.4)। “অস্বাভাবিক” কোনটা, সেটার জন্য তোমাকে কোনো ডলারের threshold দিতে হয় না; শুধু বলে দাও কত বড় anomaly হলে তুমি খবর চাও। প্রতিটা alert-এ লেখা থাকে সে কোন মূল কারণ খুঁজে পেয়েছে: service, account, Region, usage type। Alert আসে SNS দিয়ে প্রতিটা আলাদা করে, অথবা দিনে বা সপ্তাহে একবার email-এ সারাংশ হিসেবে।

এটা ফ্রি, আর Cost Explorer চালু করলেই AWS নিজে থেকে এটা সাজিয়ে দেয়: সব AWS service-এর জন্য একটা monitor আর দৈনিক সারাংশ। ফাঁস হয়ে যাওয়া access key দিয়ে কেউ যদি তোমার কখনো-না-খোলা কোনো Region-এ GPU instance চালায়, সেটা budget-এর threshold-এ পৌঁছানোর অনেক আগেই ধরে ফেলার সম্ভাবনা সবচেয়ে বেশি এই tool-এরই।

#CloudWatch billing alarm: পুরোনো পদ্ধতি

Budgets আসার আগে বিলের দিকে নজর রাখা হতো CloudWatch alarm দিয়ে:

  1. Billing preferences-এ গিয়ে Receive CloudWatch billing alerts চালু করো (একবার চালু করলে আর বন্ধ করা যায় না)।
  2. Console-এর Region বদলে US East (N. Virginia), us-east-1 করো। Billing metric থাকে শুধু সেখানেই, কিন্তু হিসাব করে সব Region মিলিয়ে।
  3. AWS/Billing namespace-এর EstimatedCharges metric-এর ওপর (মোট, বা service ধরে) USD-তে একটা alarm বানাও, আর খবর পাঠাও একটা SNS topic-এ।

এটা এখনো কাজ করে, আর পরীক্ষায় us-east-1-এর এই খুঁটিনাটিটা এখনো আসে। কিন্তু billing alarm শুধু মাসের এ পর্যন্ত মোট খরচ মেলায়: forecast নেই, filter নেই, action নেই। নতুন setup-এর জন্য AWS Budgets ব্যবহার করতেই বলে।

#Cost and Usage Report আর cost allocation tag

  • Cost and Usage Report (CUR), যেটা এখন বানানো হয় Data Exports থেকে, তোমার বিল নিয়ে AWS-এর কাছে থাকা সবচেয়ে খুঁটিনাটি data: প্রতিটা resource-এর প্রতি ঘণ্টা বা প্রতি দিনের জন্য একটা করে লাইন, file আকারে একটা S3 bucket-এ লেখা হয়। Athena দিয়ে query করো, বা কোনো reporting tool-এ তোলো। প্রশ্নে যদি সবচেয়ে বিস্তারিত billing data বা SQL দিয়ে বিশ্লেষণের কথা থাকে, উত্তর এটাই।
  • Cost allocation tag দিয়ে project, টিম বা environment ধরে খরচ দেখা যায়। আগে resource-এ tag লাগাও (যেমন project=shop), তারপর Billing console-এ ওই tag key-টা activate করো। শুধু activate করা tag-ই Cost Explorer, budget-এর filter আর CUR-এ দেখা যায়, আর তাও শুধু activate করার পর থেকে যে খরচ হয়েছে তার জন্য (দেখা দিতে এক দিন পর্যন্ত লাগতে পারে)। March 2024 থেকে management account চাইলে ১২ মাস পর্যন্ত পেছনের খরচে backfill চাইতে পারে, তবে শুধু সেই মাসগুলোর জন্য যখন resource-এ tag-টা আগে থেকেই লাগানো ছিল। AWS নিজেও কিছু tag বানিয়ে দেয়, যেমন aws:createdBy।

#কোন প্রশ্নে কোন tool

প্রশ্নে যদি বলে…উত্তর
“খরচ সীমা ছাড়ানোর আগেই জানাও”, “forecasted spend alert”AWS Budgets (forecasted alert)
“Budget ছাড়ালে নিজে থেকেই instance বন্ধ করো / অনুমতি কমাও”Budget action
“খরচ chart-এ দেখাও”, “সময়ের সাথে প্রবণতা”, “ভবিষ্যতের খরচের forecast”, “কোন service-এ সবচেয়ে বেশি খরচ”Cost Explorer
“অস্বাভাবিক খরচ ধরো”, “হঠাৎ লাফ”, “billing-এ machine learning”, কোনো threshold নেইCost Anomaly Detection
“Estimated charges-এর ওপর alarm”, “billing-এর CloudWatch metric”us-east-1-এ CloudWatch billing alarm
“সবচেয়ে বিস্তারিত, line-item billing data”, “Athena / SQL দিয়ে billing query”Cost and Usage Report (Data Exports)
“Project / টিম / বিভাগ ধরে খরচ”Cost allocation tag (activate করা) + Cost Explorer

খরচের চারটা tool, চার রকম কাজ

Budgets-ই একমাত্র tool না। CloudWatch billing alarm, Cost Anomaly Detection আর Cost Explorer কে কী করে, আর কে কোথায় চুপ থাকে, দেখে নাও।

পরিস্থিতি

Billing dataসব Region
CloudWatchus-east-1
Cost Anomaly Detectionতোমার ধরন শেখে
Cost Explorerchart আর forecast
তুমি
billing alert চালু
ধাপ 1 / 4
1

প্রথমে Billing preferences-এ গিয়ে “Receive CloudWatch billing alerts” চালু করো। তখন থেকে AWS তোমার আনুমানিক খরচ CloudWatch-এ পাঠাতে থাকবে; একবার চালু করলে এটা আর বন্ধ করা যায় না।

#“Stop” করার পরও কী কী টাকা খায়

সবচেয়ে চেনা “হঠাৎ বিল” কোনো বড় server থেকে আসে না। আসে ছোট ছোট অনেক জিনিস থেকে, যেগুলো কখনো delete করা হয়নি। বিলের হিসাবে তিনটা শব্দের মানে তিন রকম:

তুমি যা করলে…Compute-এর খরচএরপরও যার বিল চলে
EC2 instance stopথেমে যায়তার EBS volume, যেকোনো Elastic IP (এখন অলস), snapshot
EC2 instance terminateশেষযেসব volume-এ DeleteOnTermination বন্ধ (default হিসেবে বাড়তি volume-গুলো), Elastic IP (ছাড়া হয় না), snapshot, AMI
কোনো resource deleteশেষওই resource-এর জন্য আর কিছুই না

যাদের সন্দেহ করা উচিত (মোটামুটি us-east-1-এর দাম, অক্টোবর ২০২৬, শুধু মাত্রাটা বোঝানোর জন্য):

  • EBS volume: যতক্ষণ আছে, ততক্ষণ প্রতি GB-month হিসেবে বিল, জোড়া থাকুক বা না থাকুক, instance চলুক বা না চলুক (gp3 প্রতি GB-month প্রায় $0.08)। available অবস্থার volume কোথাও জোড়া নেই, তবু বিল হয় (lesson 5.1)।
  • EBS snapshot আর AMI: যে volume থেকে snapshot নেওয়া, volume মুছে গেলেও snapshot থেকে যায় (প্রতি GB-month প্রায় $0.05)। AMI তার snapshot-গুলোকে বাঁচিয়ে রাখে: আগে AMI deregister করো, তারপর snapshot মোছো।
  • Public IPv4 address: ফেব্রুয়ারি ২০২৪ থেকে প্রতিটা public IPv4 address-এর জন্য ঘণ্টায় প্রায় $0.005, ব্যবহার হোক বা অলস পড়ে থাকুক (মাসে প্রায় $3.65)। Instance terminate করলে তার Elastic IP ছাড়া হয় না (lesson 3.6)। Auto-assigned public IP অবশ্য instance stop হলেই ছেড়ে দেওয়া হয়, তাই তার খরচ থেমে যায়।
  • NAT Gateway: ঘণ্টায় প্রায় $0.045 (মাসে প্রায় $33), সঙ্গে প্রতি GB process করার চার্জ। এর কোনো stop নেই: delete করো, তারপর তার Elastic IP release করো (lesson 3.4)।
  • Load Balancer: ঘণ্টা ধরে বিল (একটা ALB মাসে প্রায় $16), সঙ্গে capacity unit, traffic না থাকলেও। Stop নেই: delete করো।
  • RDS: stop করা database-ও storage আর backup-এর টাকা দেয়, আর ৭ দিন পর AWS নিজেই সেটা আবার চালু করে দেয়। দরকার না থাকলে delete করো (শেষ একটা snapshot রাখবে কি না ঠিক করো, সেটারও বিল হয়)।
  • S3: প্রতি GB-month storage আর request; bucket delete করার আগে সেটা খালি করতে হয়।
  • অন্য Region: EC2, EBS, VPC আর বেশিরভাগ service Regional। Console শুধু বাছাই করা Region-টাই দেখায়, তাই Virginia থেকে তাকালে Singapore-এ ভুলে যাওয়া instance চোখেই পড়বে না।
  • মাসে মাসে ছোট ছোট খরচ, যেগুলো যোগ হয়ে বড় হয়: Route 53 hosted zone, KMS key, Secrets Manager-এর secret, CloudWatch-এর log storage, internet-এ যাওয়া data transfer।

“সব তো বন্ধ করে দিয়েছি, তাও টাকা কাটছে কেন?”

us-east-1-এ ছোট একটা test environment, আর কেউ একজন Singapore-এ একটা instance চালু করে রেখেছিল। বিলের হিসাবে stop, terminate আর delete, তিনটা একদম আলাদা জিনিস।

পরিস্থিতি

Stop করলে শুধু compute-এর টাকা কাটা বন্ধ হয়।

us-east-1
VPC10.0.0.0/16
ap-southeast-1
ALB
Web servert3.medium
Elastic IP203.0.113.25
Root volume20 GB
Data volume100 GB
NAT Gateway
Snapshotroot-এর
S350 GB
RDSdb.t3.micro
ভুলে যাওয়া testt3.medium
তুমিconsole: us-east-1

সব চালু · মোট ≈ মাসে $141

Resourceঅবস্থাকীসের বিল≈ মাসে
EC2 t3.mediumচালুinstance-এর ঘণ্টা$30.37
EBS root 20 GBব্যবহার হচ্ছেGB-month$1.60
EBS data 100 GBব্যবহার হচ্ছেGB-month$8.00
Elastic IPব্যবহার হচ্ছেpublic IPv4-এর ঘণ্টা$3.65
NAT Gatewayচালুঘণ্টা + GB process$32.85+
ALBচালুঘণ্টা + capacity unit$16.43+
EBS snapshotজমা আছেGB-month$1.00
S3 bucket 50 GBজমা আছেGB-month + request$1.15
RDS db.t3.microচালুinstance-এর ঘণ্টা + storage$14.71
EC2 in ap-southeast-1চালুinstance-এর ঘণ্টা + EBS$31.00
ধাপ 1 / 5
1

সব চালু। মোট মাসে প্রায় $141, আর web server নিজে তার মাত্র পাঁচ ভাগের এক ভাগের মতো।

#পরিষ্কার করার checklist

  1. সব খুঁজে বের করো, প্রতিটা Region-এ

    চলতি মাসের Bills খুলে খরচগুলো Region আর service অনুযায়ী দেখো, অথবা Cost Explorer-এ Region ধরে ভাগ করো। সব Region-এর resource একসাথে তালিকা করতে AWS Resource Explorer, Tag Editor, অথবা “নিজে করে দেখো” অংশের CLI loop ব্যবহার করো।

  2. বাইরের দিক থেকে ভেতরের দিকে delete করো

    আগে Load Balancer আর target group, তারপর Auto Scaling group (নাহলে group নতুন instance চালু করেই যাবে), তারপর instance, তারপর NAT Gateway, তারপর database। প্রতিটা স্তর তার পরের স্তরের ওপর ভর করে আছে।

  3. Terminate যেগুলো ছোঁয় না, সেগুলো মোছো

    available অবস্থার volume, Elastic IP (NAT Gateway-এরটাও), পুরোনো snapshot আর AMI, খালি S3 bucket, অব্যবহৃত VPC।

  4. পরের দিন আবার দেখো

    Billing data কয়েক ঘণ্টা পিছিয়ে থাকে। পরের দিন Bills page-এ তাকাও: দিনের খরচ শূন্য বা তার কাছাকাছি হওয়ার কথা। না হলে যে লাইনটা রয়ে গেছে, সেটাই বলে দেবে কোন service, কোন Region।

#নতুন account-এর প্রথম দশ মিনিট

  1. Root user-কে সুরক্ষিত করো

    Root user-এ MFA চালু করো, আর root-এর জন্য কোনো access key বানিয়ো না (lesson 2.3)। Root-এর password চুরি হওয়াই সবচেয়ে দামি ভুল।

  2. দুইটা budget বানাও

    Learning account-এর জন্য একটা zero spend budget (বা ছোট একটা মাসিক cost budget), আর একটা monthly cost budget, যেখানে ১০০%-এ forecasted alert আর ৫০%, ৮০% ও ১০০%-এ actual alert। Alert পাঠাও নিজের email-এ, আর টিম থাকলে একটা SNS topic-এও।

  3. তোমার IAM user-কে বিল দেখতে দাও

    Root হিসেবে IAM user and role access to Billing information চালু করো, তারপর রোজকার কাজ করো IAM user দিয়ে বা IAM Identity Center দিয়ে, root দিয়ে কখনো না।

  4. Cost Explorer চালু করো

    এতে Cost Anomaly Detection-ও চালু হয়ে যায়, তার default monitor আর দৈনিক সারাংশসহ।

  5. একটা মূল Region বেছে নাও, আর যা বানাও তাতে tag লাগাও

    এক Region-এ কাজ করো, যাতে পড়ে থাকা জিনিস সহজে খুঁজে পাও। প্রতিটা resource-এ অন্তত একটা project tag লাগাও, যাতে পরে খরচগুলো ভাগ করে দেখা যায়।

নিজেকে যাচাই করোপ্রশ্ন

একজন engineer এক সপ্তাহ আগে একটা test account-এর একমাত্র EC2 instance stop করেছে, তবু বিল প্রতি সপ্তাহে কয়েক ডলার করে বাড়ছে। Instance-টার একটা ১০০ GB data volume আর একটা Elastic IP আছে। কারণ কী?

#নিজে করে দেখো

111122223333-এর জায়গায় তোমার account ID আর you@example.com-এর জায়গায় তোমার ঠিকানা বসাও।

# 1. মাসে $10-এর cost budget: ১০০%-এ forecasted alert, ৫০% আর ৮০%-এ actual alert
aws budgets create-budget --account-id 111122223333 \
  --budget '{"BudgetName":"monthly-10","BudgetLimit":{"Amount":"10","Unit":"USD"},"TimeUnit":"MONTHLY","BudgetType":"COST"}' \
  --notifications-with-subscribers '[
    {"Notification":{"NotificationType":"FORECASTED","ComparisonOperator":"GREATER_THAN","Threshold":100,"ThresholdType":"PERCENTAGE"},
     "Subscribers":[{"SubscriptionType":"EMAIL","Address":"you@example.com"}]},
    {"Notification":{"NotificationType":"ACTUAL","ComparisonOperator":"GREATER_THAN","Threshold":50,"ThresholdType":"PERCENTAGE"},
     "Subscribers":[{"SubscriptionType":"EMAIL","Address":"you@example.com"}]},
    {"Notification":{"NotificationType":"ACTUAL","ComparisonOperator":"GREATER_THAN","Threshold":80,"ThresholdType":"PERCENTAGE"},
     "Subscribers":[{"SubscriptionType":"EMAIL","Address":"you@example.com"}]}]'

# 2. এই মাসে কোন service-এ কত খরচ? (Cost Explorer API: প্রতি call $0.01)
aws ce get-cost-and-usage \
  --time-period Start=$(date -u +%Y-%m-01),End=$(date -u -d tomorrow +%Y-%m-%d) \
  --granularity MONTHLY --metrics UnblendedCost \
  --group-by Type=DIMENSION,Key=SERVICE

# 3. মাস শেষে খরচ কোথায় দাঁড়াবে?
aws ce get-cost-forecast \
  --time-period Start=$(date -u -d tomorrow +%Y-%m-%d),End=$(date -u -d "$(date -u +%Y-%m-01) +1 month" +%Y-%m-%d) \
  --metric UNBLENDED_COST --granularity MONTHLY

# 4. একটা CloudWatch billing alarm (আগে billing alert চালু করতে হবে; Region খেয়াল করো)
aws cloudwatch put-metric-alarm --region us-east-1 \
  --alarm-name estimated-charges-over-20 \
  --namespace AWS/Billing --metric-name EstimatedCharges --dimensions Name=Currency,Value=USD \
  --statistic Maximum --period 21600 --evaluation-periods 1 \
  --threshold 20 --comparison-operator GreaterThanThreshold \
  --alarm-actions arn:aws:sns:us-east-1:111122223333:billing-alerts

# 5. প্রতিটা Region-এ পড়ে থাকা জিনিস: instance, জোড়া-না-থাকা volume, অলস Elastic IP, NAT Gateway
for r in $(aws ec2 describe-regions --query 'Regions[].RegionName' --output text); do
  echo "== $r"
  aws ec2 describe-instances --region "$r" \
    --query 'Reservations[].Instances[].[InstanceId,State.Name,InstanceType]' --output text
  aws ec2 describe-volumes --region "$r" --filters Name=status,Values=available \
    --query 'Volumes[].[VolumeId,Size,"unattached volume"]' --output text
  aws ec2 describe-addresses --region "$r" \
    --query 'Addresses[?AssociationId==null].[PublicIp,AllocationId,"idle Elastic IP"]' --output text
  aws ec2 describe-nat-gateways --region "$r" --filter Name=state,Values=available \
    --query 'NatGateways[].[NatGatewayId,"NAT gateway"]' --output text
done

Budget থেকে সরাসরি আসা email-এর জন্য কিছু confirm করতে হয় না, কিন্তু SNS-এর email subscription-এর confirmation link-এ click না করা পর্যন্ত সেখানে কিছুই পৌঁছায় না। ৪ নম্বর ধাপটা us-east-1 ছাড়া অন্য কোনো Region দিয়ে চালিয়ে দেখো, metric খুঁজেই পাবে না।

#সারসংক্ষেপ

মূল কথাগুলো

  • Pay-as-you-go-এর কোনো সীমা নেই। Paid account-এ কেউ নিজে থেকে খরচ থামায় না; কিছু বানানোর আগেই alert লাগবে।
  • Free Tier (১৫ জুলাই ২০২৫ থেকে): নতুন account বেছে নেয় free plan ($200 পর্যন্ত credit, বাছাই করা service, কখনো টাকা কাটে না, ৬ মাস পর বা credit শেষ হলে বন্ধ, upgrade-এর জন্য ৯০ দিন) অথবা paid plan (একই credit, সব service, credit-এর বাইরে বিল)। AWS Organizations-এ যোগ দিলে free plan নিজে থেকেই paid হয়ে যায়। পুরোনো account: ১২ মাসের সুবিধা (৭৫০ ঘণ্টা = একটা instance পুরো মাস), তারপর চুপচাপ পুরো দাম।
  • Billing-এ ঢোকার অনুমতি: default-এ শুধু root; root-কে IAM user and role access to Billing information চালু করতে হয়, আর তার পরেও user-দের billing policy লাগে।
  • AWS Budgets: cost, usage, RI আর Savings Plan budget; actual alert (ঘটনার পরে, period-এ একবার) আর forecasted alert (আগেই, তবে প্রায় ৫ সপ্তাহের ইতিহাস লাগে); প্রতিটা alert-এ ১০টা email + ১টা SNS topic; data দিনে কয়েকবার refresh হয়, তাই এটা কোনো সীমা না। Budget action: IAM policy, SCP, বা EC2/RDS instance stop; নিজে থেকে বা approve করে; Auto Scaling group থেকে সাবধান। নজর রাখা ফ্রি; action জোড়া ২টা budget ফ্রি।
  • Cost Explorer: বিশ্লেষণ আর forecast (১৮ মাস পর্যন্ত), Savings Plan/RI-এর পরামর্শ, কোনো alert নেই। Cost Anomaly Detection: machine learning, threshold লাগে না, মূল কারণ জানায়, Cost Explorer-এর সঙ্গে default-এ চালু। CloudWatch billing alarm: EstimatedCharges, শুধু us-east-1, শুধু actual। CUR / Data Exports: S3-এ line-item ধরে সব খুঁটিনাটি। Cost allocation tag: activate করতে হয়, কাজ করে তখন থেকে (চাইলে ১২ মাস পর্যন্ত backfill)।
  • Stop মানে টাকা দেওয়া বন্ধ না। EBS volume, snapshot, Elastic IP, NAT Gateway, Load Balancer, RDS-এর storage (আর ৭ দিন পর RDS আবার চালু হয়), S3, আর অন্য Region-এর resource বিল বাড়াতেই থাকে। বাইরে থেকে ভেতরে delete করো, address release করো, প্রতিটা Region দেখো, পরের দিন আবার মিলিয়ে নাও।