شفرة CloudFormation لاسترجاع قيم محددة وفقًا للمعايير
تعد أداة CloudFormation من أهم الأدوات التي توفرها أمازون ويب سيرفيسز (AWS) لإنشاء وتحديث وإدارة الموارد السحابية بطريقة آمنة وموثوقة. من خلال استخدام القوالب، يمكن إدارة الموارد وتتبع التغييرات بسهولة. سنتناول في هذا المقال كيفية كتابة كود CloudFormation لاسترجاع قيم محددة بناءً على شروط معينة، مما يمكّن المطورين من تخصيص تجربتهم وفقًا للبيئات المختلفة.
إعداد المستخدمين وفقًا للبيئة
عند العمل في بيئات متعددة مثل UAT وSTG، من المهم أن يكون لديك هياكل متناسبة من حيث الأذونات والموارد. فعلى سبيل المثال، إذا كنت ترغب في إنشاء مستخدم IAM يحصل على دور Assumerole، فيجب عليك تحديد معرف الحساب الصحيح بناءً على البيئة التي تعمل بها. فمثلاً، في حالة بيئة UAT، يجب أن يحصل المستخدم على Assumerole للحساب 123451234512، بينما في بيئة STG يجب أن يحصل على Assumerole للحساب 123451234513.
استخدام خريطة البيانات
يمكنك استخدام خريطة البيانات لتخزين معرفات الحسابات المختلفة وفقًا للبيئة. في كود CloudFormation المقدم، تم تعريف خريطة بيانات تسمى AccountMap تحتوي على معرفات الحسابات للبيئات المختلفة مثل UAT وSTG وPRD. هذا يسهل عملية استرجاع القيم بناءً على البيئة المحددة.
تعيينات:
AccountMap:
uat:
AccountId: "123451234512"
stg:
AccountId: "123451234513"
prd:
AccountId: "123451234514"
إنشاء الموارد
لإنشاء المستخدمين والبيانات المتعلقة بهم، يمكننا استخدام كود CloudFormation الذي يُعرِّف المستخدمين والسياسات المرتبطة بهم. على سبيل المثال، يتم تعريف المستخدم User01 باستخدام الخصائص اللازمة مثل اسم المستخدم والمسار، ويُستخدم هنا متغيرات البيئة لتخصيص أسماء المستخدمين.
الموارد:
User01:
النوع: AWS::IAM::User
DeletionPolicy: الاحتفاظ
الخصائص:
المسار: /
اسم المستخدم: !Sub ${NetworkEnvironment}-test-user
العلامات:
- المفتاح: اسم القيمة: !Sub ${NetworkEnvironment}-asd
- المفتاح: قيمة البيئة: !Sub ${NetworkEnvironment}
عند إضافة السياسات، يمكنك تحديد السياسات الخاصة بتسجيل الأحداث والأذونات اللازمة للوصول إلى الموارد المحددة.
التعامل مع الأخطاء في السياسات
في السيناريو المذكور، قد تُواجه مشكلة تتعلق بأخطاء في بناء الجملة في السياسات، مما يعني أن هناك خطأ في الهيكل أو في القيم المحددة. على سبيل المثال، عند استخدام الدالة !FindInMap
، يجب مراعاة أن تكون القيم والإشارات إلى المتغيرات صحيحة لضمان توسيعها بدقة.
Policy02:
النوع: AWS::IAM::Policy
DeletionPolicy: الاحتفاظ
PolicyName: !Sub ${NetworkEnvironment}-test-assume-role
PolicyDocument:
الإصدار: '2012-10-17'
البيان:
- التأثير: السماح
الإجراء: sts:AssumeRole
المورد: !Sub arn:aws:iam::${!FindInMap [AccountMap, !Ref NetworkEnvironment, AccountId]}:role/testbucket1209
المستخدمون:
- !Ref User01
خاتمة
تعد كتابة كود CloudFormation لاسترجاع قيم محددة بناءً على الشروط من الأمور الضرورية عند العمل مع البيئات المختلفة. بالاعتماد على خريطة البيانات لتحديد معرفات الحسابات، يمكنك تحقيق إدارة فعالة لملفات تعريف المستخدمين والسياسات. إن التعرف على كيفية استخدام القوالب والتخصيص بما يتناسب مع احتياجات بيئتك يعد مهارة هامة لكل مطور يعمل في خدمات AWS. من خلال الممارسة والتجريب، يمكنك تعزيز مهاراتك في كتابة كود CloudFormation الذي يستجيب بشكل فعال لمتطلبات العمل المتغيرة.