תיוג משאבי AWS לחלוקת עלויות

כשחשבון הענן מגיע ללא פירוט, אי אפשר להבין איזה צוות ואיזה פרויקט מייצרים את העלויות העיקריות. אנחנו מפתחים ומיישמים מערכת תיוג של AWS עם מדיניות אכיפה שמקצה הוצאות אוטומטית לפי צוותים ופרויקטים. הצוות שלנו מספק את הפרויקט במפתח מלא—מביקורת התשתית הנוכחית ועד להגדרת כללים ותמיכה, תוך הבטחת שקיפות ושליטה בתקציב.

היכולות שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1359
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1330
  • עיצוב לוגו לחברת B2B Advance
    עיצוב לוגו לחברת B2B Advance
    776
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1077
  • פיתוח לוגו חברת AIDER
    פיתוח לוגו חברת AIDER
    1022
  • פיתוח CRM עבור Chasseurs
    פיתוח CRM עבור Chasseurs
    1113

הטמעת תיוג משאבים לחלוקת עלויות לפי פרויקטים וצוותים

בסוף החודש, מחלקת הכספים שולחת חשבון AWS בסך 40,000 דולר — ואף אחד לא יכול לדעת איזה צוות צרך שליש מהתקציב. מופעי EC2 ללא תגיות, דליים של S3 עם שמות כמו backup-old-2022, אשכולות RDS עם Owner שהושארו ריקים. נתקלנו בזה פעמים רבות. הפתרון הוא תמיד אותו דבר — תיוג שיטתי עם מדיניות אכיפה. זה לא על דוחות יפים. זה על הפיכת חשבון הענן מקופסה שחורה לפירוט מפורט: כמה צוות ה-backend מוציא, כמה הולך לסביבת ה-staging של פרויקט התשלומים, ומאיפה מגיע הזינוק הלא מוסבר של 3,000 דולר עבור תעבורה יוצאת. בהתבסס על הנתונים שלנו, עד 30% מעלויות הענן הולכות למשאבים לא מתויגים. זה 10,000–15,000 דולר בחודש עבור פרויקט טיפוסי. למהנדסים שלנו יש הסמכות AWS וניסיון של 10+ שנים בתשתיות ענן. אנו מבטיחים שקיפות עלויות לאחר הטמעת מערכת התיוג.

למה פשוט הוספת תגיות לא עובדת

הניסיון הנפוץ ביותר הוא לומר למפתחים "תייגו משאבים בעת יצירתם" ולהוסיף זאת לרשימת הבדיקות של ה-PR. שלושה חודשים לאחר מכן, 40% מהמשאבים עדיין לא מתויגים. מישהו יצר מופע ידנית דרך הקונסולה, הריץ terraform apply ללא המשתנים הנדרשים, או פשוט שכח.

המלכוד השני הוא טקסונומיה לא עקבית. צוות אחד כותב environment: prod, אחר env: production, ושלישי Env: Production. AWS Cost Explorer לא ממזג אותם אוטומטית. הדוח מציג שלוש שורות לא קשורות במקום אחת.

הבעיה השלישית היא שתגיות לא עוברות בירושה. אם Terraform יוצר Auto Scaling Group ללא propagate_at_launch = true, מופעי EC2 מאותה קבוצה מופיעים ללא תגיות. ה-ASG עצמו מתויג כראוי.

איך לבנות אסטרטגיית תיוג

אנחנו מתחילים בביקורת של המצב הנוכחי. השתמשו בפקודה זו: aws resourcegroupstaggingapi get-resources --resource-type-filters ec2:instance --query 'ResourceTagMappingList[?Tags==[]]'. זה מראה כמה משאבים אין להם תגיות כלל. בפרויקט טיפוסי, זה 30–50%.

לאחר מכן אנו מגדירים תגיות חובה. סט עבודה מינימלי:

תגית ערך לדוגמה מטרה
project payments-api לאיזה מוצר המשאב שייך
team backend הצוות המחזיק
environment production סביבה (production/staging/dev)
managed-by terraform איך המשאב מנוהל
cost-center CC-BE-01 מרכז עלות לדיווח כספי

לאחר הסכמה על הטקסונומיה, אנו מיישמים אותה ברמת ה-IaC. ב-Terraform, אנו מוסיפים default_tags בבלוק ה-provider:

provider "aws" {
  region = var.aws_region
  default_tags {
    tags = {
      project     = var.project_name
      team        = var.team_name
      environment = var.environment
      managed-by  = "terraform"
    }
  }
}

זה מבטיח ירושת תגיות לכל המשאבים שנוצרים ללא ציון מפורש בכל מודול. עבור ASG, אנו מוסיפים provider "aws" { region = var.aws_region default_tags { tags = { project = var.project_name team = var.team_name environment = var.environment managed-by = "terraform" } } } :

resource "aws_autoscaling_group" "app" {
  # ...
  tag {
    key                 = "project"
    value               = var.project_name
    propagate_at_launch = true
  }
}

לאכיפה, אנו מפעילים את AWS Config Rule propagate_at_launch. משאב ללא תגיות חובה מסומן כ-NON_COMPLIANT. אנו יכולים להגדיר התראה ב-CloudWatch או מדיניות בידוד אוטומטית דרך AWS Config Remediations.

מה לעשות עם משאבים קיימים

