0Pricing
AWS Solutions Architect · درس

Step Functions: تنسيق سير العمل دون خوادم

عرّف سير العمل متعدد الخطوات باعتباره آلات حالات في Step Functions، وعالج الأخطاء باستخدام كتل الالتقاط وإعادة المحاولة، وادمج تكاملات SDK الأصلية

Step Functions: تنسيق سير العمل دون خوادم درس مجاني في AWS Solutions Architect على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في AWS Solutions Architect، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة AWS Solutions Architect 4 دروس في المجموع.

ما هي AWS Step Functions؟

AWS Step Functions هي خدمة مُدارة بالكامل لتنسيق مسارات العمل، تنسّق التطبيقات الموزعة باعتبارها سلسلة من الخطوات المحددة في آلة حالات. كل خطوة في آلة الحالات هي حالة — مثل استدعاء Lambda، أو استدعاء AWS SDK، أو فترة انتظار، أو فرع متوازٍ، أو اختيار (if/else). تدير Step Functions الحالة، وتتولى إعادة المحاولات، وتوفر سجلًا مرئيًا للتنفيذ، مما يلغي الحاجة إلى كتابة منطق التنسيق داخل تعليمات التطبيق البرمجية.

لغة Amazon States Language (ASL)

تُعرَّف آلات الحالات باستخدام Amazon States Language (ASL)، وهي لغة قائمة على JSON. لكل حالة قيمة Type (Task أو Choice أو Wait أو Parallel أو Map أو Pass أو Succeed أو Fail)، وتنتقل إلى حالة Next أو تنتهي. يحدد الحقل Resource في حالة Task خدمة AWS المطلوب استدعاؤها — وهو ARN لـ Lambda، أو ARN لتكامل خدمة محسّن لأكثر من 200 خدمة من خدمات AWS من دون Lambda وسيطة.

{
  'Comment': 'Order processing workflow',
  'StartAt': 'ValidateOrder',
  'States': {
    'ValidateOrder': {
      'Type': 'Task',
      'Resource': 'arn:aws:lambda:us-east-1:123456789012:function:ValidateOrder',
      'Next': 'ChargePayment',
      'Retry': [{'ErrorEquals': ['Lambda.ServiceException'], 'IntervalSeconds': 2, 'MaxAttempts': 3}]
    },
    'ChargePayment': {
      'Type': 'Task',
      'Resource': 'arn:aws:states:::dynamodb:putItem',
      'Parameters': {'TableName': 'Orders', 'Item': {'orderId': {'S.$': '$.orderId'}}},
      'End': true
    }
  }
}

مسارات العمل Standard مقابل Express

تحتوي Step Functions على نوعين من مسارات العمل. مسارات العمل Standard: متينة، وتستمر لمدة تصل إلى عام واحد، وتستخدم دلالات تنفيذ مرة واحدة بالضبط، مع تخزين سجل التنفيذ الكامل لمدة 90 يومًا — وهي مناسبة للعمليات التجارية طويلة الأمد. مسارات العمل Express: ذات معدل نقل عالٍ (أكثر من 100,000 تنفيذ في الثانية)، وتستمر لمدة تصل إلى 5 دقائق، وتستخدم دلالات التنفيذ مرة واحدة على الأقل، وتُرسَل سجلاتها إلى CloudWatch — وهي مناسبة لمعالجة الأحداث في الوقت الفعلي ومسارات بيانات إنترنت الأشياء. اختاروا النوع بناءً على متطلبات المدة ومعدل النقل وقابلية جعل العمليات غير متكررة.

# Create a Standard workflow state machine
aws stepfunctions create-state-machine \
  --name OrderProcessing \
  --definition file://order-state-machine.json \
  --role-arn arn:aws:iam::123456789012:role/StepFunctionsRole \
  --type STANDARD

# Create an Express workflow for high-throughput
aws stepfunctions create-state-machine \
  --name ClickstreamProcess \
  --definition file://click-state-machine.json \
  --role-arn arn:aws:iam::123456789012:role/StepFunctionsRole \
  --type EXPRESS

حالات المهام وتكاملات الخدمات

تدعم حالات Task في Step Functions نمطين للتكامل. الطلب والاستجابة: استدعاء خدمة AWS والمتابعة فورًا (إطلاق دون انتظار). التكامل المتزامن: استدعاء خدمة والانتظار حتى اكتمالها قبل الانتقال إلى الحالة التالية (مثل انتظار اكتمال مهمة ECS أو انتهاء مهمة Glue أو انتهاء مهمة تدريب SageMaker). يستخدم التكامل المتزامن اللاحقة :sync:2 في ARN المورد، ويلغي الحاجة إلى منطق الاستقصاء.

# Sync integration: start Glue job and wait for completion
'RunGlueETL': {
  'Type': 'Task',
  'Resource': 'arn:aws:states:::glue:startJobRun.sync:2',
  'Parameters': {
    'JobName': 'clean-sales'
  },
  'Next': 'RunAthenaQuery'
}

