AWS CloudFormation: أين تجد المساعدة عندما تحتاجها

يمكن أن يكون التحديق في موجه سطر أوامر عادي وغبي مع عدم وجود دليل على ما يجب فعله باستخدام AWS CLI بعد ذلك تجربة متواضعة. ومن واقع خبرتي على الأقل ، فإن التحديق في Management Console لـ AWS CloudFormation قد يكون أسوأ.

لذا اسمحوا لي أن أقدم لكم بعض المساعدة السريعة في "البدء" بناءً على جزء من المحتوى في آخر دورة تدريبية لي في Pluralsight.

بادئ ذي بدء ، إذا كنت تخطط لإدارة حزم CloudFormation الخاصة بك من خلال AWS CLI بدلاً من وحدة التحكم الإدارية ، فأنا أناقش الأساسيات في هذه المقالة. بمجرد الاهتمام بهذا الأمر ، ستكون جاهزًا لأي شيء.

ابدأ بسيطًا:

$ aws s3 ls 2019-11-03 13:16:59 athena5905 2019-02-03 18:01:42 book-3939 2014-07-01 18:52:32 elasticbeanstalk-ap-northeast-1-426397493112 2014-08-28 16:57:49 elasticbeanstalk-us-east-1-426497493912 2019-05-04 22:17:50 ltest236 2018-07-15 15:52:30 mybucket99688223 2017-07-25 17:06:43 nextcloud3239027

يخبر "aws" في هذا المثال صدفتك أنك تريد ما يأتي بعد ذلك ليتم التعامل معه بواسطة AWS CLI. يخبر "s3" الذي أكتبه بعد ذلك CLI أنني سأستخدم خدمة S3 - وهي خدمة التخزين البسيط من Amazon. أخيرًا ، "ls" أو "list" هو الأمر الذي أود تشغيله على تلك الخدمة.

CLI ، باستخدام متغيرات مصادقة الحساب التي أضافتها أداة التهيئة إلى بيئتي ، سيعجل الآن والوصول إلى حسابي ، وفي هذه الحالة يسترجع أسماء جميع مستودعاتي.

كما هو متوقع ، فأنت تخبر AWS أنك تتطلع إلى العمل مع CloudFormation باستخدام "المعلومات السحابية". إذا قمت بتشغيل ذلك بدون تحديد أمر ، فسوف أتلقى رسالة خطأ:

aws cloudformation usage: aws [options]   [ ...] [parameters] To see help text, you can run: aws help aws  help aws   help aws: error: the following arguments are required: operation 

لكنها رسالة مهمة ، لأنها تخبرنا بكيفية الوصول إلى الوثائق المضمنة. المساعدة الحساسة للسياق متاحة في كل طبقة.

انظر ماذا يحدث إذا أضفت "مساعدة" بعد "المعلومات السحابية". ستحصل على وصف موجز ثم قائمة بجميع الأوامر الفرعية المتاحة.

$ aws cloudformation help CLOUDFORMATION() CLOUDFORMATION() NAME cloudformation - DESCRIPTION AWS CloudFormation allows you to create and manage AWS infrastructure deployments predictably and repeatedly. You can use AWS CloudFormation to leverage AWS products, such as Amazon Elastic Compute Cloud, Amazon Elastic Block Store, Amazon Simple Notification Service, Elastic Load Balancing, and Auto Scaling to build highly-reliable, highly scalable, cost-effective applications without creating or configuring the underlying AWS infrastructure. With AWS CloudFormation, you declare all of your resources and dependencies in a template file. The template defines a collection of resources as a single unit called a stack. AWS CloudFormation creates and deletes all member resources of the stack together and manages all dependencies between the resources for you. For more information about AWS CloudFormation, see the AWS CloudFormation Product Page. Amazon CloudFormation makes use of other AWS products. If you need additional technical information about a specific AWS product, you can find the product's technical documentation at docs.aws.amazon.com. AVAILABLE COMMANDS o cancel-update-stack o continue-update-rollback o create-change-set o create-stack o create-stack-set o delete-change-set o delete-stack o delete-stack-instances o delete-stack-set o deploy o describe-account-limits o describe-change-set o describe-stack-events o describe-stack-instance o describe-stack-resource o describe-stack-resources o describe-stack-set o describe-stack-set-operation o describe-stacks o estimate-template-cost o execute-change-set o get-stack-policy [...]

الآن قم بتشغيل الأمر "description-Stacks". ربما لا توجد مكدسات مباشرة في حسابك الآن ، لذا لن ترى أي ناتج.

لكن افعل ذلك مرة أخرى ، هذه المرة بإضافة "مساعدة". سيعرض لك هذا الخيار بعض الخيارات التي ستتيح لك تصفية البيانات التي تحصل عليها أو معالجتها. يمكنك ، على سبيل المثال ، توجيه CLI إلى مكدس واحد محدد باستخدام "--stack-name" متبوعًا باسم مكدس موجود.

$ aws cloudformation describe-stacks $ aws cloudformation describe-stacks help NAME describe-stacks - DESCRIPTION Returns the description for the specified stack; if no stack name was specified, then it returns the description for all the stacks created. NOTE: If the stack does not exist, an AmazonCloudFormationException is returned. See also: AWS API Documentation See 'aws help' for descriptions of global parameters. describe-stacks is a paginated operation. Multiple API calls may be issued in order to retrieve the entire data set of results. You can disable pagination by providing the --no-paginate argument. When using --output text and the --query argument on a paginated response, the --query argument must extract data from the results of the following query expressions: Stacks SYNOPSIS describe-stacks [--stack-name ] [--cli-input-json ] [--starting-token ] [--max-items ] [--generate-cli-skeleton ] OPTIONS --stack-name (string) The name or the unique stack ID that is associated with the stack, which are not always interchangeable: [...] $ aws cloudformation describe-stacks --stack-name myname 