תיוג רטרוספקטיבי הוא משימה נפרדת. הגישות כוללות סקריפטים ב-boto3 שעוברים על כל האזורים והשירותים, ומוסיפים תגיות לפי כללים (לדוגמה, לפי resource "aws_autoscaling_group" "app" { # ... tag { key = "project" value = var.project_name propagate_at_launch = true } } מתפקיד ה-IAM או לפי שם קבוצת האבטחה). אנו משתמשים בשילוב של required-tags עם ייצוא מקדים של רשימת המשאבים. עבור דליים של S3 שנוצרו ללא תגיות, אנו משתמשים בסקריפט נפרד שקורא את שם הדלי ומחיל תגיות לפי מסכה (לדוגמה, Owner → aws resourcegroupstaggingapi tag-resources). הריצו זאת בחלון תחזוקה וראשית על סביבה שאינה production.

מדיניות תגיות ב-AWS Organizations

אם לחשבון יש מספר צוותים או שהוא משתמש במבנה רב-חשבונות, Tag Policies ברמת ה-Organization הם הדרך היחידה להבטיח עקביות. לפי תיעוד AWS על Tag Policies, Tag Policies מגדירים ערכים מותרים למפתחות ספציפיים. מדיניות:

{
  "tags": {
    "environment": {
      "tag_key": {
        "@@assign": "environment"
      },
      "tag_value": {
        "@@assign": [
          "production",
          "staging",
          "development",
          "testing"
        ]
      },
      "enforced_for": {
        "@@assign": [
          "ec2:instance",
          "rds:db",
          "s3:bucket"
        ]
      }
    }
  }
}

לאחר החלת המדיניות, ערך כמו logs-* יידחה. רק environment: production, team: infra מותר. זה מחמיר, אבל בדיוק מה שצריך לחלוקת עלויות עובדת. המהנדסים שלנו מגדירים מדיניות כזו תוך התחשבות בנוף הקיים.

דוחות והדמיה

לאחר שבועיים עד שלושה שבועות של עבודה עם תגיות, AWS Cost Explorer מתחיל לספק נתונים שימושיים. אנו מגדירים Cost Allocation Tags בקונסולת החיוב. רק אז תגיות מופיעות בדוחות. ללא שלב זה, תגיות קיימות אבל Cost Explorer לא רואה אותן.

לניתוח מפורט יותר, אנו מייצאים Cost and Usage Reports ל-S3 ובונים שאילתות Athena:

SELECT resource_tags_user_project AS project, resource_tags_user_team AS team, SUM(line_item_unblended_cost) AS total_cost
FROM cur_data
WHERE line_item_usage_start_date >= CURRENT_DATE - INTERVAL '90' DAY
GROUP BY 1, 2
ORDER BY 3 DESC;

זה זול יותר מ-Cloudability או Apptio אם ההיקף לא דורש כלים ארגוניים.

באיזו גישת אכיפה לבחור

בדיקת PR ידנית עובדת בקנה מידה קטן אבל מפספסת שגיאות במהלך פריסות דרך הקונסולה. AWS Config Rules חוסמות משאבים לא תואמים באופן מרכזי אבל דורשות כללים לכל שירות. Tag Policies מבטיחים טקסונומיה אחידה ברמת החשבון אבל לא מתקנים משאבים שכבר נוצרו. בדיקות CI ב-Terraform (tflint, checkov) מגינות בשלב הקוד אבל לא מכסות שינויים ידניים. אנו משלבים Tag Policies עם בדיקות CI. זה מכסה 95% מהתרחישים.

שלבי העבודה

תוכנית ההטמעה מחולקת לשלבים עם לוחות זמנים ותוצרים ספציפיים:

שלב משך תוצאה
ביקורת 1–2 ימים מלאי של משאבים לא מתויגים וניתוח הטקסונומיה הנוכחית
עיצוב 2–3 ימים הסכמה על תגיות חובה, ערכים מותרים ובעלים
שילוב IaC 3–5 ימים { "tags": { "environment": { "tag_key": { "@@assign": "environment" }, "tag_value": { "@@assign": ["production", "staging", "development", "testing"] }, "enforced_for": { "@@assign": ["ec2:instance", "rds:db", "s3:bucket"] } } } } ב-Terraform, עדכוני מודולים, בדיקות הפצת ASG
אכיפה 3–5 ימים AWS Config Rules, Tag Policies, שער CI דרך tflint או checkov
תיוג רטרוספקטיבי 2–4 ימים סקריפטים לתיוג משאבים קיימים דרך AWS CLI או boto3
דיווח 2–3 ימים Cost Allocation Tags, CUR ב-S3, לוחות מחוונים ב-Cost Explorer או Grafana

לוחות הזמנים תלויים במספר החשבונות ובמורכבות ה-IaC. עבור חשבון יחיד עם Terraform, זה 1–2 שבועות. עבור רב-חשבונות עם Organizations ומספר צוותים, זה 3–6 שבועות.

מה כלול בעבודה

  • תיעוד טקסונומיית התגיות (מפתחות חובה ואופציונליים, ערכים מותרים)
  • עדכון מודולי Terraform ותצורות pipeline לבדיקות תגיות אוטומטיות
  • הגדרת AWS Config Rules ו-Tag Policies עם זיהוי והתראות
  • סקריפטים לתיוג רטרוספקטיבי של משאבים קיימים
  • שאילתות Athena מוכנות ולוחות מחוונים לדיווח עלויות
  • הדרכת צוות (1–2 שיחות) ותמיכה לחודש לאחר ההטמעה

בקשו ייעוץ: נעריך את הפרויקט שלכם תוך יומיים ונציע תוכנית הטמעה מלאה. צרו קשר כדי להביא סדר לעלויות הענן שלכם. קבלו ביקורת של מצב התיוג הנוכחי — נראה לכם כמה כסף דולף על משאבים לא מתויגים.