خطوات الاستخدام
الخطوة 1: افتح حاسبة موارد CloudFormation. ستجد حقل إدخال نصي. قم بنسخ قالب CloudFormation الخاص بك (بصيغة JSON أو YAML) والصقه في هذا الحقل. تأكد من أن القالب كامل ويحتوي على قسم Resources على الأقل.
الخطوة 2: اضغط على زر 'احسب' أو 'Count'. ستقوم الحاسبة بتحليل القالب واستخراج جميع الموارد المعرفة ضمن قسم Resources. تتجاهل الحاسبة أقسام Parameters وOutputs وMappings وغيرها، وتركز فقط على كل كائن من نوع AWS::* تحت Resources.
الخطوة 3: بعد التحليل، ستعرض الحاسبة العدد الإجمالي للموارد في القالب. كما قد تظهر تفصيلاً بعدد كل نوع مورد (مثلاً: 2 EC2 Instance، 1 S3 Bucket، 3 Lambda Functions). يمكنك استخدام هذا العدد للتأكد من أن المكدس لن يتجاوز حدود AWS (500 مورد لكل مكدس) أو لتقدير التكاليف.
الخطوة 4: يمكنك أيضاً تعديل القالب وإعادة الحساب لمقارنة السيناريوهات المختلفة. تذكر أن الحاسبة لا تشمل الموارد التي تم إنشاؤها بواسطة nested stacks إذا كانت تلك المكدسات في قوالب منفصلة. لعد تلك الموارد، يجب معالجة كل قالب على حدة.
أمثلة محلولة
تطبيقات عملية على موارد CloudFormation بخطوات الحل كاملة.
الحل
الإجابة: 3 موارد. الحاسبة ستقوم بتحليل القالب وترى 3 كائنات في قسم Resources: كل مورد يبدأ بـ AWS:: ويتبعه نوع الخدمة. ستقوم بعد كل مورد بغض النظر عن تعقيد خصائصه. على سبيل المثال، إذا كان مثيل EC2 يحتوي على خصائص ImageId وInstanceType، فسيتم احتسابه كمورد واحد. النتيجة النهائية: العدد الإجمالي = 3.
الحل
الإجابة: الحاسبة تحسب جميع الموارد المعرفة في قالب CloudFormation بغض النظر عن الشروط. إذا استخدمت Condition لإنشاء مورد فقط في بيئة الإنتاج، فسيظل المورد موجوداً في القالب ويتم احتسابه. على سبيل المثال، إذا كان لديك مورد Lambda مشروط بـ Condition: IsProduction، فإن الحاسبة ستعتبره مورداً واحداً في القالب. العدد الإجمالي في هذا المثال هو 5 موارد. لا تتحقق الحاسبة من تنفيذ الشروط أثناء الإنشاء، بل تكتفي بعد التعريفات في القالب.
أمثلة محسوبة
قيم مُدخَلة ونتيجة محسوبة فعليًا بواسطة موارد CloudFormation.
مرجع — استبعاد قسم Parameters
- قالب CloudFormation
- Parameters: Env: Type: String Resources: Bucket: Type: AWS::S3::Bucket Table: Type: AWS::DynamoDB::Table Fn: Type: AWS::Lambda::Function
مرجع — قالب بصيغة JSON
- قالب CloudFormation
- { "Parameters": { "Env": { "Type": "String" } }, "Resources": { "Queue": { "Type": "AWS::SQS::Queue" }, "Role": { "Type": "AWS::IAM::Role" } } }
مرجع — مكدس متداخل مع_outputs
- قالب CloudFormation
- Resources: Bucket: Type: AWS::S3::Bucket Queue: Type: AWS::SQS::Queue Topic: Type: AWS::SNS::Topic Nested: Type: AWS::CloudFormation::Stack Role: Type: AWS::IAM::Role OutputsRef: Value: !GetAtt Bucket.Arn