إيقاف رسوم Elastic IP في AWS: متى تحتاج إلى فصل العنوان وتحريره؟

أوقفت تشغيل EC2 instance الخاص بك، لكن فاتورة AWS لا تزال تتضمن رسوماً على Elastic IP — هذا سيناريو شائع يفاجئ كثيراً من المهندسين لأول مرة. المشكلة ليست في إيقاف الـ instance، بل في طبيعة نموذج تسعير Elastic IP نفسه الذي يختلف جوهرياً عن بقية موارد AWS.

ملخص سريع (TL;DR): متى تتوقف رسوم Elastic IP؟

الحالة هل تُفرض رسوم على Elastic IP؟ الإجراء المطلوب
Instance تعمل وEIP مرتبط بها لا — مجاني لا شيء
Instance متوقفة (stopped) وEIP مرتبط بها نعم — يُفرض رسوم فصل (Disassociate) ثم تحرير (Release)
EIP غير مرتبط بأي مورد نعم — يُفرض رسوم تحرير (Release) فوراً
EIP محرَّر (Released) لا — لا رسوم تم — العنوان لم يعد ملكك

كيف يعمل نموذج تسعير Elastic IP

منطق AWS هنا بسيط لكنه يعاكس التوقع الأول: الرسوم لا تُفرض على الاستخدام الفعلي للعنوان، بل على الاحتجاز. عناوين IPv4 العامة مورد نادر، وAWS تريد تحفيز المستخدمين على تحرير العناوين غير المستخدمة بدلاً من احتجازها.

القاعدة الموثقة في صفحة تسعير EC2 هي: Elastic IP مجاني فقط عندما يكون مرتبطاً بـ instance تعمل فعلياً. في أي حالة أخرى — instance متوقفة، أو EIP غير مرتبط بأي مورد — تبدأ الرسوم بالساعة.

الأمر يشبه إيجار موقف سيارات في مدينة مزدحمة: لا يهم إن كانت سيارتك موجودة أم لا — أنت تدفع طالما الموقف محجوز باسمك.
graph TD A["Elastic IP مخصص للحساب"] --> B{"هل مرتبط بـ Instance؟"} B -- نعم --> C{"هل الـ Instance تعمل؟"} B -- لا --> D["رسوم بالساعة ✗"] C -- نعم --> E["مجاني ✓"] C -- لا (Stopped) --> F["رسوم بالساعة ✗"] D --> G["Release لإيقاف الرسوم"] F --> H["Disassociate ثم Release"] G --> I["لا رسوم — EIP محذوف"] H --> I
  1. EIP مرتبط + Instance تعمل: الحالة الوحيدة التي لا تُفرض فيها رسوم على EIP.
  2. Instance متوقفة + EIP مرتبط: رسوم تبدأ فوراً — الارتباط لا يزال موجوداً لكن المورد غير نشط.
  3. EIP غير مرتبط: رسوم أيضاً — العنوان محجوز في حسابك دون استخدام.
  4. بعد Release: العنوان يعود لـ pool العام وتتوقف الرسوم تماماً.

الفرق بين Disassociate وRelease — وأيهما تحتاج؟

هذا هو الخلط الأكثر شيوعاً. العمليتان مختلفتان تماماً:

  • Disassociate (فصل): يزيل الارتباط بين EIP والـ instance، لكن العنوان يبقى في حسابك — وتستمر الرسوم.
  • Release (تحرير): يُعيد العنوان لـ AWS نهائياً وتتوقف الرسوم. لن تتمكن من استرداد نفس العنوان لاحقاً.

إذا كنت تريد إيقاف الرسوم نهائياً، تحتاج إلى كلتا العمليتين بالترتيب: Disassociate أولاً، ثم Release. لا يمكنك تحرير EIP مرتبط مباشرة — يجب فصله أولاً.

خطوات إيقاف رسوم Elastic IP عبر AWS CLI

الخطوة 1: تحديد EIP المرتبط بالـ Instance

قبل أي إجراء، تحقق من حالة العناوين في حسابك. هذا يكشف كل EIP مع حالة ارتباطه — وهو ما تحتاجه لتحديد العناوين التي تُسبب الرسوم.

aws ec2 describe-addresses \
  --region us-east-1 \
  --query 'Addresses[*].{EIP:PublicIp,AllocationId:AllocationId,AssociationId:AssociationId,InstanceId:InstanceId,State:Domain}' \
  --output table

ابحث في النتيجة عن العناوين التي تحتوي على AllocationId لكن AssociationId فارغ — هذه غير مرتبطة وتُفرض عليها رسوم. العناوين المرتبطة بـ instance متوقفة ستظهر مع InstanceId لكن الـ instance في حالة stopped.

الخطوة 2: فصل EIP عن الـ Instance (Disassociate)

إذا كان EIP مرتبطاً بـ instance متوقفة، افصله أولاً. تحتاج إلى AssociationId من الخطوة السابقة — وليس AllocationId. الخلط بينهما خطأ شائع يُنتج رسالة خطأ غير واضحة.

aws ec2 disassociate-address \
  --association-id eipassoc-0a1b2c3d4e5f67890 \
  --region us-east-1

بعد هذه الخطوة، EIP لا يزال في حسابك والرسوم مستمرة — لكنه الآن جاهز للتحرير.

الخطوة 3: تحرير EIP نهائياً (Release)

هذه الخطوة هي التي توقف الرسوم فعلياً. استخدم AllocationId هذه المرة.

aws ec2 release-address \
  --allocation-id eipalloc-0a1b2c3d4e5f67890 \
  --region us-east-1

لا يوجد تأكيد — الأمر ينفذ فوراً. العنوان يختفي من حسابك ولا يمكن استرداده.