حالات Choice لمنطق التفرع

تطبّق حالة Choice التفرع الشرطي — وهي النظير الخاص بمسار العمل لعبارة if/else أو switch. تعرّفون Choices كمصفوفة من الشروط؛ ويحدد أول شرط مطابق الحالة التالية. وتتولى حالة Default معالجة الحالات غير المطابقة. وتتيح حالات Choice توجيه طلب إلى مسارات تنفيذ مختلفة بناءً على نوع المنتج أو فئة العميل أو حالة الدفع، من دون كتابة منطق شرطي داخل Lambda.

'RouteByOrderType': {
  'Type': 'Choice',
  'Choices': [
    {
      'Variable': '$.orderType',
      'StringEquals': 'DIGITAL',
      'Next': 'FulfillDigital'
    },
    {
      'Variable': '$.orderType',
      'StringEquals': 'PHYSICAL',
      'Next': 'FulfillPhysical'
    }
  ],
  'Default': 'HandleUnknownType'
}

حالتا Parallel وMap

تشغّل حالة Parallel عدة فروع في الوقت نفسه، وتنتظر اكتمالها جميعًا قبل المتابعة — وهو أمر مفيد للمهام المتزامنة، مثل إجراء فحص ائتماني وفحص للمخزون في الوقت نفسه. أما حالة Map فتكرّر التنفيذ على مصفوفة موجودة في الإدخال، وتطبّق مجموعة الحالات نفسها على كل عنصر بالتوازي — وهو أمر مفيد لمعالجة مجموعة من العناصر التي أعادتها خطوة سابقة، مثل تغيير حجم عدة صور مرفوعة.

'ProcessImages': {
  'Type': 'Map',
  'ItemsPath': '$.imageKeys',
  'MaxConcurrency': 10,
  'Iterator': {
    'StartAt': 'ResizeImage',
    'States': {
      'ResizeImage': {
        'Type': 'Task',
        'Resource': 'arn:aws:lambda:us-east-1:123:function:ResizeImage',
        'End': true
      }
    }
  },
  'Next': 'NotifyComplete'
}

معالجة الأخطاء: Catch وRetry

يمكن أن تحتوي كل حالة Task في Step Functions على كتلتَي Retry وCatch لمعالجة الأخطاء بمرونة. تحدد Retry أنواع الأخطاء التي تؤدي إلى إعادة المحاولة تلقائيًا، مع إمكانية تهيئة IntervalSeconds وMaxAttempts وBackoffRate (معامل التراجع الأُسّي). وتحدد Catch الحالات البديلة للأخطاء غير القابلة للاسترداد. وتتجنب معالجة الأخطاء التعريفية هذه الحاجة إلى كتل try/catch المتكررة داخل دوال Lambda.

'ChargeCard': {
  'Type': 'Task',
  'Resource': 'arn:aws:lambda:us-east-1:123:function:ChargeCard',
  'Retry': [{
    'ErrorEquals': ['Lambda.ServiceException', 'States.TaskFailed'],
    'IntervalSeconds': 2,
    'MaxAttempts': 3,
    'BackoffRate': 2.0
  }],
  'Catch': [{
    'ErrorEquals': ['PaymentDeclined'],
    'Next': 'NotifyPaymentFailed',
    'ResultPath': '$.error'
  }],
  'Next': 'FulfillOrder'
}

حالات Wait وعمليات الاستدعاء الراجعة

توقف حالة Wait تنفيذ مسار العمل لمدة ثابتة أو حتى وقت وتاريخ محددين. ويوقف نمط Callback (باستخدام .waitForTaskToken) التنفيذ حتى يستدعي نظام خارجي SendTaskSuccess أو SendTaskFailure باستخدام الرمز المميز. بهذه الطريقة تصمم Step Functions خطوات الموافقة البشرية: أرسلوا رسالة بريد إلكتروني تتضمن الرمز المميز للمهمة، ويُستأنف مسار العمل عندما ينقر شخص على رابط الموافقة أو الرفض في برنامج البريد الإلكتروني لديه.

# Callback pattern: wait for human approval
'RequestApproval': {
  'Type': 'Task',
  'Resource': 'arn:aws:states:::sqs:sendMessage.waitForTaskToken',
  'Parameters': {
    'QueueUrl': 'https://sqs.us-east-1.amazonaws.com/123/approvals',
    'MessageBody': {
      'taskToken.$': '$$.Task.Token',
      'orderId.$': '$.orderId'
    }
  },
  'Next': 'ProcessApproval'
}

تكامل Step Functions مع EventBridge