هذه هي الأدوات التي ستساعدك بغض النظر عن خدمة AWS التي تستخدمها. ولكن بالنظر تحديدًا إلى CloudFormation ، هناك بعض المجموعات الرسمية القيمة من نماذج القوالب التي يجب أن تعرفها. بناء جملة JSON أو YAML على ما هي عليه ، ربما لن ترغب في البدء من مستند فارغ.

قامت Amazon نفسها بعمل رائع في إنشاء قوالب لنا للعمل معها. يجب أن تكون محطتك الأولى هي صفحة قوالب AWS CloudFormation. ستجد هنا روابط لمقتطفات وأطر تطبيق محددة وبعض المحتويات المتطورة.

لكن في الوقت الحالي ، أود أن ألفت انتباهك إلى أحد "نماذج النماذج" التي تنظمها خدمة AWS (يأتي هذا الرمز من أحد أمثلة Amazon EC2).

يبدأ القالب بوصف مجاني للنموذج يخبرنا بشكل مفيد بنوع المكدس الذي سينشئه هذا. أخبرنا أيضًا أنه يمكننا تخصيص القالب باستخدام عنوان IP الحالي المرن بدلاً من العنوان الذي يتم إنشاؤه تلقائيًا.

{ "AWSTemplateFormatVersion" : "2010-09-09", "Description" : "AWS CloudFormation Sample Template EC2InstanceWithSecurityGroupSample: Create an Amazon EC2 instance running the Amazon Linux AMI. The AMI is chosen based on the region in which the stack is run. This example creates an EC2 security group for the instance to give you SSH access. **WARNING** This template creates an Amazon EC2 instance. You will be billed for the AWS resources used if you create a stack from this template.", 

ستحتاج إلى تمرير اسم KeyPair الحالي من المنطقة الحالية في حساب AWS الخاص بك حتى تتمكن من فتح SSH عن بُعد في مثيل Linux الذي سيتم إطلاقه. يمكنك بدلاً من ذلك تمرير تلك القيمة من سطر الأوامر.

قسم المعلمات هو أيضًا المكان الذي تحدد فيه نوع مثيل EC2. القيمة الافتراضية هي t2.small ، لكن يُسمح لنا إما بتبديل هذه القيمة لأي من القيم المسموح بها الأخرى في هذا المستند ، أو تجاوزها من سطر الأوامر.

 "Parameters" : { "KeyName": { "Description" : "Name of an existing EC2 KeyPair to enable SSH access to the instance", "Type": "AWS::EC2::KeyPair::KeyName", "ConstraintDescription" : "must be the name of an existing EC2 KeyPair." }, "InstanceType" : { "Description" : "WebServer EC2 instance type", "Type" : "String", "Default" : "t2.small", 

إذا قمت بالتمرير لأسفل عبر قسم التعيينات ، فيمكننا رؤية قوائم طويلة بهياكل الأجهزة المتاحة ومعرفات صور Amazon Machine لكل منطقة.

هذا قسم اختياري حيث يمكنك إدخال قيمك غير القياسية ، على سبيل المثال ، سيتم تشغيل نوع صورة بناءً على مجموعة معينة من المعلمات - ربما حتى صورة AMI خاصة. يتم تنظيم هذه البيانات في أزواج مفتاح / قيمة.

 "Mappings" : { "AWSInstanceType2Arch" : { "t1.micro" : { "Arch" : "HVM64" }, "t2.nano" : { "Arch" : "HVM64" }, "t2.micro" : { "Arch" : "HVM64" }, 

يحدد قسم الموارد في هذه الحالة بيئة المثيل الخاصة بك. تم تكوين SecurityGroup ، على سبيل المثال ، لفتح منفذ SSH 22 ولكن لا شيء آخر. يرتبط عنوان IP العام للمثيل أيضًا بعنوان Elastic IP الجديد الذي سيتم تخصيصه.

 "InstanceSecurityGroup" : { "Type" : "AWS::EC2::SecurityGroup", "Properties" : { "GroupDescription" : "Enable SSH access via port 22", "SecurityGroupIngress" : [ { "IpProtocol" : "tcp", "FromPort" : "22", "ToPort" : "22", "CidrIp" : { "Ref" : "SSHLocation"} } ] } } }, 

أحد موارد أمازون الأكثر أهمية: البداية السريعة. بالمعنى الدقيق للكلمة ، لا ترتبط حزم البنية التحتية سابقة الإنشاء التي يتم توفيرها هنا لمساعدتك في إنشاء عمليات نشر سحابية أكثر تعقيدًا بشكل مباشر بـ CloudFormation. تم توفيرها من قبل شركات خارجية لتبسيط عملية بناء بنيتها التحتية في داخل منصة AWS.

لكن الحقيقة هي أن كل واحد يبدأ بقالب CloudFormation الفريد الخاص به. سيؤدي النقر لإلقاء نظرة على الأمثلة الفعلية غالبًا إلى توجيهك إلى قوالب التعليمات البرمجية المصدر المكدسة داخل GitHub repo. يوضح لنا هذا المثال الأدوات التي تحتاجها لتشغيل وحدة تحكم HashiCorp:

في كلتا الحالتين ، لا تتردد في استخدام هذه القوالب كأدوات تعليمية - أو تصفح التحديد لمعرفة ما إذا كانت هناك حزمة تتناسب مع احتياجاتك.

هناك الكثير من الخير الإداري في شكل كتب ودورات تدريبية ومقالات متوفرة في my bootstrap-it.com.