التحقق من اختفاء EIP من الحساب

تأكد أن العنوان لم يعد موجوداً لتجنب أي مفاجآت في الفاتورة القادمة.

aws ec2 describe-addresses \
  --region us-east-1 \
  --output table

إذا كانت النتيجة فارغة أو لا تحتوي على العنوان المُحرَّر، فالعملية نجحت.

صلاحيات IAM المطلوبة

للتنفيذ الكامل لهذه العمليات، يحتاج المستخدم أو الـ role إلى الصلاحيات التالية:

🔽 عرض IAM Policy المطلوبة
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:DescribeAddresses",
        "ec2:DisassociateAddress",
        "ec2:ReleaseAddress"
      ],
      "Resource": "*"
    }
  ]
}

لاحظ أن ec2:DescribeAddresses وec2:DisassociateAddress وec2:ReleaseAddress تتطلب "Resource": "*" — هذه عمليات لا تدعم تقييد الـ resource على مستوى ARN وفقاً لـ Service Authorization Reference.

سيناريو حقيقي: التشخيص الخاطئ الشائع

المهندس يرى رسوماً على EIP في Cost Explorer، يفتح الـ console، يجد الـ instance في حالة stopped والـ EIP يبدو 'مرتبطاً' — فيظن أن المشكلة ستحل بتشغيل الـ instance ثم إيقافها مجدداً. لا شيء يتغير في الفاتورة.

التشخيص الخاطئ هنا هو افتراض أن 'الارتباط' يعني 'الاستخدام'. الارتباط مجرد إشارة metadata — الـ instance المتوقفة لا تستخدم العنوان فعلياً، لكن EIP لا يزال محجوزاً في حسابك.

الحل الصحيح: إذا لم تكن بحاجة لنفس العنوان عند إعادة تشغيل الـ instance، حرره الآن. إذا كنت بحاجة للحفاظ على نفس IP العام (مثلاً لأن DNS يشير إليه)، الخيار الوحيد لتجنب الرسوم هو إبقاء الـ instance تعمل — أو قبول الرسوم كتكلفة للحفاظ على العنوان.

graph TD START["EIP مرتبط بـ Instance متوقفة"] --> Q1{"هل تحتاج نفس العنوان لاحقاً؟"} Q1 -- نعم (DNS أو Firewall) --> KEEP["إبقاء EIP = قبول الرسوم"] Q1 -- لا --> DIS["Disassociate Address"] DIS --> REL["Release Address"] REL --> DONE["رسوم متوقفة ✓"]
  1. هل تحتاج نفس العنوان لاحقاً؟ إذا كان DNS أو firewall rules يعتمد على هذا IP، قرر أولاً.
  2. Disassociate: يفصل العنوان عن الـ instance دون حذفه.
  3. Release: يحذف العنوان نهائياً من حسابك وتتوقف الرسوم.
  4. قبول الرسوم: إذا كنت بحاجة للحفاظ على العنوان، هذه تكلفة مقصودة.

نقطة عملية: تدقيق دوري على EIPs غير المستخدمة

في بيئات الإنتاج الكبيرة، تتراكم EIPs غير المستخدمة بمرور الوقت — خاصة بعد حذف instances أو إعادة هيكلة البنية. هذا الأمر يُدرج كل EIP في حسابك مع حالته:

aws ec2 describe-addresses \
  --region us-east-1 \
  --query 'Addresses[?AssociationId==`null`].{AllocationId:AllocationId,PublicIp:PublicIp}' \
  --output table

النتيجة تُظهر العناوين المخصصة لحسابك لكن غير المرتبطة بأي مورد — كل واحد منها يُفرض عليه رسوم بالساعة. هذا الأمر مفيد كـ scheduled check أسبوعي في بيئات التطوير.

إيقاف رسوم Elastic IP: الخلاصة والخطوات التالية

إيقاف EC2 instance لا يوقف رسوم Elastic IP — الرسوم مرتبطة بالاحتجاز لا بالاستخدام. لإيقاف الرسوم نهائياً: افصل EIP أولاً (disassociate-address)، ثم حرره (release-address). إذا كنت بحاجة للحفاظ على نفس العنوان، فالرسوم تكلفة لا مفر منها.

  • راجع صفحة تسعير EC2 للاطلاع على الأسعار الحالية لـ Elastic IPs.
  • استخدم AWS Cost Explorer لتتبع رسوم EIP بشكل دوري.
  • فكر في استخدام AWS Config rule لاكتشاف EIPs غير المرتبطة تلقائياً في بيئات الإنتاج.

مسرد المصطلحات

المصطلح التعريف
Elastic IP (EIP) عنوان IPv4 عام ثابت يمكن تخصيصه لحسابك وإعادة ارتباطه بموارد مختلفة.
Disassociate إزالة الارتباط بين EIP ومورد AWS، مع إبقاء العنوان محجوزاً في الحساب.
Release إعادة EIP لـ AWS نهائياً وإيقاف الرسوم — لا يمكن استرداد نفس العنوان.
AllocationId معرف EIP في حسابك (يبدأ بـ eipalloc-) — يُستخدم في عملية Release.
AssociationId معرف الارتباط بين EIP ومورد محدد (يبدأ بـ eipassoc-) — يُستخدم في عملية Disassociate.

Related Posts

تعليقات

المشاركات الشائعة من هذه المدونة

استرجاع معرّف نسخة EC2 عبر خدمة البيانات الوصفية IMDSv2

أوضاع سعة DynamoDB: متى تختار On-Demand ومتى تختار Provisioned؟

فهم مهلة الرؤية في SQS: لماذا تُعالَج رسائلك مرتين؟