يمكن بدء عمليات تنفيذ Step Functions بواسطة قواعد EventBridge، مما يسهّل تشغيل مسارات العمل استجابةً لأحداث خدمات AWS. على سبيل المثال، يؤدي حدث S3 ObjectCreated إلى تشغيل قاعدة EventBridge التي تبدأ مسار عمل Step Functions لمعالجة الصور. ويمكن لـ Step Functions أيضًا نشر أحداثها الخاصة إلى EventBridge عند نجاح عمليات التنفيذ أو فشلها، مما يتيح المراقبة والتنبيه في الخدمات اللاحقة من دون استقصاء واجهة برمجة تطبيقات Step Functions.

مراقبة عمليات تنفيذ Step Functions

توفر وحدة تحكم Step Functions مخططًا مرئيًا لتنفيذ مسار العمل يوضح الحالات التي نجحت أو قيد التشغيل أو فشلت — مع ترميز لوني في الوقت الفعلي. ويخزّن كل تنفيذ سجل الإدخال/الإخراج الكامل لمسارات العمل Standard (مع الاحتفاظ به لمدة 90 يومًا). أما في مسارات العمل Express، فتُرسَل السجلات إلى CloudWatch Logs. استخدموا تتبّع X-Ray لتتبّع زمن استجابة الطلب من البداية إلى النهاية عبر دوال Lambda والخدمات الأخرى التي يتم استدعاؤها ضمن مسار العمل.

# List recent executions and check status
aws stepfunctions list-executions \
  --state-machine-arn arn:aws:states:us-east-1:123456789012:stateMachine:OrderProcessing \
  --status-filter FAILED

# Describe a specific failed execution for debugging
aws stepfunctions describe-execution \
  --execution-arn arn:aws:states:us-east-1:123456789012:execution:OrderProcessing:exec-001

Step Functions مقابل SQS مقابل EventBridge

تُعد معرفة الوقت المناسب لاستخدام Step Functions بدلًا من SQS أو EventBridge نقطة شائعة في أسئلة الاختبار. استخدموا Step Functions عندما تحتاجون إلى تنسيق مرئي وحفظ للحالة لعملية متعددة الخطوات، مع معالجة الأخطاء والتفرع. استخدموا SQS للمراسلة غير المتزامنة الموثوقة من نقطة إلى نقطة بين خدمتين، مع إعادة المحاولة عبر مهلة إخفاء الرسالة. استخدموا EventBridge لتوجيه الأحداث إلى عدة مشتركين استنادًا إلى أنماط المحتوى. ويمكن لمسار عمل Step Functions دمج الخدمات الثلاث جميعًا: الانتظار لرسالة SQS عبر رمز مميز لمهمة، ونشر الإكمال إلى EventBridge، وربط استدعاءات Lambda وSDK في سلسلة.

تحقق سريع

اختبر مدى فهمك لمفاهيم AWS Solutions Architect (SAA-C03) الواردة في هذا الدرس.

مراجعة الدرس

تعلمت في هذا الدرس أن: Step Functions تنسّق سير العمل باعتباره آلات حالات، باستخدام حالات Task وChoice وParallel وMap وWait وCatch، وأن سير العمل القياسي يدعم مدة تصل إلى سنة واحدة مع الاحتفاظ الكامل بسجل التنفيذ، بينما يتعامل سير العمل Express مع أحمال العمل ذات الإنتاجية العالية التي تقل مدتها عن 5 دقائق، وأن نمط Callback مع رموز المهام يتيح خطوات الموافقة التي تتضمن تدخلاً بشريًا. سنتناول بعد ذلك Kinesis Data Streams لمعالجة الأحداث في الوقت الفعلي وبإنتاجية عالية.

الأسئلة الشائعة

هل درس «Step Functions: تنسيق سير العمل دون خوادم» مجاني؟

نعم — نص درس «Step Functions: تنسيق سير العمل دون خوادم» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة AWS Solutions Architect، انتقل إلى CoddyKit PRO. تتضمن دورة AWS Solutions Architect 4 دروس في المجموع.

ماذا ستتعلم في «Step Functions: تنسيق سير العمل دون خوادم»؟

عرّف سير العمل متعدد الخطوات باعتباره آلات حالات في Step Functions، وعالج الأخطاء باستخدام كتل الالتقاط وإعادة المحاولة، وادمج تكاملات SDK الأصلية تتمرن على AWS Solutions Architect مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ AWS Solutions Architect؟

لا تُشترط خبرة سابقة. AWS Solutions Architect على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.

كم من الوقت يستغرق درس «Step Functions: تنسيق سير العمل دون خوادم»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس AWS Solutions Architect هذا؟

نعم. كل درس في AWS Solutions Architect يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. EventBridge: ناقل الأحداث والقواعد
  2. Step Functions: تنسيق سير العمل دون خوادم
  3. Kinesis Data Streams لمعالجة الأحداث الفورية
  4. أنماط التنسيق مقابل التوجيه المركزي
← العودة إلى AWS Solutions Architect