{"id":24821,"date":"2026-06-02T21:45:15","date_gmt":"2026-06-02T21:45:15","guid":{"rendered":"https:\/\/umang.pk\/2026\/06\/02\/%d8%b3%db%8c%d8%b1%db%8c%d8%b2-a-%da%a9%db%92-%d8%a2%d8%ba%d8%a7%d8%b2-%da%a9%db%92-%d9%84%db%8c%db%92-aws-finops-%da%af%d8%a7%d8%a6%db%8c%da%88-8-%d9%84%d8%a7%da%af%d8%aa-%da%a9%db%92-%d9%86%d9%85\/"},"modified":"2026-06-02T21:45:15","modified_gmt":"2026-06-02T21:45:15","slug":"%d8%b3%db%8c%d8%b1%db%8c%d8%b2-a-%da%a9%db%92-%d8%a2%d8%ba%d8%a7%d8%b2-%da%a9%db%92-%d9%84%db%8c%db%92-aws-finops-%da%af%d8%a7%d8%a6%db%8c%da%88-8-%d9%84%d8%a7%da%af%d8%aa-%da%a9%db%92-%d9%86%d9%85","status":"publish","type":"post","link":"https:\/\/umang.pk\/ur\/2026\/06\/02\/%d8%b3%db%8c%d8%b1%db%8c%d8%b2-a-%da%a9%db%92-%d8%a2%d8%ba%d8%a7%d8%b2-%da%a9%db%92-%d9%84%db%8c%db%92-aws-finops-%da%af%d8%a7%d8%a6%db%8c%da%88-8-%d9%84%d8%a7%da%af%d8%aa-%da%a9%db%92-%d9%86%d9%85\/","title":{"rendered":"\u0633\u06cc\u0631\u06cc\u0632 A \u06a9\u06d2 \u0622\u063a\u0627\u0632 \u06a9\u06d2 \u0644\u06cc\u06d2 AWS FinOps \u06af\u0627\u0626\u06cc\u0688: 8 \u0644\u0627\u06af\u062a \u06a9\u06d2 \u0646\u0645\u0648\u0646\u06d2 \u062c\u0648 \u067e\u0631\u0648\u0688\u06a9\u0679-\u0645\u0627\u0631\u06a9\u06cc\u0679 \u0641\u0679 \u06c1\u0648\u0646\u06d2 \u06a9\u06d2 \u0628\u0639\u062f \u0638\u0627\u06c1\u0631 \u06c1\u0648\u062a\u06d2 \u06c1\u06cc\u06ba"},"content":{"rendered":"\n<div id=\"\">\n<p>\u0622\u067e \u0646\u06d2 \u0627\u067e\u0646\u06cc \u0633\u06cc\u0631\u06cc\u0632 A \u06a9\u0648 \u0628\u0691\u06be\u0627\u06cc\u0627\u06d4 \u0627\u0646\u062c\u06cc\u0646\u0626\u0631\u0646\u06af \u0679\u06cc\u0645 \u06a9\u0648 \u062a\u06cc\u0632\u06cc \u0633\u06d2 \u0628\u06be\u0631\u062a\u06cc \u06a9\u0631 \u0644\u06cc\u0627 \u06af\u06cc\u0627\u06d4 \u062e\u0635\u0648\u0635\u06cc\u0627\u062a \u062a\u06cc\u0632\u06cc \u0633\u06d2 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u06cc \u062c\u0627\u062a\u06cc \u06c1\u06cc\u06ba\u06d4 \u0627\u0648\u0631 \u06a9\u06c1\u06cc\u06ba 6 \u0627\u0648\u0631 12 \u0645\u0627\u06c1 \u06a9\u06d2 \u0628\u0639\u062f\u060c \u06a9\u0648\u0626\u06cc AWS Cost Explorer \u06a9\u0627 \u0627\u0633\u06a9\u0631\u06cc\u0646 \u0634\u0627\u0679 \u0644\u06d2 \u06a9\u0631 \u06af\u0632\u0631\u0627 \u062c\u0633 \u0646\u06d2 \u0635\u0631\u0641 \u0644\u0627\u0626\u0646 \u06a9\u0648 \u0627\u0648\u067e\u0631 \u062c\u0627\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u062f\u06a9\u06be\u0627\u06cc\u0627\u06d4<\/p>\n<p>\u0648\u06c1 \u0644\u0627\u0626\u0646\u06cc\u06ba \u0628\u06d2 \u062a\u0631\u062a\u06cc\u0628 \u0646\u06c1\u06cc\u06ba \u06c1\u06cc\u06ba\u06d4 \u06cc\u06c1 \u0627\u06cc\u06a9 \u067e\u06cc\u0679\u0631\u0646 \u06a9\u06cc \u067e\u06cc\u0631\u0648\u06cc \u06a9\u0631\u062a\u0627 \u06c1\u06d2. \u062a\u0631\u0642\u06cc \u06a9\u06d2 \u0627\u06cc\u06a9 \u06c1\u06cc \u0645\u0631\u062d\u0644\u06d2 \u067e\u0631 \u0648\u06c1\u06cc \u0622\u0679\u06be \u0646\u0645\u0648\u0646\u06d2 \u062a\u0642\u0631\u06cc\u0628\u0627\u064b \u06c1\u0631 \u06a9\u0645\u067e\u0646\u06cc \u0645\u06cc\u06ba \u0633\u0627\u0645\u0646\u06d2 \u0622\u0626\u06d2 \u062c\u0646 \u06a9\u0627 \u0645\u06cc\u06ba \u0646\u06d2 \u0622\u0688\u0679 \u06a9\u06cc\u0627\u06d4<\/p>\n<p>\u06cc\u06c1 \u06af\u0627\u0626\u06cc\u0688 \u062a\u0645\u0627\u0645 \u0622\u0679\u06be\u0648\u06ba \u06a9\u06d2 \u0646\u0627\u0645 \u0628\u062a\u0627\u062a\u0627 \u06c1\u06d2\u060c \u0622\u067e \u06a9\u0648 \u0638\u0627\u06c1\u0631 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u06a9\u06c1\u0627\u06ba \u062f\u06cc\u06a9\u06be\u0646\u0627 \u06c1\u06d2\u060c \u0627\u0648\u0631 \u06c1\u0631 \u0627\u06cc\u06a9 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u0635\u0644\u0627\u062d\u0627\u062a \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u062c\u0628 \u062a\u06a9 \u0622\u067e \u06a9\u062a\u0627\u0628 \u067e\u0691\u06be\u0646\u0627 \u062e\u062a\u0645 \u06a9\u0631 \u0644\u06cc\u06ba \u06af\u06d2\u060c \u0622\u067e \u06a9\u0648 \u0645\u0639\u0644\u0648\u0645 \u06c1\u0648 \u062c\u0627\u0626\u06d2 \u06af\u0627 \u06a9\u06c1 \u0622\u067e \u06a9\u06d2 \u0631\u0646 \u0648\u06d2 \u06a9\u0648 \u06a9\u06cc\u0627 \u0644\u06cc\u06a9\u0633 \u06a9\u0631 \u0631\u06c1\u06d2 \u06c1\u06cc\u06ba \u0627\u0648\u0631 \u0627\u0633 \u06c1\u0641\u062a\u06d2 \u0627\u0633 \u06a9\u06d2 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba \u06a9\u06cc\u0627 \u06a9\u0631\u0646\u0627 \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-table-of-contents\">\u0627\u0646\u0688\u06cc\u06a9\u0633<\/h2>\n<h2 id=\"heading-who-this-guide-is-for\">\u06cc\u06c1 \u06af\u0627\u0626\u06cc\u0688 \u06a9\u0633 \u06a9\u06d2 \u0644\u06cc\u06d2 \u06c1\u06d2\u06d4<\/h2>\n<p>\u06cc\u06c1 \u06af\u0627\u0626\u06cc\u0688 \u0627\u0646\u062c\u06cc\u0646\u0626\u0631\u0632\u060c CTOs\u060c \u0627\u0648\u0631 \u0633\u06cc\u0631\u06cc\u0632 A \u06a9\u0645\u067e\u0646\u06cc\u0648\u06ba \u06a9\u06d2 \u062a\u06a9\u0646\u06cc\u06a9\u06cc \u0634\u0631\u06cc\u06a9 \u0628\u0627\u0646\u06cc \u06a9\u06d2 \u0644\u06cc\u06d2 \u0644\u06a9\u06be\u06cc \u06af\u0626\u06cc \u06c1\u06d2\u06d4 \u0639\u0627\u0645 \u0637\u0648\u0631 \u067e\u0631\u060c 15 \u0633\u06d2 80 \u0627\u0646\u062c\u06cc\u0646\u0626\u0631\u0632 \u06c1\u0648\u062a\u06d2 \u06c1\u06cc\u06ba\u060c AWS \u0628\u0644\u0646\u06af \\(20,000 \u0633\u06d2 \\)150,000 \u0645\u0627\u06c1\u0627\u0646\u06c1 \u06c1\u06d2\u060c \u0627\u0648\u0631 \u0641\u0646\u0627\u0646\u0633 \u0679\u06cc\u0645 \u0646\u06d2 \u062d\u0627\u0644 \u06c1\u06cc \u0645\u06cc\u06ba \u0627\u0646\u0641\u0631\u0627\u0633\u0679\u0631\u06a9\u0686\u0631 \u0644\u0627\u0626\u0646 \u0645\u06cc\u06ba \u062f\u0644\u0686\u0633\u067e\u06cc \u0644\u06cc\u0646\u0627 \u0634\u0631\u0648\u0639 \u06a9\u06cc \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u06cc\u06a9 \u0633\u0631\u0634\u0627\u0631 FinOps \u0679\u06cc\u0645 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 \u0622\u067e \u06a9\u0648 \u06c1\u0641\u062a\u06d2 \u0645\u06cc\u06ba \u0627\u06cc\u06a9 \u062f\u0648\u067e\u06c1\u0631 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u0633 \u06af\u0627\u0626\u06cc\u0688 \u0645\u06cc\u06ba \u0627\u06cc\u06a9 \u0627\u0646\u062c\u06cc\u0646\u0626\u0631 \u0627\u0648\u0631 \u0622\u0679\u06be \u0646\u0645\u0648\u0646\u0648\u06ba \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u0648\u06af\u06cc\u06d4<\/p>\n<p><strong>\u0634\u0631\u0648\u0639 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u0622\u067e \u06a9\u0648 \u06a9\u06cc\u0627 \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2:<\/strong><\/p>\n<ul>\n<li>\n<p>Cost Explorer \u06a9\u0648 \u0641\u0639\u0627\u0644 \u06a9\u0631\u06a9\u06d2 AWS \u0627\u06a9\u0627\u0624\u0646\u0679 \u062a\u06a9 \u0631\u0633\u0627\u0626\u06cc \u062d\u0627\u0635\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<li>\n<p>AWS CLI v2 \u06a9\u0646\u0641\u06cc\u06af\u0631\u06cc\u0634\u0646 (<code>aws configure<\/code>)<\/p>\n<\/li>\n<li>\n<p>EC2\u060c RDS\u060c EBS \u0627\u0648\u0631 S3 \u06a9\u0627 \u0628\u0646\u06cc\u0627\u062f\u06cc \u0639\u0644\u0645<\/p>\n<\/li>\n<li>\n<p>\u0628\u06a9 \u0645\u0627\u0631\u06a9 \u0644\u0627\u06af\u062a \u0627\u06cc\u06a9\u0633\u067e\u0644\u0648\u0631\u0631 &#8211; \u0622\u067e \u0627\u0633\u06d2 \u0628\u0627\u0631 \u0628\u0627\u0631 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba \u06af\u06d2\u06d4<\/p>\n<\/li>\n<\/ul>\n<p><strong>\u062a\u0645\u0627\u0645 \u062a\u0631\u0627\u0645\u06cc\u0645 \u06a9\u0648 \u0645\u06a9\u0645\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u0627 \u062a\u062e\u0645\u06cc\u0646\u06c1 \u0648\u0642\u062a:<\/strong> \u0627\u0646\u062c\u06cc\u0646\u0626\u0631\u0646\u06af \u06a9\u06d2 \u0622\u0679\u06be \u0633\u06d2 20 \u06af\u06be\u0646\u0679\u06d2 \u06a9\u0627 \u0648\u0642\u062a \u062f\u0648 \u0633\u067e\u0631\u0646\u0679 \u0645\u06cc\u06ba \u067e\u06be\u06cc\u0644\u0627 \u06c1\u0648\u0627 \u06c1\u06d2\u06d4 \u0627\u0633\u06d2 \u067e\u0691\u06be\u0646\u06d2 \u0645\u06cc\u06ba \u062a\u0642\u0631\u06cc\u0628\u0627\u064b 20 \u0645\u0646\u0679 \u0644\u06af\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0633\u0628 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 ROI \u0637\u06d2 \u06a9\u0631\u0646\u06d2 \u0645\u06cc\u06ba (\u067e\u06cc\u0679\u0631\u0646 3) \u062a\u0642\u0631\u06cc\u0628\u0627\u064b 30 \u0645\u0646\u0679 \u0644\u06af\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<h2 id=\"heading-before-you-start-establish-your-baseline\">\u0634\u0631\u0648\u0639 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2: \u0627\u06cc\u06a9 \u0628\u06cc\u0633 \u0644\u0627\u0626\u0646 \u0633\u06cc\u0679 \u06a9\u0631\u0646\u0627<\/h2>\n<p>\u0627\u0633 \u0642\u062f\u0645 \u06a9\u0648 \u0645\u062a \u0686\u06be\u0648\u0691\u06cc\u06ba\u06d4 \u0645\u0639\u06cc\u0627\u0631 \u06a9\u06d2 \u0628\u063a\u06cc\u0631 \u0627\u0635\u0644\u0627\u062d \u0645\u062d\u0636 \u0627\u0646\u062f\u0627\u0632\u06c1 \u0644\u06af\u0627\u0646\u0627 \u06c1\u06d2\u06d4 \u06a9\u0633\u06cc \u0628\u06be\u06cc \u0686\u06cc\u0632 \u06a9\u0648 \u0686\u06be\u0648\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2\u060c \u062f\u0631\u062c \u0630\u06cc\u0644 \u06a9\u0645\u0627\u0646\u0688 \u06a9\u0648 \u0686\u0644\u0627\u0626\u06cc\u06ba:<\/p>\n<pre><code class=\"language-bash\"># Pull last month's AWS cost breakdown by service\n# This becomes your before number \u2014 save it somewhere\naws ce get-cost-and-usage \\\n  --time-period Start=\\((date -d 'last month' +%Y-%m-01),End=\\)(date +%Y-%m-01) \\\n  --granularity MONTHLY \\\n  --group-by Type=DIMENSION,Key=SERVICE \\\n  --metrics UnblendedCost \\\n  --query 'ResultsByTime[0].Groups[*].{Service:Keys[0],Cost:Metrics.UnblendedCost.Amount}' \\\n  --output table | sort -k3 -rn\n<\/code><\/pre>\n<p>\u067e\u06be\u0631 \u0622\u0624\u0679 \u067e\u0679 \u06a9\u0648 \u0627\u0633\u06a9\u0631\u06cc\u0646 \u0634\u0627\u0679 \u06a9\u0631\u06cc\u06ba\u06d4 \u0641\u0627\u0626\u0644 \u06a9\u0627 \u0646\u0627\u0645 \u0628\u062a\u0627\u0626\u06cc\u06ba <code>aws-baseline-YYYY-MM.png<\/code>. \u06c1\u0631 \u062a\u0631\u0645\u06cc\u0645 \u06a9\u06d2 \u0628\u0639\u062f\u060c \u0622\u067e \u0627\u0635\u0644 \u0628\u0686\u062a \u062f\u06cc\u06a9\u06be\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u0646 \u06a9\u0627 \u0645\u0648\u0627\u0632\u0646\u06c1 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0633\u06cc\u0631\u06cc\u0632 A \u06a9\u06cc \u0639\u0645\u0648\u0645\u06cc \u062e\u0631\u0627\u0628\u06cc \u0627\u0633 \u0637\u0631\u062d \u06c1\u06d2:<\/p>\n<table>\n<thead>\n<tr>\n<th>AWS \u062e\u062f\u0645\u0627\u062a<\/th>\n<th>\u0628\u0644 \u06a9\u0627 %<\/th>\n<th>\u0636\u0627\u0626\u0639 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0635\u0644\u0627\u062d\u06cc\u062a<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>EC2 (\u06a9\u0645\u067e\u06cc\u0648\u0679)<\/td>\n<td>45~55%<\/td>\n<td>\u0627\u0639\u0644\u06cc<\/td>\n<\/tr>\n<tr>\n<td>\u0688\u06cc\u0679\u0627 \u06a9\u06cc \u0645\u0646\u062a\u0642\u0644\u06cc<\/td>\n<td>15-20%<\/td>\n<td>\u0628\u06c1\u062a \u0627\u0639\u0644\u06cc<\/td>\n<\/tr>\n<tr>\n<td>\u0622\u0631 \u0688\u06cc \u0627\u06cc\u0633<\/td>\n<td>10-15%<\/td>\n<td>\u062f\u0631\u0645\u06cc\u0627\u0646\u06cc<\/td>\n<\/tr>\n<tr>\n<td>\u0627\u06cc \u0628\u06cc \u0627\u06cc\u0633<\/td>\n<td>8~12%<\/td>\n<td>\u062f\u0631\u0645\u06cc\u0627\u0646\u06cc<\/td>\n<\/tr>\n<tr>\n<td>\u06a9\u0644\u0627\u0624\u0688 \u0648\u0627\u0686<\/td>\n<td>3-6%<\/td>\n<td>\u062f\u0631\u0645\u06cc\u0627\u0646\u06cc<\/td>\n<\/tr>\n<tr>\n<td>\u0644\u0648\u0688 \u0628\u06cc\u0644\u0646\u0633\u0631<\/td>\n<td>3~5%<\/td>\n<td>\u06a9\u0645<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u0627\u0628 \u0622\u0626\u06cc\u06d2 \u06c1\u0631 \u0627\u06cc\u06a9 \u067e\u06cc\u0679\u0631\u0646 \u06a9\u0648 \u062f\u06cc\u06a9\u06be\u06cc\u06ba\u06d4<\/p>\n<h2 id=\"heading-pattern-1-the-new-hire-experiment-tax\">\u067e\u06cc\u0679\u0631\u0646 1: \u0646\u06cc\u0627 \u06c1\u0627\u0626\u0631\u0646\u06af \u062a\u062c\u0631\u0628\u0627\u062a\u06cc \u0679\u06cc\u06a9\u0633<\/h2>\n<p>\u0627\u0646\u062c\u06cc\u0646\u0626\u0631\u0646\u06af \u06a9\u06cc \u062a\u0645\u0627\u0645 \u0645\u0644\u0627\u0632\u0645\u062a\u0648\u06ba \u06a9\u0648 \u062a\u0631\u0642\u06cc \u06a9\u06d2 \u0645\u0627\u062d\u0648\u0644 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0645\u062a\u0648\u0642\u0639 \u06c1\u06d2\u06d4 \u0622\u067e \u062c\u0633 \u0686\u06cc\u0632 \u06a9\u06cc \u062a\u0648\u0642\u0639 \u0646\u06c1\u06cc\u06ba \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba \u0648\u06c1 \u06c1\u06d2 \u062c\u0648 \u06a9\u0633\u06cc \u062e\u0635\u0648\u0635\u06cc\u062a \u06a9\u06d2 \u062c\u0627\u0631\u06cc \u06c1\u0648\u0646\u06d2 \u06a9\u06d2 \u0628\u0639\u062f \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4 \u06a9\u0686\u06be \u0628\u06be\u06cc \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4<\/p>\n<p>\u0645\u0627\u062d\u0648\u0644 \u0686\u0644\u062a\u0627 \u0631\u06c1\u06d2 \u06af\u0627\u06d4 m5.xlarge \u06a9\u06d2 \u0644\u06cc\u06d2\u060c $(0.192\/hour) \u06a9\u06d2 \u0628\u06be\u0648\u0644\u06d2 \u06c1\u0648\u0626\u06d2 \u062a\u0631\u0642\u06cc\u0627\u062a\u06cc \u0645\u0627\u062d\u0648\u0644 \u06a9\u06cc \u0642\u06cc\u0645\u062a $138\/\u0645\u06c1\u06cc\u0646\u06c1 \u06c1\u06d2\u06d4 \u0627\u06cc\u06a9 \u0645\u0627\u062d\u0648\u0644 \u06a9\u0648 \u0628\u06be\u0648\u0644\u0646\u06d2 \u0648\u0627\u0644\u06d2 10 \u0627\u0646\u062c\u06cc\u0646\u0626\u0631\u0632 \u06a9\u06cc \u0644\u0627\u06af\u062a $1,380 \u0641\u06cc \u0645\u06c1\u06cc\u0646\u06c1 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0628\u0646\u06cc\u0627\u062f\u06cc \u0688\u06be\u0627\u0646\u0686\u06d2 \u06a9\u06cc \u0642\u06cc\u0645\u062a \u06c1\u06d2 \u062c\u0648 \u06a9\u0686\u06be \u0646\u06c1\u06cc\u06ba \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<p>\u06cc\u06c1 \u0646\u0645\u0648\u0646\u06c1 \u0633\u06cc\u0631\u06cc\u0632 A \u06a9\u06d2 \u0628\u0639\u062f \u062a\u06cc\u0632 \u06c1\u0648 \u062c\u0627\u062a\u0627 \u06c1\u06d2 \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u0645\u0644\u0627\u0632\u0645\u062a \u067e\u0631 \u06a9\u0627\u0645 \u062c\u0644\u062f\u06cc \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u06cc\u06a9 \u0646\u06cc\u0627 \u0627\u0646\u062c\u06cc\u0646\u0626\u0631 \u067e\u06cc\u0631 \u06a9\u0648 \u0634\u0627\u0645\u0644 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u060c EC2\u060c RDS\u060c \u0627\u0648\u0631 \u0688\u0648\u06cc\u0644\u067e\u0645\u0646\u0679 \u06a9\u0644\u0633\u0679\u0631 \u067e\u0631 \u0646\u0627\u0645 \u06a9\u06cc \u062c\u06af\u06c1 \u06a9\u0648 \u06af\u06be\u0645\u0627\u062a\u0627 \u06c1\u06d2\u060c \u062c\u0645\u0639\u06c1 \u062a\u06a9 \u062c\u06c1\u0627\u0632 \u06a9\u06cc \u062e\u0635\u0648\u0635\u06cc\u0627\u062a\u060c \u0627\u0648\u0631 \u0627\u06af\u0644\u06d2 \u0679\u06a9\u0679 \u067e\u0631 \u0686\u0644\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4 \u0645\u0627\u062d\u0648\u0644 \u06a9\u0633\u06cc \u06a9\u06d2 \u0631\u0627\u0688\u0627\u0631 \u067e\u0631 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 \u062a\u0631\u0642\u06cc\u0627\u062a\u06cc \u0648\u0633\u0627\u0626\u0644 \u06a9\u06d2 \u0644\u06cc\u06d2 \u06a9\u0648\u0626\u06cc \u0622\u0641 \u0628\u0648\u0631\u0688\u0646\u06af \u0639\u0645\u0644 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4<\/p>\n<p><strong>\u0641\u0636\u0644\u06c1 \u06a9\u06cc\u0633\u0627 \u0644\u06af\u062a\u0627 \u06c1\u06d2:<\/strong><\/p>\n<pre><code class=\"language-text\">Dev environment for Alice (feature\/payment-flow):\n  EC2 m5.xlarge \u2014 last CPU activity: 23 days ago\n  RDS db.t3.medium \u2014 last connection: 19 days ago\n  EKS namespace \u2014 last pod scheduled: 15 days ago\n  Monthly cost: $187\n  Status: running\n<\/code><\/pre>\n<p><strong>\u0627\u0633\u06d2 \u062a\u0644\u0627\u0634 \u06a9\u0631\u0646\u0627:<\/strong><\/p>\n<pre><code class=\"language-bash\"># Find EC2 instances with average CPU below 5% for the last 14 days\n# These are idle instances \u2014 candidates for shutdown or termination\naws cloudwatch get-metric-statistics \\\n  --namespace AWS\/EC2 \\\n  --metric-name CPUUtilization \\\n  --period 1209600 \\\n  --statistics Average \\\n  --start-time $(date -d '14 days ago' --iso-8601=seconds) \\\n  --end-time $(date --iso-8601=seconds) \\\n  --dimensions Name=InstanceId,Value=YOUR_INSTANCE_ID \\\n  --query 'Datapoints[*].{Average:Average}' \\\n  --output table\n<\/code><\/pre>\n<h3 id=\"heading-the-fix-an-automatic-idle-instance-stopper\">\u062f\u0631\u0633\u062a \u06a9\u0631\u06cc\u06ba &#8211; \u062e\u0648\u062f\u06a9\u0627\u0631 \u0628\u06cc\u06a9\u0627\u0631 \u0645\u062b\u0627\u0644 \u06a9\u0648 \u0631\u0648\u06a9\u0646\u06d2 \u0648\u0627\u0644\u0627 \u0622\u0644\u06c1:<\/h3>\n<p>\u0646\u06cc\u0686\u06d2 \u0644\u06cc\u0645\u0628\u0688\u0627 \u06c1\u0631 \u0631\u0627\u062a 22:00 \u0628\u062c\u06d2 \u0686\u0644\u062a\u0627 \u06c1\u06d2\u06d4 \u062a\u0645\u0627\u0645 \u0679\u06cc\u06af \u0634\u062f\u06c1 EC2 \u0645\u062b\u0627\u0644\u0648\u06ba \u06a9\u0648 \u0686\u06cc\u06a9 \u06a9\u0631\u06cc\u06ba\u06d4 <code>Environment=dev<\/code> \u06af\u0632\u0634\u062a\u06c1 7 \u062f\u0646\u0648\u06ba \u06a9\u06d2 \u0644\u06cc\u06d2 CPU \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644\u06d4 \u06a9\u0648\u0626\u06cc \u0628\u06be\u06cc \u0645\u062b\u0627\u0644 \u062c\u06c1\u0627\u06ba \u0627\u0648\u0633\u0637 5% \u0633\u06d2 \u0646\u06cc\u0686\u06d2 \u0622\u062c\u0627\u062a\u06cc \u06c1\u06d2 \u062e\u0648\u062f \u0628\u062e\u0648\u062f \u0631\u0648\u06a9 \u062f\u06cc \u062c\u0627\u062a\u06cc \u06c1\u06d2\u06d4 \u0628\u0646\u062f \u06c1\u0648\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2\u060c \u0627\u0646\u062c\u06cc\u0646\u0626\u0631 \u06a9\u06d2 \u0627\u06cc \u0645\u06cc\u0644 \u067e\u0631 \u0627\u06cc\u06a9 SNS \u0627\u0637\u0644\u0627\u0639 \u0628\u06be\u06cc\u062c\u06cc \u062c\u0627\u062a\u06cc \u06c1\u06d2\u060c \u062c\u0633 \u0633\u06d2 \u0627\u0646\u062c\u06cc\u0646\u0626\u0631 \u06a9\u0648 \u06cc\u06c1 \u0634\u0627\u0645\u0644 \u06a9\u0631 \u06a9\u06d2 \u0627\u0633\u06d2 \u0627\u0648\u0648\u0631 \u0631\u0627\u0626\u0688 \u06a9\u0631\u0646\u06d2 \u06a9\u0627 \u0645\u0648\u0642\u0639 \u0645\u0644\u062a\u0627 \u06c1\u06d2: <code>KeepAlive=true<\/code> \u0679\u06cc\u06af<\/p>\n<pre><code class=\"language-python\"># idle_environment_stopper.py\n# Deploy as a Lambda function triggered by EventBridge on schedule: cron(0 22 * * ? *)\n# This stops idle dev environments before they run through the night and weekend\n\nimport boto3\nfrom datetime import datetime, timedelta, timezone\n\nec2 = boto3.client('ec2')\ncloudwatch = boto3.client('cloudwatch')\nsns = boto3.client('sns')\n\nIDLE_CPU_THRESHOLD = 5.0      # Stop instances below this average CPU %\nIDLE_DAYS = 7                  # Look back 7 days of CloudWatch data\nSNS_TOPIC_ARN = 'arn:aws:sns:us-east-1:YOUR_ACCOUNT:dev-environment-alerts'\n\ndef get_average_cpu(instance_id):\n    \"\"\"Return the 7-day average CPU utilisation for an EC2 instance.\"\"\"\n    response = cloudwatch.get_metric_statistics(\n        Namespace=\"AWS\/EC2\",\n        MetricName=\"CPUUtilization\",\n        Dimensions=[{'Name': 'InstanceId', 'Value': instance_id}],\n        StartTime=datetime.now(timezone.utc) - timedelta(days=IDLE_DAYS),\n        EndTime=datetime.now(timezone.utc),\n        Period=604800,  # One 7-day period\n        Statistics=['Average']\n    )\n    datapoints = response.get('Datapoints', [])\n    return datapoints[0]['Average'] if datapoints else 0.0\n\ndef lambda_handler(event, context):\n    \"\"\"Stop idle dev instances and notify their owners.\"\"\"\n    \n    # Find all running dev instances\n    response = ec2.describe_instances(\n        Filters=[\n            {'Name': 'instance-state-name', 'Values': ['running']},\n            {'Name': 'tag:Environment', 'Values': ['dev', 'development']},\n        ]\n    )\n\n    stopped = []\n    skipped = []\n\n    for reservation in response['Reservations']:\n        for instance in reservation['Instances']:\n            instance_id = instance['InstanceId']\n            tags = {t['Key']: t['Value'] for t in instance.get('Tags', [])}\n\n            # Skip instances explicitly marked to keep alive\n            if tags.get('KeepAlive', '').lower() == 'true':\n                skipped.append(instance_id)\n                continue\n\n            avg_cpu = get_average_cpu(instance_id)\n\n            if avg_cpu < IDLE_CPU_THRESHOLD:\n                # Notify the owner before stopping\n                owner = tags.get('Owner', 'unknown')\n                sns.publish(\n                    TopicArn=SNS_TOPIC_ARN,\n                    Subject=f'Dev environment stopped: {instance_id}',\n                    Message=(\n                        f'Instance {instance_id} (Owner: {owner}) had {avg_cpu:.1f}% average CPU '\n                        f'over {IDLE_DAYS} days and has been stopped.\\n\\n'\n                        f'To prevent this, add the tag: KeepAlive=true\\n'\n                        f'To restart: aws ec2 start-instances --instance-ids {instance_id}'\n                    )\n                )\n                ec2.stop_instances(InstanceIds=[instance_id])\n                stopped.append({'id': instance_id, 'owner': owner, 'avg_cpu': avg_cpu})\n\n    print(f\"Stopped {len(stopped)} idle instances. Skipped {len(skipped)} keep-alive instances.\")\n    return {'stopped': stopped, 'skipped': skipped}\n<\/code><\/pre>\n<p><strong>\u0645\u0627\u06c1\u0627\u0646\u06c1 \u0628\u0686\u062a:<\/strong> \\(1,000~\\)2,000 \u0679\u06cc\u0645 \u06a9\u06d2 \u0633\u0627\u0626\u0632 \u0627\u0648\u0631 \u067e\u06cc\u0679\u0631\u0646 \u067e\u0631 \u0639\u0645\u0644 \u062f\u0631\u0622\u0645\u062f \u06a9\u06cc \u0645\u062f\u062a \u06a9\u06d2 \u0644\u062d\u0627\u0638 \u0633\u06d2\u06d4<\/p>\n<h2 id=\"heading-pattern-2-staging-environment-proliferation\">\u067e\u06cc\u0679\u0631\u0646 2: \u0627\u0633\u0679\u06cc\u062c\u0646\u06af \u0645\u0627\u062d\u0648\u0644 \u06a9\u0648 \u067e\u06be\u06cc\u0644\u0627\u0626\u06cc\u06ba\u06d4<\/h2>\n<p>\u0633\u0679\u06cc\u062c\u0646\u06af \u0627\u06cc\u06a9 \u0645\u0627\u062d\u0648\u0644 \u0633\u06d2 \u0634\u0631\u0648\u0639 \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u06d4 \u067e\u06be\u0631 \u0641\u0631\u0646\u0679 \u0627\u06cc\u0646\u0688 \u0679\u06cc\u0645 \u06a9\u0648 \u0627\u067e\u0646\u06cc \u0679\u06cc\u0645 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u0648\u062a\u06cc \u06c1\u06d2 \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u0628\u06cc\u06a9 \u0627\u06cc\u0646\u0688 \u0679\u06cc\u0645 \u0627\u0646 \u06a9\u0648 \u062a\u0648\u0691\u062a\u06cc \u0631\u06c1\u062a\u06cc \u06c1\u06d2\u06d4 \u0627\u06cc\u0645 \u0627\u06cc\u0644 \u0679\u06cc\u0645\u0648\u06ba \u06a9\u0648 \u067e\u06be\u0631 \u0627\u0644\u06af \u062a\u06be\u0644\u06af \u06a9\u0645\u067e\u06cc\u0648\u0679 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2\u06d4 \u067e\u06be\u0631 QA \u06a9\u0648 \u0627\u0646\u0636\u0645\u0627\u0645 \u06a9\u06cc \u062c\u0627\u0646\u0686 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u06a9 \u0645\u0633\u062a\u062d\u06a9\u0645 \u0645\u0627\u062d\u0648\u0644 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2\u06d4<\/p>\n<p>\u06c1\u0645\u0627\u0631\u06d2 \u067e\u0627\u0633 \u0686\u0627\u0631 \u0633\u0679\u06cc\u062c\u0646\u06af \u0645\u0627\u062d\u0648\u0644 \u06c1\u06cc\u06ba \u062c\u0648 \u06a9\u0633\u06cc \u06a9\u06d2 \u0646\u0648\u0679\u0633 \u0644\u06cc\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 24\/7 \u0686\u0644 \u0631\u06c1\u06d2 \u06c1\u06cc\u06ba\u06d4 \u06c1\u0631 \u0627\u06cc\u06a9 \u062f\u0646 \u0645\u06cc\u06ba 16 \u06af\u06be\u0646\u0679\u06d2 \u0628\u06cc\u06a9\u0627\u0631 \u0631\u06c1\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0645\u0627\u062d\u0648\u0644 \u0645\u06cc\u06ba \u0641\u0636\u0644\u06c1 \u0645\u0648\u062c\u0648\u062f \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0634\u06cc\u0688\u0648\u0644 \u067e\u0631 \u06c1\u06d2\u06d4 \u0627\u0633\u0679\u06cc\u062c\u0646\u06af \u0645\u0627\u062d\u0648\u0644 \u06a9\u0648 \u0635\u0628\u062d 3 \u0628\u062c\u06d2 \u0686\u0644\u0627\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4<\/p>\n<p><strong>\u0641\u0636\u0644\u06c1 \u06a9\u06cc\u0633\u0627 \u0644\u06af\u062a\u0627 \u06c1\u06d2:<\/strong><\/p>\n<pre><code class=\"language-text\">staging-frontend:   $250\/month   Used: Mon-Fri 09:00-18:00\nstaging-backend:    $250\/month   Used: Mon-Fri 09:00-18:00\nstaging-ml:         $250\/month   Used: Mon-Fri 10:00-17:00\nstaging-qa:         $250\/month   Used: Mon-Fri 09:00-17:00\nTotal:            $1,000\/month   Running: 24 hours\/day, 7 days\/week\nActual usage:        ~35%        You are paying 100%\n<\/code><\/pre>\n<p><strong>\u0627\u0633\u06d2 \u062a\u0644\u0627\u0634 \u06a9\u0631\u0646\u0627:<\/strong><\/p>\n<pre><code class=\"language-bash\"># Find EKS node groups tagged as staging with their current status\naws eks list-nodegroups --cluster-name your-cluster-name --output table\n\n# Check EC2 instances tagged staging and their launch time\n# Any instance running > 30 days with no weekend stop schedule is a candidate\naws ec2 describe-instances \\\n  --filters \"Name=tag:Environment,Values=staging\" \"Name=instance-state-name,Values=running\" \\\n  --query 'Reservations[*].Instances[*].{ID:InstanceId,Type:InstanceType,Launch:LaunchTime}' \\\n  --output table\n<\/code><\/pre>\n<h3 id=\"heading-the-fix-scheduled-start-and-stop-with-aws-instance-scheduler\">\u062f\u0631\u0633\u062a \u06a9\u0631\u06cc\u06ba - AWS \u0627\u0646\u0633\u0679\u06cc\u0646\u0633 \u0634\u06cc\u0688\u06cc\u0648\u0644\u0631 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u0637\u06d2 \u0634\u062f\u06c1 \u0622\u063a\u0627\u0632 \u0627\u0648\u0631 \u0631\u06a9 \u062c\u0627\u062a\u0627 \u06c1\u06d2:<\/h3>\n<pre><code class=\"language-bash\"># Option 1: Tag-based scheduling with AWS Instance Scheduler (CloudFormation solution)\n# Add these tags to your staging EC2 instances and RDS clusters:\n# Schedule: office-hours\n# This starts instances at 08:00 and stops them at 20:00 Mon-Fri\n# Weekend: completely off\n\n# Option 2: Quick Lambda-based solution \u2014 stop all staging at 20:00 weekdays\naws events put-rule \\\n  --schedule-expression \"cron(0 20 ? * MON-FRI *)\" \\\n  --name stop-staging-environments \\\n  --state ENABLED\n\n# The stop Lambda \u2014 same pattern as Pattern 1 but targets staging tag\n# Add a corresponding start rule at 07:30 Mon-Fri\n<\/code><\/pre>\n<h3 id=\"heading-consolidation-in-addition-to-scheduling\">\u0627\u0646\u0636\u0645\u0627\u0645 \u06a9\u0648 \u0634\u06cc\u0688\u0648\u0644\u0646\u06af \u0645\u06cc\u06ba \u0634\u0627\u0645\u0644 \u06a9\u06cc\u0627 \u06af\u06cc\u0627\u06d4<\/h3>\n<p>\u0627\u06af\u0631 \u0622\u067e \u06a9\u0627 \u0641\u0631\u0646\u0679 \u0627\u06cc\u0646\u0688 \u0627\u0648\u0631 \u0628\u06cc\u06a9 \u0627\u06cc\u0646\u0688 \u0627\u06cc\u06a9 \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u0627\u0633\u06a9\u06cc\u0645\u0627 \u06a9\u0627 \u0627\u0634\u062a\u0631\u0627\u06a9 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0646\u0627\u0645 \u06a9\u06cc \u062c\u06af\u06c1 \u06a9\u06cc \u0633\u0637\u062d \u06a9\u06cc \u062a\u0646\u06c1\u0627\u0626\u06cc \u0627\u0646\u06c1\u06cc\u06ba \u0627\u06cc\u06a9 \u0645\u0634\u062a\u0631\u06a9\u06c1 \u0633\u0679\u06cc\u062c\u0646\u06af \u0645\u0627\u062d\u0648\u0644 \u0645\u06cc\u06ba \u0645\u0636\u0628\u0648\u0637 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4 \u0645\u0634\u062a\u0631\u06a9\u06c1 \u0644\u0627\u06af\u062a \u062f\u0648 \u0627\u0644\u06af \u0627\u0644\u06af \u0645\u0627\u062d\u0648\u0644 \u0633\u06d2 \u06a9\u0645 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-yaml\"># One shared staging cluster with namespace isolation\n# frontend-staging and backend-staging share nodes via Karpenter\n# but are isolated by namespace-level network policies\napiVersion: v1\nkind: Namespace\nmetadata:\n  name: staging-frontend\n  labels:\n    environment: staging\n    team: frontend\n---\napiVersion: v1\nkind: Namespace\nmetadata:\n  name: staging-backend\n  labels:\n    environment: staging\n    team: backend\n<\/code><\/pre>\n<p><strong>\u0631\u06cc\u0627\u0636\u06cc:<\/strong><\/p>\n<table>\n<thead>\n<tr>\n<th>\u0633\u06a9\u0631\u067e\u0679<\/th>\n<th>\u0645\u0627\u06c1\u0627\u0646\u06c1 \u0644\u0627\u06af\u062a<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>\u067e\u0686\u06be\u0644\u0627: 4 \u0645\u0627\u062d\u0648\u0644\u060c \u06c1\u0645\u06cc\u0634\u06c1 \u0622\u0646<\/td>\n<td>$1,000<\/td>\n<\/tr>\n<tr>\n<td>\u0628\u0639\u062f: \u062f\u0648 \u0645\u0631\u0628\u0648\u0637 \u0645\u0627\u062d\u0648\u0644\u060c \u0635\u0631\u0641 \u062f\u0641\u062a\u0631\u06cc \u0627\u0648\u0642\u0627\u062a<\/td>\n<td>$290<\/td>\n<\/tr>\n<tr>\n<td>\u0645\u0627\u06c1\u0627\u0646\u06c1 \u0628\u0686\u062a<\/td>\n<td>$710<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2 id=\"heading-pattern-3-the-nat-gateway-tax\">\u067e\u06cc\u0679\u0631\u0646 3: NAT \u06af\u06cc\u0679 \u0648\u06d2 \u0679\u06cc\u06a9\u0633<\/h2>\n<p>NAT \u06af\u06cc\u0679 \u0648\u06cc\u0632 \u06c1\u0631 AWS \u0628\u0644 \u0645\u06cc\u06ba \u0633\u0628 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u0645\u0633\u062a\u0642\u0644 \u0637\u0648\u0631 \u067e\u0631 \u06a9\u0645 \u0642\u06cc\u0645\u062a \u0648\u0627\u0644\u06cc \u0622\u0626\u0679\u0645 \u06c1\u06cc\u06ba \u062c\u0648 \u0645\u06cc\u06ba \u0622\u0688\u0679 \u06a9\u0631\u062a\u0627 \u06c1\u0648\u06ba\u06d4 \u0622\u067e \u0633\u06d2 $0.045 \u0641\u06cc GB \u0688\u06cc\u0679\u0627 \u067e\u0631\u0648\u0633\u06cc\u0633 \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u060c \u0627\u0648\u0631 EKS \u06a9\u0644\u0633\u0679\u0631\u0632 \u0645\u06cc\u06ba \u0641\u0637\u0631\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0627\u06cc\u06a9 \u0679\u0646 \u0679\u0631\u06cc\u0641\u06a9 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>ECR \u0633\u06d2 \u06a9\u0646\u0679\u06cc\u0646\u0631 \u06a9\u06cc \u062a\u0635\u0627\u0648\u06cc\u0631 \u06a9\u06be\u06cc\u0646\u0686\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u062a\u0645\u0627\u0645 \u067e\u0648\u0688 NAT \u06af\u06cc\u0679 \u0648\u06d2 \u0633\u06d2 \u06af\u0632\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u062a\u0645\u0627\u0645 \u0644\u06cc\u0645\u0628\u0688\u0627 S3 \u06a9\u0648 \u0644\u06a9\u06be\u062a\u06d2 \u06c1\u06cc\u06ba NAT \u06af\u06cc\u0679 \u0648\u06d2 \u0633\u06d2 \u06af\u0632\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u06a9\u0648\u0626\u06cc \u0628\u06be\u06cc \u0633\u0631\u0648\u0633 \u062c\u0648 SQS \u06a9\u0648 \u067e\u0648\u0644 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u060c DynamoDB \u0633\u06d2 \u0633\u0648\u0627\u0644 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u060c \u06cc\u0627 Secrets Manager API \u06a9\u0648 \u06a9\u0627\u0644 \u06a9\u0631\u062a\u06cc \u06c1\u06d2 NAT \u06af\u06cc\u0679 \u0648\u06d2 \u0633\u06d2 \u06af\u0632\u0631\u062a\u06cc \u06c1\u06d2 \u062c\u0628 \u062a\u06a9 \u06a9\u06c1 \u0622\u067e VPC \u0627\u06cc\u0646\u0688 \u067e\u0648\u0627\u0626\u0646\u0679 \u06a9\u0646\u0641\u06cc\u06af\u0631 \u0646\u06c1\u06cc\u06ba \u06a9\u0631\u062a\u06d2\u06d4<\/p>\n<p>VPC \u0627\u06cc\u0646\u0688 \u067e\u0648\u0627\u0626\u0646\u0679\u0633 \u0622\u067e \u06a9\u06d2 VPC \u0627\u0648\u0631 AWS \u0633\u0631\u0648\u0633\u0632 \u06a9\u06d2 \u062f\u0631\u0645\u06cc\u0627\u0646 \u0627\u06cc\u06a9 \u0646\u062c\u06cc \u06a9\u0646\u06a9\u0634\u0646 \u0628\u0646\u0627\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0679\u0631\u06cc\u0641\u06a9 \u06a9\u0648 NAT \u06af\u06cc\u0679 \u0648\u06d2 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 AWS \u0631\u06cc\u0691\u06be \u06a9\u06cc \u06c1\u0688\u06cc \u0633\u06d2 \u0631\u0648\u0679 \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4 \u0688\u06cc\u0679\u0627 \u0679\u0631\u0627\u0646\u0633\u0641\u0631 \u0645\u0641\u062a \u06c1\u0648 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p><strong>\u0641\u0636\u0644\u06c1 \u06a9\u06cc\u0633\u0627 \u0644\u06af\u062a\u0627 \u06c1\u06d2:<\/strong><\/p>\n<pre><code class=\"language-bash\"># Run this to see your current NAT Gateway data processing bill\naws ce get-cost-and-usage \\\n  --time-period Start=\\((date -d 'last month' +%Y-%m-01),End=\\)(date +%Y-%m-01) \\\n  --granularity MONTHLY \\\n  --filter '{\n    \"Dimensions\": {\n      \"Key\": \"USAGE_TYPE\",\n      \"Values\": [\"NatGateway-Bytes\", \"NatGateway-Hours\"]\n    }\n  }' \\\n  --metrics UnblendedCost \\\n  --query 'ResultsByTime[0].Total.UnblendedCost.Amount' \\\n  --output text\n<\/code><\/pre>\n<p>\u0627\u06af\u0631 \u06cc\u06c1 \u062a\u0639\u062f\u0627\u062f \\(200) \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u06c1\u06d2\u060c \u062a\u0648 \u0622\u067e \u06a9\u06d2 \u067e\u0627\u0633 NAT \u06af\u06cc\u0679 \u0648\u06d2 \u06a9\u0627 \u0645\u0633\u0626\u0644\u06c1 \u06c1\u06d2\u06d4 EKS \u0686\u0644\u0627\u0646\u06d2 \u0648\u0627\u0644\u06cc \u0632\u06cc\u0627\u062f\u06c1 \u062a\u0631 \u0633\u06cc\u0631\u06cc\u0632 A \u06a9\u0645\u067e\u0646\u06cc\u0648\u06ba \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u0627\u0633 \u06a9\u06cc \u0642\u06cc\u0645\u062a \\)800 \u0627\u0648\u0631 $6,000 \u06a9\u06d2 \u062f\u0631\u0645\u06cc\u0627\u0646 \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-the-fix-vpc-endpoints-for-the-four-highest-traffic-aws-services\">\u0627\u0635\u0644\u0627\u062d\u0627\u062a \u2014 \u0686\u0627\u0631 \u0627\u0639\u0644\u06cc \u062a\u0631\u06cc\u0646 \u0679\u0631\u06cc\u0641\u06a9 AWS \u0633\u0631\u0648\u0633\u0632 \u06a9\u06d2 \u0644\u06cc\u06d2 VPC \u0627\u06cc\u0646\u0688 \u067e\u0648\u0627\u0626\u0646\u0679\u0633:<\/h3>\n<pre><code class=\"language-bash\"># Get your VPC ID and route table ID first\nVPC_ID=$(aws ec2 describe-vpcs \\\n  --filters \"Name=tag:Name,Values=your-vpc-name\" \\\n  --query 'Vpcs[0].VpcId' --output text)\n\nROUTE_TABLE_ID=$(aws ec2 describe-route-tables \\\n  --filters \"Name=vpc-id,Values=$VPC_ID\" \"Name=association.main,Values=true\" \\\n  --query 'RouteTables[0].RouteTableId' --output text)\n\n# S3 gateway endpoint \u2014 free to create, eliminates all S3 NAT charges\naws ec2 create-vpc-endpoint \\\n  --vpc-id $VPC_ID \\\n  --service-name com.amazonaws.us-east-1.s3 \\\n  --route-table-ids $ROUTE_TABLE_ID\n\n# DynamoDB gateway endpoint \u2014 also free\naws ec2 create-vpc-endpoint \\\n  --vpc-id $VPC_ID \\\n  --service-name com.amazonaws.us-east-1.dynamodb \\\n  --route-table-ids $ROUTE_TABLE_ID\n\n# ECR API endpoint \u2014 eliminates NAT charges on every container pull\naws ec2 create-vpc-endpoint \\\n  --vpc-id $VPC_ID \\\n  --vpc-endpoint-type Interface \\\n  --service-name com.amazonaws.us-east-1.ecr.api \\\n  --subnet-ids $(aws ec2 describe-subnets \\\n    --filters \"Name=vpc-id,Values=$VPC_ID\" \"Name=tag:Tier,Values=private\" \\\n    --query 'Subnets[*].SubnetId' --output text)\n\n# ECR Docker endpoint \u2014 required alongside ECR API for image pulls\naws ec2 create-vpc-endpoint \\\n  --vpc-id $VPC_ID \\\n  --vpc-endpoint-type Interface \\\n  --service-name com.amazonaws.us-east-1.ecr.dkr \\\n  --subnet-ids $(aws ec2 describe-subnets \\\n    --filters \"Name=vpc-id,Values=$VPC_ID\" \"Name=tag:Tier,Values=private\" \\\n    --query 'Subnets[*].SubnetId' --output text)\n<\/code><\/pre>\n<p>\u062c\u0628 \u0622\u067e \u0627\u067e\u0646\u06d2 CFO \u06a9\u0648 \u0627\u0633 \u06a9\u06cc \u0648\u0636\u0627\u062d\u062a \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u062a\u0648 \u0627\u0633\u06d2 NAT \u0679\u06cc\u06a9\u0633 \u06a9\u06c1\u06cc\u06ba\u06d4 \u0648\u06c1 \u0679\u06cc\u06a9\u0633 \u06a9\u0648 \u0633\u0645\u062c\u06be\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \"\u06c1\u0645 \u0627\u0646\u062f\u0631\u0648\u0646\u06cc \u0646\u06cc\u0679 \u0648\u0631\u06a9 \u0679\u0631\u06cc\u0641\u06a9 \u06a9\u06d2 \u0644\u06cc\u06d2 $0.045\/GB \u06a9\u0627 \u0679\u06cc\u06a9\u0633 \u0627\u062f\u0627 \u06a9\u0631 \u0631\u06c1\u06d2 \u06c1\u06cc\u06ba \u062c\u0633\u06d2 30 \u0645\u0646\u0679 \u0645\u06cc\u06ba \u06c1\u0679\u0627\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\" \u06cc\u06c1 \"\u0688\u06cc\u0679\u0627 \u067e\u0631\u0648\u0633\u06cc\u0633\u0646\u06af \u0628\u0627\u0626\u0679\u0633\" \u0633\u06d2 \u0628\u06c1\u062a\u0631 \u06c1\u06d2\u06d4<\/p>\n<p><strong>\u0645\u0627\u06c1\u0627\u0646\u06c1 \u0628\u0686\u062a:<\/strong> \\(2,000~\\)8,000 (\u06a9\u0646\u0679\u06cc\u0646\u0631 \u06a9\u06cc \u0628\u0627\u0632\u06cc\u0627\u0641\u062a \u06a9\u06cc \u0641\u0631\u06cc\u06a9\u0648\u0626\u0646\u0633\u06cc \u0627\u0648\u0631 S3 \u06a9\u06d2 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u067e\u0631 \u0645\u0646\u062d\u0635\u0631 \u06c1\u06d2)<\/p>\n<h2 id=\"heading-pattern-4-the-savings-plan-timing-mistake\">\u067e\u06cc\u0679\u0631\u0646 4: \u0622\u067e \u06a9\u06d2 \u0628\u0686\u062a \u06a9\u06d2 \u0645\u0646\u0635\u0648\u0628\u06d2 \u0645\u06cc\u06ba \u0648\u0642\u062a \u06a9\u06cc \u063a\u0644\u0637\u06cc\u0627\u06ba<\/h2>\n<p>\u0628\u0686\u062a \u06a9\u0627 \u0645\u0646\u0635\u0648\u0628\u06c1 30-70% \u0631\u0639\u0627\u06cc\u062a \u06a9\u06d2 \u0639\u0648\u0636 1-3 \u0633\u0627\u0644 \u06a9\u06d2 \u0644\u06cc\u06d2 AWS \u06a9\u0645\u067e\u06cc\u0648\u0679 \u067e\u0631 \u0641\u06cc \u06af\u06be\u0646\u0679\u06c1 \u0627\u06cc\u06a9 \u0645\u0642\u0631\u0631\u06c1 \u0631\u0642\u0645 \u062e\u0631\u0686 \u06a9\u0631\u0646\u06d2 \u06a9\u0627 \u0639\u06c1\u062f \u06c1\u06d2\u06d4 \u0631\u06cc\u0627\u0636\u06cc \u062f\u0644\u0686\u0633\u067e \u06c1\u06d2\u06d4 \u0679\u0627\u0626\u0645\u0646\u06af \u0648\u06c1 \u06c1\u0648\u062a\u06cc \u06c1\u06d2 \u062c\u06c1\u0627\u06ba \u0679\u06cc\u0645 \u063a\u0644\u0637 \u06c1\u0648 \u062c\u0627\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<p>\u062c\u0628 \u0622\u067e \u06a9\u06d2 \u0628\u0644 \u0628\u0691\u06d2 \u06c1\u0648 \u062c\u0627\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u062a\u0648 \u0622\u067e \u06a9\u06cc \u067e\u06c1\u0644\u06cc \u062c\u0628\u0644\u062a \u06a9\u0627 \u0627\u0631\u062a\u06a9\u0627\u0628 \u06a9\u0631\u0646\u0627 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4 \u0628\u0686\u062a \u06a9\u0627 \u0645\u0646\u0635\u0648\u0628\u06c1 \u062e\u0631\u06cc\u062f\u06cc\u06ba\u060c \u0627\u067e\u0646\u06d2 \u0628\u0644 \u06a9\u0645 \u06a9\u0631\u06cc\u06ba \u0627\u0648\u0631 \u0627\u067e\u0646\u06d2 CFO \u06a9\u0648 \u062f\u06a9\u06be\u0627\u0626\u06cc\u06ba\u06d4 \u0645\u0633\u0626\u0644\u06c1: \u0627\u06af\u0631 \u0622\u067e \u067e\u06c1\u0644\u06d2 \u0627\u0633\u06a9\u06cc\u0644 \u0646\u06c1\u06cc\u06ba \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u062a\u0648 \u0622\u067e \u0631\u0639\u0627\u06cc\u062a\u06cc \u0642\u06cc\u0645\u062a \u067e\u0631 \u0641\u0636\u0644\u06c1 \u06a9\u06cc \u0627\u062f\u0627\u0626\u06cc\u06af\u06cc \u06a9\u0627 \u0639\u06c1\u062f \u06a9\u0631 \u0631\u06c1\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0627\u06af\u0631 \u0622\u067e \u0628\u0639\u062f \u0645\u06cc\u06ba \u0633\u0627\u0626\u0632 \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u062a\u0648 \u0622\u067e \u06a9\u06d2 \u0627\u0635\u0644 \u0627\u062e\u0631\u0627\u062c\u0627\u062a \u0622\u067e \u06a9\u06cc \u06a9\u0645\u0679\u0688 \u0631\u0642\u0645 \u0633\u06d2 \u06a9\u0645 \u06c1\u0648\u06ba \u06af\u06d2\u060c \u0627\u0648\u0631 \u0622\u067e \u0627\u0633 \u06a9\u0645\u067e\u06cc\u0648\u0679 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u062f\u0627\u0626\u06cc\u06af\u06cc \u06a9\u0631\u06cc\u06ba \u06af\u06d2 \u062c\u0648 \u0622\u067e \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u0646\u06c1\u06cc\u06ba \u06a9\u0631 \u0631\u06c1\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p><strong>\u063a\u0644\u0637 \u062d\u06a9\u0645 \u06c1\u06d2:<\/strong><\/p>\n<pre><code class=\"language-text\">Step 1: AWS bill is $100,000\/month\nStep 2: Buy $70,000\/hour Savings Plan commitment\nStep 3: Rightsize instances \u2014 actual spend drops to $60,000\nStep 4: Savings Plan covers \\(70,000 but you only use \\)60,000\nStep 5: You pay $28,000\/month for compute you do not use\n         (Savings Plan discount applied to the overage)\n         \nNet result: You locked in waste for 12 months\n<\/code><\/pre>\n<p><strong>\u0635\u062d\u06cc\u062d \u062a\u0631\u062a\u06cc\u0628 \u06cc\u06c1 \u06c1\u06d2:<\/strong><\/p>\n<pre><code class=\"language-text\">Step 1: Rightsize instances \u2014 spend drops from \\(100,000 to \\)60,000\nStep 2: Add Spot for staging \u2014 spend drops from \\(60,000 to \\)45,000\nStep 3: Migrate compatible workloads to Graviton \u2014 spend drops to $36,000\nStep 4: NOW buy a Savings Plan covering $25,000\/month (70% of steady-state)\nStep 5: Effective monthly cost: \\(12,500 for committed + \\)11,000 on-demand = $23,500\n\nNet result: $76,500\/month saved versus the original bill\n<\/code><\/pre>\n<p>\u06cc\u06c1 \u06a9\u06cc\u0633\u06d2 \u062c\u0627\u0646\u06cc\u06ba \u06a9\u06c1 \u0622\u067e \u06a9\u0648 \u06a9\u06cc\u0627 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2:<\/p>\n<pre><code class=\"language-bash\"># View your last 30 days of EC2 On-Demand spend\n# This is your rightsized baseline \u2014 what you actually use after optimisation\naws ce get-cost-and-usage \\\n  --time-period Start=\\((date -d '30 days ago' +%Y-%m-%d),End=\\)(date +%Y-%m-%d) \\\n  --granularity DAILY \\\n  --filter '{\n    \"And\": [\n      {\"Dimensions\": {\"Key\": \"SERVICE\", \"Values\": [\"Amazon Elastic Compute Cloud - Compute\"]}},\n      {\"Dimensions\": {\"Key\": \"PURCHASE_TYPE\", \"Values\": [\"On-Demand\"]}}\n    ]\n  }' \\\n  --metrics UnblendedCost \\\n  --query 'ResultsByTime[*].{Date:TimePeriod.Start,Cost:Total.UnblendedCost.Amount}' \\\n  --output table\n\n# Get AWS's own Savings Plan recommendation based on your usage\naws savingsplans get-savings-plans-purchase-recommendation \\\n  --savings-plans-type COMPUTE_SP \\\n  --term-in-years ONE_YEAR \\\n  --payment-option NO_UPFRONT \\\n  --lookback-period-in-days THIRTY_DAYS\n<\/code><\/pre>\n<p>\u0639\u0627\u0645 \u0637\u0648\u0631 \u067e\u0631\u060c \u06c1\u0645 \u0627\u0635\u0644\u0627\u062d \u06a9\u06d2 \u0628\u0639\u062f 60-70% \u0645\u0633\u062a\u062d\u06a9\u0645 \u0622\u0646 \u0688\u06cc\u0645\u0627\u0646\u0688 \u062e\u0631\u0686 \u06a9\u0627 \u0648\u0639\u062f\u06c1 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 30-40% \u0644\u0686\u06a9\u062f\u0627\u0631 \u0631\u06c1\u0646\u06d2 \u062f\u06cc\u06ba\u06d4 \u063a\u06cc\u0631 \u0627\u0635\u0644\u0627\u062d \u0634\u062f\u06c1 \u0628\u06cc\u0633 \u0644\u0627\u0626\u0646 \u06a9\u0627 \u0639\u06c1\u062f \u0646\u06c1 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<p><strong>\u0645\u0627\u06c1\u0627\u0646\u06c1 \u0628\u0686\u062a:<\/strong> \\(5,000~\\)15,000 (\u06a9\u0645\u067e\u06cc\u0648\u0679 \u06a9\u06d2 \u0627\u062e\u0631\u0627\u062c\u0627\u062a \u067e\u0631 \u0645\u0646\u062d\u0635\u0631 \u06c1\u06d2) \u06cc\u06c1 \u0648\u06c1 \u067e\u06cc\u0679\u0631\u0646 \u06c1\u06d2 \u062c\u0633 \u0645\u06cc\u06ba \u0633\u0628 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u0633\u0646\u06af\u0644 \u0679\u0627\u0633\u06a9 ROI \u06c1\u0648\u062a\u0627 \u06c1\u06d2 \u062c\u0628 \u0635\u062d\u06cc\u062d \u062a\u0631\u062a\u06cc\u0628 \u062f\u06cc \u062c\u0627\u0626\u06d2\u06d4<\/p>\n<h2 id=\"heading-pattern-5-cross-az-data-transfer\">\u067e\u06cc\u0679\u0631\u0646 5: AZs \u06a9\u06d2 \u062f\u0631\u0645\u06cc\u0627\u0646 \u0688\u06cc\u0679\u0627 \u06a9\u06cc \u0645\u0646\u062a\u0642\u0644\u06cc<\/h2>\n<p>AWS \u06c1\u0631 \u0633\u0645\u062a \u0645\u06cc\u06ba $0.01 \u0641\u06cc GB \u0686\u0627\u0631\u062c \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u062c\u0628 \u0622\u067e \u06a9\u0627 \u0688\u06cc\u0679\u0627 \u062f\u0633\u062a\u06cc\u0627\u0628\u06cc \u0632\u0648\u0646 \u06a9\u06cc \u062d\u062f\u0648\u062f \u06a9\u0648 \u0639\u0628\u0648\u0631 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \\)0.01 \u063a\u06cc\u0631 \u0627\u06c1\u0645 \u0644\u06af\u062a\u0627 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0633\u0686 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 \u0627\u0633 \u06a9\u06cc \u0648\u062c\u06c1 \u06cc\u06c1 \u06c1\u06d2 \u06a9\u06c1 \u062a\u0642\u0633\u06cc\u0645 \u0634\u062f\u06c1 \u0646\u0638\u0627\u0645\u0648\u06ba \u0645\u06cc\u06ba AZ \u06a9\u06cc \u062d\u062f\u0648\u062f \u06a9\u0648 \u0645\u0633\u0644\u0633\u0644 \u0639\u0628\u0648\u0631 \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0634\u0631\u062d\u06cc\u06ba \u062f\u0648 \u0637\u0631\u0641\u06c1 \u06c1\u0648\u062a\u06cc \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0633\u0628 \u0633\u06d2 \u0639\u0627\u0645 \u0645\u0646\u0638\u0631 \u0646\u0627\u0645\u06c1 \u06cc\u06c1 \u06c1\u06d2 \u06a9\u06c1 \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u067e\u0648\u0688\u0632 \u06a9\u0648 \u0627\u06cc\u06a9 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 AZs \u0645\u06cc\u06ba \u0634\u06cc\u0688\u0648\u0644 \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2 (\u0644\u0686\u06a9 \u06a9\u06d2 \u0644\u06cc\u06d2)\u060c \u0644\u06cc\u06a9\u0646 \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u06a9\u0648 \u0627\u06cc\u06a9 AZ \u067e\u0631 \u067e\u0646 \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4 \u062f\u06cc\u06af\u0631 AZs \u0645\u06cc\u06ba \u067e\u0648\u0688\u0632 \u0633\u06d2 \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u06a9\u06d2 \u062a\u0645\u0627\u0645 \u0633\u0648\u0627\u0644\u0627\u062a \u06a9\u06cc \u0644\u0627\u06af\u062a $0.01\/GB \u06c1\u06d2 \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u0645\u06cc\u06ba \u062c\u0627\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u0648\u0631 $0.01\/GB \u0648\u0627\u067e\u0633\u06d4 100GB \u0641\u06cc \u062f\u0646 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u0679\u0631\u06cc\u0641\u06a9 \\(60\/\u0645\u06c1\u06cc\u0646\u06c1 \u06c1\u06d2\u06d4 1TB \u0641\u06cc \u062f\u0646 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u06cc\u06c1 \\)600\/\u0645\u06c1\u06cc\u0646\u06c1 \u06c1\u06d2\u06d4<\/p>\n<p><strong>\u0641\u0636\u0644\u06c1 \u06a9\u06cc\u0633\u0627 \u0644\u06af\u062a\u0627 \u06c1\u06d2:<\/strong><\/p>\n<pre><code class=\"language-bash\"># Check current cross-AZ data transfer charges\naws ce get-cost-and-usage \\\n  --time-period Start=\\((date -d 'last month' +%Y-%m-01),End=\\)(date +%Y-%m-01) \\\n  --granularity MONTHLY \\\n  --filter '{\"Dimensions\": {\"Key\": \"USAGE_TYPE\", \"Values\": [\"DataTransfer-Regional-Bytes\"]}}'  \\\n  --metrics UnblendedCost \\\n  --query 'ResultsByTime[0].Total.UnblendedCost.Amount' \\\n  --output text\n<\/code><\/pre>\n<p>\u06a9\u0631\u0627\u0633-AZ \u0679\u0631\u06cc\u0641\u06a9 \u0686\u0644\u0627\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u067e\u0648\u0688\u0632 \u06a9\u0648 \u06a9\u06cc\u0633\u06d2 \u062a\u0644\u0627\u0634 \u06a9\u0631\u06cc\u06ba:<\/p>\n<pre><code class=\"language-bash\"># Check which AZ your database RDS instance is in\naws rds describe-db-instances \\\n  --query 'DBInstances[*].{ID:DBInstanceIdentifier,AZ:AvailabilityZone}' \\\n  --output table\n\n# Check which AZs your application pods are running in\nkubectl get pods -o wide -n production | awk '{print $7}' | sort | uniq -c\n<\/code><\/pre>\n<p>\u0627\u06af\u0631 \u0622\u067e \u06a9\u06d2 \u067e\u0627\u0633 RDS \u06c1\u06d2\u06d4 <code>us-east-1a<\/code> \u0641\u0648\u0631\u0688 \u06a9\u0627 60\u066a <code>us-east-1b<\/code> \u0627\u0648\u0631 <code>us-east-1c<\/code>\u06a9\u0631\u0627\u0633 AZ \u0679\u0631\u06cc\u0641\u06a9 \u06a9\u0627 \u0645\u0633\u0626\u0644\u06c1 \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-the-fix-topology-aware-routing\">\u062f\u0631\u0633\u062a \u06a9\u0631\u06cc\u06ba - \u0679\u0648\u067e\u0648\u0644\u0648\u062c\u06cc \u0633\u06d2 \u0622\u06af\u0627\u06c1 \u0631\u0648\u0679\u0646\u06af:<\/h3>\n<pre><code class=\"language-yaml\"># topology-aware-routing.yaml\n# This tells Kubernetes to prefer scheduling pods in the same AZ\n# as the node making the request \u2014 keeping traffic local\n\napiVersion: v1\nkind: Service\nmetadata:\n  name: payment-api\n  namespace: production\n  annotations:\n    # Route traffic to pods in the same AZ as the caller when possible\n    service.kubernetes.io\/topology-mode: \"Auto\"\nspec:\n  selector:\n    app: payment-api\n  ports:\n  - port: 8080\n    targetPort: 8080\n<\/code><\/pre>\n<pre><code class=\"language-yaml\"># For pods themselves \u2014 spread across AZs but prefer local\n# topologySpreadConstraints ensures even distribution\n# while topology-aware routing keeps traffic within AZs\n\nspec:\n  topologySpreadConstraints:\n  - maxSkew: 1\n    topologyKey: topology.kubernetes.io\/zone\n    whenUnsatisfiable: DoNotSchedule\n    labelSelector:\n      matchLabels:\n        app: payment-api\n<\/code><\/pre>\n<p>\u062e\u0627\u0635 \u0637\u0648\u0631 \u067e\u0631 \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u0679\u0631\u06cc\u0641\u06a9 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u0633\u0646\u06af\u0644-AZ RDS \u0633\u06d2 Aurora \u0645\u06cc\u06ba \u0645\u0646\u062a\u0642\u0644 \u06c1\u0648\u0646\u06d2 \u067e\u0631 \u063a\u0648\u0631 \u06a9\u0631\u06cc\u06ba\u060c \u062c\u0648 AZ \u0631\u0648\u0679\u0646\u06af \u06a9\u0648 \u0627\u0646\u062f\u0631\u0648\u0646\u06cc \u0637\u0648\u0631 \u067e\u0631 \u06c1\u06cc\u0646\u0688\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0622\u067e \u06a9\u06cc \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0627\u06cc\u06a9 \u0627\u06cc\u0646\u0688 \u067e\u0648\u0627\u0626\u0646\u0679 \u0633\u06d2 \u062c\u0691\u062a\u06cc \u06c1\u06d2 \u0627\u0648\u0631 \u0627\u0631\u0648\u0631\u06c1 \u0627\u0633\u06d2 \u0627\u0646\u062f\u0631\u0648\u0646\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0631\u0648\u0679 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4 \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0644\u06cc\u0626\u0631 \u067e\u0631 \u06a9\u0648\u0626\u06cc \u0627\u0646\u0679\u0631-AZ \u0686\u0627\u0631\u062c\u0632 \u0646\u06c1\u06cc\u06ba \u06c1\u06cc\u06ba\u06d4<\/p>\n<p><strong>\u0645\u0627\u06c1\u0627\u0646\u06c1 \u0628\u0686\u062a:<\/strong> \\(500~\\)6,000 \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u06a9\u06d2 \u0627\u0633\u062a\u0641\u0633\u0627\u0631 \u06a9\u06d2 \u062d\u062c\u0645 \u0627\u0648\u0631 \u067e\u0648\u0688 \u06a9\u06cc AZ \u062a\u0639\u06cc\u0646\u0627\u062a\u06cc \u067e\u0631 \u0645\u0646\u062d\u0635\u0631 \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-pattern-6-the-gp2-volume-trap\">\u067e\u06cc\u0679\u0631\u0646 6: gp2 \u0648\u0627\u0644\u06cc\u0648\u0645 \u0679\u0631\u06cc\u067e<\/h2>\n<p>2014 \u0645\u06cc\u06ba\u060c AWS \u0646\u06d2 gp2 EBS \u0648\u0627\u0644\u06cc\u0648\u0645\u0632 \u06a9\u0627 \u0622\u063a\u0627\u0632 \u06a9\u06cc\u0627\u06d4 2020 \u0645\u06cc\u06ba \u0627\u0646\u06c1\u0648\u06ba \u0646\u06d2 \u062c\u06cc \u067e\u06cc 3 \u062c\u0627\u0631\u06cc \u06a9\u06cc\u0627\u060c \u062c\u0648 \u0633\u0633\u062a\u0627\u060c \u062a\u06cc\u0632\u060c \u0627\u0648\u0631 \u0628\u0627\u06a9\u0633 \u0633\u06d2 \u0628\u0627\u06c1\u0631 \u06a9\u06cc \u0628\u06c1\u062a\u0631 \u06a9\u0627\u0631\u06a9\u0631\u062f\u06af\u06cc \u06a9\u0627 \u062d\u0627\u0645\u0644 \u06c1\u06d2\u06d4 2026 \u0645\u06cc\u06ba\u060c \u0632\u06cc\u0627\u062f\u06c1 \u062a\u0631 \u0633\u06cc\u0631\u06cc\u0632 A \u06a9\u0645\u067e\u0646\u06cc\u0627\u06ba \u0627\u0628 \u0628\u06be\u06cc gp2 \u0686\u0644\u0627 \u0631\u06c1\u06cc \u06c1\u0648\u06ba \u06af\u06cc\u06d4<\/p>\n<p>\u0641\u0631\u0642: gp2 \u06a9\u06cc \u0642\u06cc\u0645\u062a $(0.10\/GB\/\u0645\u06c1\u06cc\u0646\u06c1) \u06c1\u06d2 \u0627\u0648\u0631 3 IOPS \u0641\u06cc GB (\u06a9\u0645 \u0627\u0632 \u06a9\u0645 100 IOPS) \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 gp3 \u06a9\u06cc \u0642\u06cc\u0645\u062a \u20a90.08\/GB\/\u0645\u06c1\u06cc\u0646\u06c1 \u06c1\u06d2 \u0627\u0648\u0631 \u0633\u0627\u0626\u0632 \u0633\u06d2 \u0642\u0637\u0639 \u0646\u0638\u0631 3,000 IOPS \u06a9\u06cc \u0628\u0646\u06cc\u0627\u062f\u06cc \u0644\u0627\u0626\u0646 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0632\u06cc\u0627\u062f\u06c1 \u062a\u0631 \u062d\u062c\u0645 \u06a9\u06d2 \u0633\u0627\u0626\u0632 \u06a9\u06d2 \u0644\u06cc\u06d2 IOPS \u0645\u06cc\u06ba gp3 20% \u0633\u0633\u062a\u0627 \u0627\u0648\u0631 10x \u062a\u06cc\u0632 \u06c1\u06d2\u06d4 \u06c1\u062c\u0631\u062a \u0622\u0646 \u0644\u0627\u0626\u0646 \u06c1\u06d2\u06d4 \u06cc\u0639\u0646\u06cc \u06cc\u06c1 \u0627\u0633 \u0648\u0642\u062a \u062a\u06a9 \u0686\u0644\u062a\u0627 \u06c1\u06d2 \u062c\u0628 \u062a\u06a9 \u062d\u062c\u0645 \u0645\u0646\u0633\u0644\u06a9 \u0627\u0648\u0631 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u0645\u06cc\u06ba \u06c1\u0648\u06d4<\/p>\n<p><strong>\u062a\u0645\u0627\u0645 gp2 \u0648\u0627\u0644\u06cc\u0648\u0645 \u062a\u0644\u0627\u0634 \u06a9\u0631\u06cc\u06ba:<\/strong><\/p>\n<pre><code class=\"language-bash\"># List every gp2 volume in your account with its size and monthly cost\naws ec2 describe-volumes \\\n  --filters Name=volume-type,Values=gp2 \\\n  --query 'Volumes[*].{\n    ID:VolumeId,\n    Size:Size,\n    State:State,\n    MonthlyCost_USD:Size\n  }' \\\n  --output table\n\n# Count the total: number of volumes and combined GB\naws ec2 describe-volumes \\\n  --filters Name=volume-type,Values=gp2 \\\n  --query 'length(Volumes)' --output text\n\naws ec2 describe-volumes \\\n  --filters Name=volume-type,Values=gp2 \\\n  --query 'sum(Volumes[*].Size)' --output text\n<\/code><\/pre>\n<h3 id=\"heading-the-fix-migrate-all-gp2-to-gp3-in-one-script\">\u062f\u0631\u0633\u062a \u06a9\u0631\u06cc\u06ba - \u062a\u0645\u0627\u0645 gp2 \u06a9\u0648 \u0627\u06cc\u06a9 \u0627\u0633\u06a9\u0631\u067e\u0679 \u0645\u06cc\u06ba gp3 \u0645\u06cc\u06ba \u0645\u0646\u062a\u0642\u0644 \u06a9\u0631\u06cc\u06ba:<\/h3>\n<pre><code class=\"language-bash\">#!\/bin\/bash\n# migrate_gp2_to_gp3.sh\n# Migrates all gp2 volumes to gp3. Online operation \u2014 no downtime.\n# Each modification runs asynchronously; the volume stays available throughout.\n\necho \"Starting gp2 to gp3 migration...\"\n\n# Get all gp2 volume IDs\nVOLUMES=$(aws ec2 describe-volumes \\\n  --filters Name=volume-type,Values=gp2 \\\n  --query 'Volumes[*].VolumeId' \\\n  --output text)\n\nCOUNT=0\nfor VOL_ID in $VOLUMES; do\n  echo \"Migrating $VOL_ID to gp3...\"\n  aws ec2 modify-volume \\\n    --volume-id $VOL_ID \\\n    --volume-type gp3 \\\n    --no-cli-pager\n  COUNT=$((COUNT + 1))\ndone\n\necho \"Migration initiated for $COUNT volumes.\"\necho \"Modifications run online \u2014 no downtime. Monitor progress:\"\necho \"aws ec2 describe-volumes-modifications --query 'VolumesModifications[*].{ID:VolumeId,State:ModificationState}'\"\n<\/code><\/pre>\n<p><strong>\u062a\u06a9\u0645\u06cc\u0644 \u06a9\u06cc \u062a\u0635\u062f\u06cc\u0642 \u06a9\u0631\u06cc\u06ba:<\/strong><\/p>\n<pre><code class=\"language-bash\"># Check that no gp2 volumes remain\naws ec2 describe-volumes \\\n  --filters Name=volume-type,Values=gp2 \\\n  --query 'length(Volumes)' \\\n  --output text\n# Expected: 0\n<\/code><\/pre>\n<p><strong>\u0645\u0627\u06c1\u0627\u0646\u06c1 \u0628\u0686\u062a:<\/strong> \u06a9\u0644 EBS \u062e\u0631\u0686 \u06a9\u0627 20%\u06d4 EBS 10,000 \u0648\u0646 \u0641\u06cc \u0645\u06c1\u06cc\u0646\u06c1\u060c \u06cc\u0627 30 \u0645\u0646\u0679 \u06a9\u06d2 \u06a9\u0627\u0645 \u06a9\u06d2 \u0644\u06cc\u06d2 2,000 \u0648\u0646 \u0628\u0686\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-pattern-7-the-infinite-log-trap\">\u067e\u06cc\u0679\u0631\u0646 7: \u0644\u0627\u0645\u062d\u062f\u0648\u062f \u0644\u0627\u06af \u0679\u0631\u06cc\u067e<\/h2>\n<p>CloudWatch \u0644\u0627\u06af \u06af\u0631\u0648\u067e\u0633 \u0645\u06cc\u06ba \"\u06a9\u0628\u06be\u06cc \u062e\u062a\u0645 \u0646\u06c1\u06cc\u06ba \u06c1\u0648\u062a\u0627\" \u06a9\u06cc \u0688\u06cc\u0641\u0627\u0644\u0679 \u0628\u0631\u0642\u0631\u0627\u0631 \u0631\u06a9\u06be\u0646\u06d2 \u06a9\u06cc \u067e\u0627\u0644\u06cc\u0633\u06cc \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u06d4 \u0648\u0627\u0636\u062d \u0628\u0631\u0642\u0631\u0627\u0631 \u0631\u06a9\u06be\u0646\u06d2 \u06a9\u06cc \u062a\u0631\u062a\u06cc\u0628\u0627\u062a \u06a9\u06d2 \u0628\u063a\u06cc\u0631 \u0628\u0646\u0627\u06cc\u0627 \u06af\u06cc\u0627 \u06a9\u0648\u0626\u06cc \u0628\u06be\u06cc \u0644\u0627\u06af \u06af\u0631\u0648\u067e \u063a\u06cc\u0631 \u0645\u0639\u06cc\u0646\u06c1 \u0645\u062f\u062a \u062a\u06a9 \u0644\u0627\u06af \u062c\u0645\u0639 \u06a9\u0631\u06d2 \u06af\u0627\u06d4 \u0645\u0635\u0631\u0648\u0641 \u0633\u06cc\u0631\u06cc\u0632 A \u06a9\u0645\u067e\u0646\u06cc\u0648\u06ba \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u0627\u0633 \u06a9\u0627 \u0645\u0637\u0644\u0628 2022 \u0633\u06d2 \u0688\u06cc\u0628\u06af \u0644\u0627\u06af\u0632 \u06a9\u0648 \u0645\u062d\u0641\u0648\u0638 \u06a9\u0631\u0646\u0627 \u06c1\u06d2 \u062c\u0648 \u0633\u067e\u0631\u0646\u0679 \u0631\u06cc\u0648\u06cc\u0648 \u06a9\u06d2 \u0628\u0639\u062f \u0633\u06d2 \u06a9\u0633\u06cc \u0646\u06d2 \u0646\u06c1\u06cc\u06ba \u06a9\u06be\u0648\u0644\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0627\u062e\u0631\u0627\u062c\u0627\u062a \u062e\u0627\u0645\u0648\u0634\u06cc \u0633\u06d2 \u0628\u0691\u06be \u0631\u06c1\u06d2 \u06c1\u06cc\u06ba\u06d4 CloudWatch \u0644\u0627\u06af \u0627\u0633\u0679\u0648\u0631\u06cc\u062c \u06a9\u06d2 \u0644\u06cc\u06d2 $0.03\/GB\/\u0645\u0627\u06c1 \u0627\u0648\u0631 \u0644\u0627\u06af \u0627\u0646\u06af\u0632\u06cc\u0634\u0646 \u06a9\u06d2 \u0644\u06cc\u06d2 $0.50\/GB \u0686\u0627\u0631\u062c \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u06cc\u0648\u0645\u06cc\u06c1 50 \u062c\u06cc \u0628\u06cc \u0644\u0627\u06af \u062a\u06cc\u0627\u0631 \u06a9\u0631\u0646\u06d2 \u0648\u0627\u0644\u0627 \u06a9\u0644\u0633\u0679\u0631 \\(25\/\u062f\u0646 \u2014 \\)750\/\u0645\u06c1\u06cc\u0646\u06c1 \u062c\u0645\u0639 \u06a9\u0631\u06d2 \u06af\u0627 \u0627\u0648\u0631 \u067e\u06be\u0631 \u0627\u0646 \u0644\u0627\u06af\u0632 \u06a9\u0648 \u0628\u0691\u06be\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u0645\u0627\u06c1\u0627\u0646\u06c1 \u0644\u0627\u06af\u062a \u067e\u0631 \u06c1\u0645\u06cc\u0634\u06c1 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u062d\u0641\u0648\u0638 \u06a9\u0631 \u0644\u06d2 \u06af\u0627\u06d4<\/p>\n<p><strong>\u0628\u0631\u0642\u0631\u0627\u0631 \u0631\u06a9\u06be\u0646\u06d2 \u06a9\u06cc \u067e\u0627\u0644\u06cc\u0633\u06cc \u06a9\u06d2 \u0628\u063a\u06cc\u0631 \u0644\u0627\u06af \u06af\u0631\u0648\u067e\u0633 \u062a\u0644\u0627\u0634 \u06a9\u0631\u06cc\u06ba:<\/strong><\/p>\n<pre><code class=\"language-bash\"># List all log groups with their retention settings\n# Any group showing \"retentionInDays: null\" is infinite \u2014 it never expires\naws logs describe-log-groups \\\n  --query 'logGroups[*].{Name:logGroupName,RetentionDays:retentionInDays,StoredBytes:storedBytes}' \\\n  --output table | grep -E \"(None|null)\"\n\n# Count how many log groups have no retention set\naws logs describe-log-groups \\\n  --query 'length(logGroups[?retentionInDays==`null`])' \\\n  --output text\n<\/code><\/pre>\n<h3 id=\"heading-the-fix-set-retention-policies-in-bulk\">\u06a9\u0627\u0645 \u06a9\u0627\u062c - \u0628\u0691\u06cc \u062a\u0639\u062f\u0627\u062f \u0645\u06cc\u06ba \u0628\u0631\u0642\u0631\u0627\u0631 \u0631\u06a9\u06be\u0646\u06d2 \u06a9\u06cc \u067e\u0627\u0644\u06cc\u0633\u06cc \u0633\u06cc\u0679 \u06a9\u0631\u06cc\u06ba:<\/h3>\n<p>\u0644\u0627\u06af \u06a9\u06cc \u0645\u062e\u062a\u0644\u0641 \u0627\u0642\u0633\u0627\u0645 \u0645\u06cc\u06ba \u062a\u0639\u0645\u06cc\u0644 \u06a9\u06d2 \u0645\u062e\u062a\u0644\u0641 \u062a\u0642\u0627\u0636\u06d2 \u06c1\u0648\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0688\u06cc\u0628\u06af \u0644\u0627\u06af\u0632 \u0631\u06a9\u06be\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 \u0622\u0688\u0679 \u0644\u0627\u06af\u0632 \u0645\u06cc\u06ba 365 \u062f\u0646 \u0644\u06af \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0646\u06cc\u0686\u06d2 \u062f\u06cc \u06af\u0626\u06cc \u062c\u062f\u0648\u0644 \u0645\u06cc\u06ba \u0645\u0639\u0642\u0648\u0644 \u0688\u06cc\u0641\u0627\u0644\u0679\u0633 \u06a9\u06cc \u0641\u06c1\u0631\u0633\u062a \u06c1\u06d2\u06d4<\/p>\n<table>\n<thead>\n<tr>\n<th>\u0644\u0627\u06af \u06a9\u06cc \u0642\u0633\u0645<\/th>\n<th>\u0628\u0631\u0642\u0631\u0627\u0631 \u0631\u06a9\u06be\u0646\u06d2 \u06a9\u06cc \u0633\u0641\u0627\u0631\u0634 \u06a9\u06cc \u06af\u0626\u06cc\u06d4<\/th>\n<th>\u0648\u062c\u06c1<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>\u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0688\u06cc\u0628\u06af \u0644\u0627\u06af<\/td>\n<td>14 \u062f\u0646<\/td>\n<td>\u0635\u0631\u0641 \u0641\u0639\u0627\u0644 \u0688\u06cc\u0628\u06af\u0646\u06af \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u0641\u06cc\u062f \u06c1\u06d2\u06d4<\/td>\n<\/tr>\n<tr>\n<td>\u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u06cc \u062e\u0631\u0627\u0628\u06cc \u06a9\u0627 \u0644\u0627\u06af<\/td>\n<td>90 \u062f\u0646<\/td>\n<td>\u062d\u0627\u062f\u062b\u06d2 \u06a9\u06d2 \u0628\u0639\u062f \u06a9\u06cc \u062a\u0641\u062a\u06cc\u0634 \u06a9\u06cc \u06a9\u06be\u0691\u06a9\u06cc<\/td>\n<\/tr>\n<tr>\n<td>\u0631\u0633\u0627\u0626\u06cc \u0644\u0627\u06af<\/td>\n<td>30 \u062f\u0646<\/td>\n<td>\u0633\u06cc\u06a9\u06cc\u0648\u0631\u0679\u06cc \u062c\u0627\u0626\u0632\u06c1 \u0648\u0646\u0688\u0648<\/td>\n<\/tr>\n<tr>\n<td>CloudTrail \u0622\u0688\u0679 \u0644\u0627\u06af\u0632<\/td>\n<td>365 \u062f\u0646<\/td>\n<td>SOC2 \u062b\u0628\u0648\u062a \u06a9\u06d2 \u062a\u0642\u0627\u0636\u06d2<\/td>\n<\/tr>\n<tr>\n<td>VPC \u0641\u0644\u0648 \u0644\u0627\u06af\u0632<\/td>\n<td>90 \u062f\u0646<\/td>\n<td>\u0633\u06cc\u06a9\u0648\u0631\u0679\u06cc \u062a\u062d\u0642\u06cc\u0642\u0627\u062a\u06cc \u0648\u0646\u0688\u0648<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<pre><code class=\"language-bash\">#!\/bin\/bash\n# set_log_retention.sh\n# Sets 30-day retention on all log groups that have no policy set\n# Adjust the retention period per log group type as needed\n\necho \"Setting retention policies on log groups with no expiry...\"\n\n# Get all log groups with no retention\naws logs describe-log-groups \\\n  --query 'logGroups[?retentionInDays==`null`].logGroupName' \\\n  --output text | tr '\\t' '\\n' | while read LOG_GROUP; do\n\n  # Skip CloudTrail logs \u2014 these need longer retention for SOC2\n  if echo \"$LOG_GROUP\" | grep -qi \"cloudtrail\"; then\n    echo \"Skipping CloudTrail log group: $LOG_GROUP\"\n    aws logs put-retention-policy \\\n      --log-group-name \"$LOG_GROUP\" \\\n      --retention-in-days 365\n    continue\n  fi\n\n  # Set 30-day retention on all other log groups\n  echo \"Setting 30-day retention on: $LOG_GROUP\"\n  aws logs put-retention-policy \\\n    --log-group-name \"$LOG_GROUP\" \\\n    --retention-in-days 30\ndone\n\necho \"Done. Logs older than their retention period will be deleted automatically by CloudWatch.\"\n<\/code><\/pre>\n<p><strong>\u0645\u0627\u06c1\u0627\u0646\u06c1 \u0628\u0686\u062a:<\/strong> \u0627\u0633\u0679\u0648\u0631\u06cc\u062c \u06a9\u06cc \u0642\u06cc\u0645\u062a \\(500~\\)2,000\u06d4 \u062c\u0645\u0639 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0644\u0627\u06af\u062a \u06a9\u06cc \u0628\u0686\u062a \u0641\u0648\u0631\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0634\u0631\u0648\u0639 \u06c1\u0648\u062c\u0627\u062a\u06cc \u06c1\u06d2 \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u0634\u0648\u0631 \u0645\u0686\u0627\u0646\u06d2 \u0648\u0627\u0644\u06cc \u0688\u06cc\u0628\u06af \u0644\u0627\u06af\u0646\u06af \u06a9\u0645 \u06c1\u0648\u062c\u0627\u062a\u06cc \u06c1\u06d2\u06d4 \u067e\u0631\u0627\u0646\u06d2 \u0644\u0627\u06af\u0632 \u06a9\u06cc \u0645\u06cc\u0639\u0627\u062f \u062e\u062a\u0645 \u06c1\u0648\u0646\u06d2 \u06a9\u06d2 \u0628\u0639\u062f\u060c 30 \u0633\u06d2 \u200b\u200b90 \u062f\u0646\u0648\u06ba \u062a\u06a9 \u0627\u0633\u0679\u0648\u0631\u06cc\u062c \u06a9\u06cc \u0644\u0627\u06af\u062a \u06a9\u06cc \u0628\u0686\u062a \u0628\u0691\u06be \u062c\u0627\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-pattern-8-the-orphaned-resource-collector\">\u067e\u06cc\u0679\u0631\u0646 8: \u06cc\u062a\u06cc\u0645 \u0631\u06cc\u0633\u0648\u0631\u0633 \u06a9\u0644\u06cc\u06a9\u0679\u0631<\/h2>\n<p>\u06c1\u0631 \u0627\u0646\u062c\u06cc\u0646\u0626\u0631 \u062c\u0648 \u0686\u06be\u0648\u0691 \u062c\u0627\u062a\u0627 \u06c1\u06d2 \u0627\u06cc\u06a9 \u0646\u0634\u0627\u0646 \u0686\u06be\u0648\u0691 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4 \u062e\u062a\u0645 \u0634\u062f\u06c1 \u0645\u062b\u0627\u0644 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0645\u0646\u0633\u0644\u06a9 EBS \u0648\u0627\u0644\u06cc\u0648\u0645\u06d4 \u0644\u0686\u06a9\u062f\u0627\u0631 IP \u062a\u0641\u0648\u06cc\u0636 \u06a9\u06cc\u0627 \u06af\u06cc\u0627 \u0644\u06cc\u06a9\u0646 \u0645\u0646\u0633\u0644\u06a9 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 Q3 \u0645\u06cc\u06ba \u0641\u0631\u0633\u0648\u062f\u06c1 \u062e\u062f\u0645\u0627\u062a \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u0628\u06cc\u0644\u0646\u0633 \u0644\u0648\u0688 \u06a9\u0631\u06cc\u06ba\u06d4 \u062a\u0628\u062f\u06cc\u0644 \u0634\u062f\u06c1 RDS \u0645\u062b\u0627\u0644 \u06a9\u0627 \u067e\u0686\u06be\u0644\u0627 \u0633\u0646\u06cc\u067e \u0634\u0627\u0679\u06d4 \u0627\u0646 \u0645\u06cc\u06ba \u0633\u06d2 \u06a9\u0648\u0626\u06cc \u0628\u06be\u06cc \u062c\u0627\u0646 \u0628\u0648\u062c\u06be \u06a9\u0631 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u060c \u0644\u06cc\u06a9\u0646 \u06cc\u06c1 \u0633\u0628 \u067e\u06cc\u0633\u06c1 \u062e\u0631\u0686 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba.<\/p>\n<p>\u0627\u0633 \u06a9\u0627 \u062d\u0644 \u06c1\u0641\u062a\u06c1 \u0648\u0627\u0631 \u0622\u0688\u0679 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u062f\u0633\u062a\u06cc \u0633\u0631\u0648\u06d2 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0627\u06cc\u06a9 \u062e\u0648\u062f\u06a9\u0627\u0631 \u0627\u0633\u06a9\u0631\u067e\u0679 \u06c1\u06d2 \u062c\u0648 \u06c1\u0631 \u0627\u062a\u0648\u0627\u0631 \u06a9\u06cc \u0631\u0627\u062a \u0686\u0644\u062a\u0627 \u06c1\u06d2\u060c \u06cc\u062a\u06cc\u0645 \u0648\u0633\u0627\u0626\u0644 \u062a\u0644\u0627\u0634 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u0627\u0648\u0631 \u062d\u0630\u0641 \u06a9\u0631\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u0627\u0645\u06cc\u062f\u0648\u0627\u0631\u0648\u06ba \u06a9\u06cc \u0641\u06c1\u0631\u0633\u062a \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0627\u06cc\u06a9 Slack \u067e\u06cc\u063a\u0627\u0645 \u0628\u06be\u06cc\u062c\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p><strong>\u06cc\u062a\u06cc\u0645\u0648\u06ba \u06a9\u0648 \u062a\u0644\u0627\u0634 \u06a9\u0631\u06cc\u06ba:<\/strong><\/p>\n<pre><code class=\"language-bash\"># Unattached EBS volumes \u2014 you are paying for storage with nothing in it\naws ec2 describe-volumes \\\n  --filters Name=status,Values=available \\\n  --query 'Volumes[*].{\n    ID:VolumeId,\n    Size:Size,\n    Created:CreateTime,\n    MonthlyCost:Size\n  }' \\\n  --output table\n\n# Unassociated Elastic IPs \u2014 $3.60\/month each when not attached to a running instance\naws ec2 describe-addresses \\\n  --query 'Addresses[?AssociationId==`null`].[PublicIp,AllocationId]' \\\n  --output table\n\n# Old snapshots \u2014 created more than 90 days ago, no longer needed\naws ec2 describe-snapshots \\\n  --owner-ids self \\\n  --query \"Snapshots[?StartTime<='$(date -d '90 days ago' --iso-8601=seconds)'].[SnapshotId,StartTime,VolumeSize]\" \\\n  --output table\n\n# Idle load balancers \u2014 active but routing zero traffic\naws elbv2 describe-load-balancers \\\n  --query 'LoadBalancers[*].{ARN:LoadBalancerArn,DNS:DNSName,State:State.Code}' \\\n  --output table\n<\/code><\/pre>\n<p><strong>\u06c1\u0641\u062a\u06c1 \u0648\u0627\u0631 \u0631\u06cc\u06a9\u0627\u067e \u0644\u06cc\u0645\u0628\u0688\u0627:<\/strong><\/p>\n<pre><code class=\"language-python\"># orphan_resource_reporter.py\n# Runs every Sunday at 20:00 via EventBridge\n# Reports orphaned resources to Slack \u2014 does NOT auto-delete\n# Deletion requires a human decision. The Lambda surfaces the candidates.\n\nimport boto3\nimport json\nimport urllib.request\nfrom datetime import datetime, timedelta, timezone\n\nSLACK_WEBHOOK_URL = 'https:\/\/hooks.slack.com\/services\/YOUR\/WEBHOOK\/URL'\n\ndef get_orphaned_resources():\n    \"\"\"Collect all orphaned AWS resources and their estimated monthly costs.\"\"\"\n    ec2 = boto3.client('ec2')\n    elbv2 = boto3.client('elbv2')\n    report = {'total_monthly_waste': 0, 'resources': []}\n\n    # Unattached EBS volumes ($0.08\/GB\/month for gp3)\n    volumes = ec2.describe_volumes(\n        Filters=[{'Name': 'status', 'Values': ['available']}]\n    )['Volumes']\n    for vol in volumes:\n        monthly_cost = round(vol['Size'] * 0.08, 2)\n        report['resources'].append({\n            'type': 'Unattached EBS Volume',\n            'id': vol['VolumeId'],\n            'detail': f\"{vol['Size']}GB {vol['VolumeType']}\",\n            'monthly_cost': monthly_cost\n        })\n        report['total_monthly_waste'] += monthly_cost\n\n    # Unassociated Elastic IPs ($3.60\/month each)\n    addresses = ec2.describe_addresses()['Addresses']\n    for addr in addresses:\n        if 'AssociationId' not in addr:\n            report['resources'].append({\n                'type': 'Unassociated Elastic IP',\n                'id': addr['AllocationId'],\n                'detail': addr['PublicIp'],\n                'monthly_cost': 3.60\n            })\n            report['total_monthly_waste'] += 3.60\n\n    # Snapshots older than 90 days\n    cutoff = (datetime.now(timezone.utc) - timedelta(days=90)).isoformat()\n    snapshots = ec2.describe_snapshots(OwnerIds=['self'])['Snapshots']\n    old_snapshots = [s for s in snapshots if s['StartTime'].isoformat() < cutoff]\n    for snap in old_snapshots:\n        monthly_cost = round(snap.get('VolumeSize', 0) * 0.05, 2)\n        report['resources'].append({\n            'type': 'Old Snapshot (90+ days)',\n            'id': snap['SnapshotId'],\n            'detail': f\"Created {snap['StartTime'].strftime('%Y-%m-%d')}\",\n            'monthly_cost': monthly_cost\n        })\n        report['total_monthly_waste'] += monthly_cost\n\n    return report\n\ndef post_to_slack(report):\n    \"\"\"Send the orphaned resource report to Slack.\"\"\"\n    resource_lines=\"\\n\".join([\n        f\"\u2022 {r['type']} `{r['id']}` \u2014 {r['detail']} \u2014 *${r['monthly_cost']}\/month*\"\n        for r in report['resources']\n    ])\n\n    message = {\n        'text': (\n            f\":money_with_wings: *Weekly Orphaned Resource Report*\\n\\n\"\n            f\"Found *{len(report['resources'])} orphaned resources* \"\n            f\"costing *${report['total_monthly_waste']:.2f}\/month*\\n\\n\"\n            f\"{resource_lines}\\n\\n\"\n            f\"Review and delete resources that are no longer needed.\"\n        )\n    }\n    \n    req = urllib.request.Request(\n        SLACK_WEBHOOK_URL,\n        data=json.dumps(message).encode(),\n        headers={'Content-Type': 'application\/json'}\n    )\n    urllib.request.urlopen(req)\n\ndef lambda_handler(event, context):\n    report = get_orphaned_resources()\n    post_to_slack(report)\n    return {\n        'resources_found': len(report['resources']),\n        'monthly_waste': report['total_monthly_waste']\n    }\n<\/code><\/pre>\n<p><strong>\u0645\u0627\u06c1\u0627\u0646\u06c1 \u0628\u0686\u062a:<\/strong> \\(500~\\)2,000\u06d4 \u06c1\u0631 \u0627\u0646\u062c\u06cc\u0646\u0626\u0631 \u062c\u0648 \u0686\u06be\u0648\u0691\u062a\u0627 \u06c1\u06d2 \u0639\u0627\u0645 \u0637\u0648\u0631 \u067e\u0631 \u0627\u067e\u0646\u06d2 \u067e\u06cc\u0686\u06be\u06d2 \\(50\u2013\\)200 \u06cc\u062a\u06cc\u0645 \u0648\u0633\u0627\u0626\u0644 \u0686\u06be\u0648\u0691 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4 30% \u0633\u0627\u0644\u0627\u0646\u06c1 \u0679\u0631\u0646 \u0627\u0648\u0648\u0631 \u0648\u0627\u0644\u06d2 30 \u0627\u0641\u0631\u0627\u062f \u06a9\u06cc \u0679\u06cc\u0645 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u06cc\u06c1 \u062a\u06cc\u0632\u06cc \u0633\u06d2 \u067e\u06cc\u0686\u06cc\u062f\u06c1 \u06c1\u0648 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-the-full-savings-summary\">\u06a9\u0644 \u0628\u0686\u062a \u06a9\u0627 \u062e\u0644\u0627\u0635\u06c1<\/h2>\n<table>\n<thead>\n<tr>\n<th>\u067e\u06cc\u0679\u0631\u0646<\/th>\n<th>\u0645\u0627\u06c1\u0627\u0646\u06c1 \u0628\u0686\u062a<\/th>\n<th>\u0679\u06be\u06cc\u06a9 \u06a9\u0631\u0646\u06d2 \u06a9\u0627 \u0648\u0642\u062a<\/th>\n<th>\u0645\u0634\u06a9\u0644<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>1. \u0646\u0626\u06cc \u0628\u06be\u0631\u062a\u06cc \u06a9\u0627 \u062a\u062c\u0631\u0628\u06c1 \u0679\u06cc\u06a9\u0633<\/td>\n<td>\\(1,000~\\)2,000<\/td>\n<td>2 \u06af\u06be\u0646\u0679\u06d2 (\u0644\u06cc\u0645\u0628\u0688\u0627)<\/td>\n<td>\u062f\u0631\u0645\u06cc\u0627\u0646\u06cc<\/td>\n<\/tr>\n<tr>\n<td>2. \u0628\u062a\u062f\u0631\u06cc\u062c \u067e\u06be\u06cc\u0644\u0627\u0624<\/td>\n<td>\\(600~\\)800<\/td>\n<td>3 \u06af\u06be\u0646\u0679\u06d2 (\u0645\u0646\u0635\u0648\u0628\u06c1 \u0628\u0646\u062f)<\/td>\n<td>\u06a9\u0645<\/td>\n<\/tr>\n<tr>\n<td>3. NAT \u06af\u06cc\u0679 \u0648\u06d2 \u0679\u06cc\u06a9\u0633<\/td>\n<td>\\(2,000~\\)8,000<\/td>\n<td>30 \u0645\u0646\u0679<\/td>\n<td>\u06a9\u0645<\/td>\n<\/tr>\n<tr>\n<td>4. \u0628\u0686\u062a \u06a9\u06d2 \u0645\u0646\u0635\u0648\u0628\u06d2 \u06a9\u0627 \u0648\u0642\u062a<\/td>\n<td>\\(5,000~\\)15,000<\/td>\n<td>\u0627\u06cc\u06a9 \u0641\u06cc\u0635\u0644\u06c1<\/td>\n<td>\u06a9\u0645<\/td>\n<\/tr>\n<tr>\n<td>5. AZs \u06a9\u06d2 \u062f\u0631\u0645\u06cc\u0627\u0646 \u0688\u06cc\u0679\u0627 \u06a9\u06cc \u0645\u0646\u062a\u0642\u0644\u06cc<\/td>\n<td>\\(500~\\)6,000<\/td>\n<td>2 \u06af\u06be\u0646\u0679\u06d2<\/td>\n<td>\u062f\u0631\u0645\u06cc\u0627\u0646\u06cc<\/td>\n<\/tr>\n<tr>\n<td>6. gp2 \u0648\u0627\u0644\u06cc\u0648\u0645 \u0679\u0631\u06cc\u067e<\/td>\n<td>\\(1,000~\\)5,000<\/td>\n<td>30 \u0645\u0646\u0679 (\u0627\u0633\u06a9\u0631\u067e\u0679)<\/td>\n<td>\u06a9\u0645<\/td>\n<\/tr>\n<tr>\n<td>7. \u0644\u0627\u0645\u062d\u062f\u0648\u062f \u0644\u0627\u06af \u0679\u0631\u06cc\u067e<\/td>\n<td>\\(500~\\)2,000<\/td>\n<td>1 \u06af\u06be\u0646\u0679\u06c1 (\u0627\u0633\u06a9\u0631\u067e\u0679)<\/td>\n<td>\u06a9\u0645<\/td>\n<\/tr>\n<tr>\n<td>8. \u06cc\u062a\u06cc\u0645 \u0648\u0633\u0627\u0626\u0644<\/td>\n<td>\\(500~\\)2,000<\/td>\n<td>2 \u06af\u06be\u0646\u0679\u06d2 (\u0644\u06cc\u0645\u0628\u0688\u0627)<\/td>\n<td>\u06a9\u0645<\/td>\n<\/tr>\n<tr>\n<td><strong>\u06a9\u0644 \u0635\u0644\u0627\u062d\u06cc\u062a<\/strong><\/td>\n<td><strong>\u20a9(11,100\u2013\u20a9)40,800\/\u0645\u0627\u06c1<\/strong><\/td>\n<td\/>\n<td\/>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2 id=\"heading-what-to-do-this-week\">\u0627\u0633 \u06c1\u0641\u062a\u06d2 \u06a9\u06cc\u0627 \u06a9\u0631\u0646\u0627 \u06c1\u06d2\u06d4<\/h2>\n<p>\u0627\u0633 \u06c1\u0641\u062a\u06d2 \u062a\u0645\u0627\u0645 \u0622\u0679\u06be \u06a9\u0648 \u0679\u06be\u06cc\u06a9 \u0646\u06c1 \u06a9\u0631\u06cc\u06ba\u06d4 \u0641\u06cc \u0627\u0646\u062c\u06cc\u0646\u0626\u0631\u0646\u06af \u06af\u06be\u0646\u0679\u06c1 ROI \u06a9\u06cc \u0628\u0646\u06cc\u0627\u062f \u067e\u0631 \u062a\u0631\u062c\u06cc\u062d \u062f\u06cc\u06ba:<\/p>\n<p><strong>\u062f\u0646 1 (30 \u0645\u0646\u0679):<\/strong> \u067e\u06cc\u0679\u0631\u0646 3 - NAT \u06af\u06cc\u0679 \u0648\u06d2 \u0627\u06cc\u0646\u0688 \u067e\u0648\u0627\u0626\u0646\u0679\u06d4 \u0627\u0633 \u06af\u0627\u0626\u06cc\u0688 \u0645\u06cc\u06ba \u0627\u0635\u0644\u0627\u062d\u0627\u062a \u0645\u06cc\u06ba \u0633\u06d2\u060c \u0627\u0633 \u06a9\u0627 \u0641\u06cc \u0645\u0646\u0679 \u0633\u0628 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 ROI \u06c1\u06d2\u06d4 \u0627\u06cc\u06a9 \u06a9\u0645\u0627\u0646\u0688 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0627\u06cc\u06a9 S3 \u0627\u06cc\u0646\u0688 \u067e\u0648\u0627\u0626\u0646\u0679 \u0628\u0646\u0627\u06cc\u0627 \u06af\u06cc\u0627 \u06c1\u06d2\u06d4 \u0645\u06a9\u0645\u0644<\/p>\n<p><strong>\u062f\u0646 2 (30 \u0645\u0646\u0679):<\/strong> \u067e\u06cc\u0679\u0631\u0646 6 \u2014 gp2 \u0633\u06d2 gp3 \u0645\u06cc\u06ba \u0645\u0646\u062a\u0642\u0644\u06cc\u06d4 \u0627\u0633\u06a9\u0631\u067e\u0679 \u0686\u0644\u0627\u0626\u06cc\u06ba\u06d4 \u0622\u0624\u0679 \u067e\u0679 \u0686\u06cc\u06a9 \u06a9\u0631\u06cc\u06ba: \u0645\u06a9\u0645\u0644\u06d4<\/p>\n<p><strong>\u062f\u0646 3 (1 \u06af\u06be\u0646\u0679\u06c1):<\/strong> \u067e\u06cc\u0679\u0631\u0646 7 - \u0644\u0627\u06af \u0628\u0631\u0642\u0631\u0627\u0631 \u0631\u06a9\u06be\u0646\u06d2 \u06a9\u06cc \u067e\u0627\u0644\u06cc\u0633\u06cc\u06d4 \u0628\u0644\u06a9 \u0631\u06cc\u0679\u06cc\u0646\u0634\u0646 \u0627\u0633\u06a9\u0631\u067e\u0679 \u0686\u0644\u0627\u0626\u06cc\u06ba\u06d4 \u0645\u06a9\u0645\u0644<\/p>\n<p><strong>\u062f\u0646 4 (2 \u06af\u06be\u0646\u0679\u06d2):<\/strong> \u067e\u06cc\u0679\u0631\u0646 1 \u0627\u0648\u0631 8 - \u062f\u0648\u0646\u0648\u06ba \u0644\u06cc\u0645\u0628\u0688\u0627 \u06a9\u0648 \u062a\u0639\u06cc\u0646\u0627\u062a \u06a9\u0631\u06cc\u06ba\u06d4 \u06cc\u06c1 \u062e\u0648\u062f \u0628\u062e\u0648\u062f \u06cc\u06c1\u0627\u06ba \u0633\u06d2 \u0686\u0644\u06d2 \u06af\u0627\u06d4<\/p>\n<p><strong>\u0627\u06af\u0644\u0627 \u0633\u067e\u0631\u0646\u0679:<\/strong> \u067e\u06cc\u0679\u0631\u0646 2 (\u0627\u0633\u0679\u06cc\u062c\u0646\u06af \u0634\u06cc\u0688\u0648\u0644)\u060c \u067e\u06cc\u0679\u0631\u0646 5 (\u0679\u0648\u067e\u06cc\u0648\u0644\u0648\u062c\u06cc-\u0622\u0648\u06cc\u0626\u0631 \u0631\u0648\u0679\u0646\u06af)\u060c \u0627\u0648\u0631 \u067e\u06cc\u0679\u0631\u0646 4 (\u067e\u06c1\u0644\u06d2 \u0627\u06cc\u06a9 \u0627\u0633\u06a9\u06cc\u0644 \u0633\u0627\u0626\u06cc\u06a9\u0644 \u0686\u0644\u0627\u0626\u06cc\u06ba\u060c \u067e\u06be\u0631 \u0628\u0686\u062a \u06a9\u06d2 \u0645\u0646\u0635\u0648\u0628\u0648\u06ba \u06a9\u0627 \u062c\u0627\u0626\u0632\u06c1 \u0644\u06cc\u06ba)\u06d4<\/p>\n<p>\u06c1\u0631 \u062a\u0631\u0645\u06cc\u0645 \u06a9\u06d2 \u0628\u0639\u062f Cost Explorer \u06a9\u06be\u0648\u0644\u06cc\u06ba\u06d4 \u0627\u0633 \u06af\u0627\u0626\u06cc\u0688 \u06a9\u06d2 \u0634\u0631\u0648\u0639 \u0645\u06cc\u06ba \u0628\u06cc\u0633 \u0644\u0627\u0626\u0646 \u0627\u0633\u06a9\u0631\u06cc\u0646 \u0634\u0627\u0679 \u0633\u06d2 \u0627\u0633 \u06a9\u0627 \u0645\u0648\u0627\u0632\u0646\u06c1 \u06a9\u0631\u06cc\u06ba\u06d4 \u0644\u0627\u0626\u0646 \u0646\u06cc\u0686\u06d2 \u062c\u0627\u0646\u0627 \u0634\u0631\u0648\u0639 \u06c1\u0648\u0646\u0627 \u0686\u0627\u06c1\u0626\u06d2\u06d4<\/p>\n<h2 id=\"heading-resources\">\u0648\u0633\u0627\u0626\u0644<\/h2>\n<p><em>\u0627\u06cc\u0648\u0628\u0627\u0645\u06cc \u0627\u0688\u06cc\u062c\u0648\u0645\u0648<\/em> <em>\u0633\u06cc\u0646\u0626\u0631 \u067e\u0644\u06cc\u0679 \u0641\u0627\u0631\u0645 \u0627\u0646\u062c\u06cc\u0646\u0626\u0631 \u0627\u0648\u0631 FinOps \u0645\u0627\u06c1\u0631\u06d4 \u0627\u0633 \u0646\u06d2 30 \u0633\u06d2 \u200b\u200b\u0632\u06cc\u0627\u062f\u06c1 \u0633\u06cc\u0631\u06cc\u0632 A \u06a9\u0645\u067e\u0646\u06cc\u0648\u06ba \u06a9\u06d2 \u0644\u06cc\u06d2 AWS \u0627\u0646\u0641\u0631\u0627\u0633\u0679\u0631\u06a9\u0686\u0631 \u06a9\u0627 \u0622\u0688\u0679 \u06a9\u06cc\u0627 \u06c1\u06d2 \u0627\u0648\u0631 FinOps \u0641\u0627\u0624\u0646\u0688\u06cc\u0634\u0646 \u0627\u062b\u0627\u062b\u06c1 \u0644\u0627\u0626\u0628\u0631\u06cc\u0631\u06cc \u0645\u06cc\u06ba \u0639\u0645\u0644\u06cc \u0679\u0648\u0644\u0632 \u06a9\u0627 \u062a\u0639\u0627\u0648\u0646 \u06a9\u06cc\u0627 \u06c1\u06d2\u06d4<\/em><\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u0622\u067e \u0646\u06d2 \u0627\u067e\u0646\u06cc \u0633\u06cc\u0631\u06cc\u0632 A \u06a9\u0648 \u0628\u0691\u06be\u0627\u06cc\u0627\u06d4 \u0627\u0646\u062c\u06cc\u0646\u0626\u0631\u0646\u06af \u0679\u06cc\u0645 \u06a9\u0648 \u062a\u06cc\u0632\u06cc \u0633\u06d2 \u0628\u06be\u0631\u062a\u06cc \u06a9\u0631 \u0644\u06cc\u0627 \u06af\u06cc\u0627\u06d4 \u062e\u0635\u0648\u0635\u06cc\u0627\u062a \u062a\u06cc\u0632\u06cc \u0633\u06d2 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u06cc \u062c\u0627\u062a\u06cc \u06c1\u06cc\u06ba\u06d4 \u0627\u0648\u0631 \u06a9\u06c1\u06cc\u06ba 6 \u0627\u0648\u0631 12 \u0645\u0627\u06c1 \u06a9\u06d2 \u0628\u0639\u062f\u060c \u06a9\u0648\u0626\u06cc AWS Cost Explorer \u06a9\u0627 \u0627\u0633\u06a9\u0631\u06cc\u0646 \u0634\u0627\u0679 \u0644\u06d2 \u06a9\u0631 \u06af\u0632\u0631\u0627 \u062c\u0633 \u0646\u06d2 \u0635\u0631\u0641 \u0644\u0627\u0626\u0646 \u06a9\u0648 \u0627\u0648\u067e\u0631 \u062c\u0627\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u062f\u06a9\u06be\u0627\u06cc\u0627\u06d4 \u0648\u06c1 \u0644\u0627\u0626\u0646\u06cc\u06ba \u0628\u06d2 \u062a\u0631\u062a\u06cc\u0628 \u0646\u06c1\u06cc\u06ba [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[1],"tags":[],"class_list":["post-24821","post","type-post","status-publish","format-standard","hentry","category-blog"],"_links":{"self":[{"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/posts\/24821","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/comments?post=24821"}],"version-history":[{"count":0,"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/posts\/24821\/revisions"}],"wp:attachment":[{"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/media?parent=24821"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/categories?post=24821"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/tags?post=24821"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}