AWS CloudFormation: kur meklēt palīdzību, kad tā nepieciešama

Skatīšanās uz vienkāršu, mēms komandrindas uzvedni bez ne jausmas, ko darīt ar AWS CLI, var būt pazemojoša pieredze. Vismaz pēc manas pieredzes skatīšanās uz AWS CloudFormation vadības konsoli var būt sliktāka.

Tāpēc ļaujiet man jums piedāvāt ātru palīdzību “iesākumam”, pamatojoties uz daļu no mana pēdējā Pluralsight kursa satura.

Pirmkārt, ja jūs plānojat pārvaldīt savas CloudFormation kaudzes, izmantojot AWS CLI, nevis pārvaldības konsoli, es šajā rakstā aplūkoju pamatus. Kad tas viss būs nokārtots, jūs būsiet gatavs visam.

Sāciet vienkārši:

$ 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

Šajā piemērā "aws" čaulai saka, ka vēlaties, lai ar nākamo tiktu galā AWS CLI. Pēc tam ievadītais “s3” CLI paziņo, ka izmantošu S3 pakalpojumu - tas ir Amazon vienkāršais glabāšanas pakalpojums. Visbeidzot, "ls" vai "saraksts" ir komanda, kuru es vēlētos palaist pret šo pakalpojumu.

CLI, izmantojot konta autentifikācijas mainīgos, kurus konfigurēšanas rīks pievienoja manai videi, tagad steigsies un piekļūs manam kontam, šajā gadījumā izgūstot visu manu grupu nosaukumus.

Paredzams, ka jūs paziņojat AWS, ka vēlaties strādāt ar CloudFormation, izmantojot "cloudformation". Ja es to vienkārši izpildīšu, nenorādot komandu, es saņemšu kļūdas ziņojumu:

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 

Bet tas ir svarīgs ziņojums, jo tas mums stāsta, kā piekļūt iekšējai dokumentācijai. Katrā slānī ir pieejama kontekstjutīga palīdzība.

Skatiet, kas notiek, ja pēc “mākoņformācijas” pievienojat “help”. Jūs saņemsiet īsu aprakstu un pēc tam visu pieejamo apakškomandu sarakstu.

$ 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 [...]

Tagad palaidiet komandu "aprakstīt-skursteņi". Iespējams, ka jūsu kontā pašlaik nav tiešraides, tāpēc neredzēsit nevienu izvadi.

Bet dariet to vēlreiz, šoreiz pievienojot "palīdzību". Šis parādīs dažas iespējas, kas ļaus jums filtrēt vai manipulēt ar atgūtajiem datiem. Piemēram, jūs varētu norādīt CLI uz vienu noteiktu kaudzīti, izmantojot "--stack-name", kam seko esošās kaudzes nosaukums.

$ 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 

Tie ir rīki, kas jums palīdzēs neatkarīgi no izmantotā AWS pakalpojuma. Bet, aplūkojot īpaši CloudFormation, ir dažas vērtīgas oficiālas veidņu paraugu kolekcijas, par kurām jums vajadzētu zināt. JSON vai YAML sintakse ir tāda, kāda tā ir, jūs, iespējams, nevēlaties sākt no tukša dokumenta.

Amazon pati ir paveikusi lielisku darbu, veidojot veidnes, ar kurām mums strādāt. Jūsu pirmajai pieturai jābūt AWS CloudFormation Templates lapai. Šeit jūs atradīsit saites uz fragmentiem un īpašām lietojumprogrammu sistēmām, kā arī vēl kādu vismodernāko saturu.

Bet šobrīd es vēlos pievērst jūsu uzmanību vienai no AWS servisa organizētajām "paraugu veidnēm" (šis kods nāk no viena no Amazon EC2 piemēriem).

Veidne sākas ar brīvas formas aprakstu, kas mums noderīgi norāda, kāda veida kaudzi tas radīs. Mēs arī teicām, ka mēs varētu pielāgot veidni, izmantojot esošo elastīgo IP adresi, nevis automātiski ģenerētu adresi.

{ "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.", 

Jums būs jānorāda esošā KeyPair vārds no pašreizējā AWS konta reģiona, lai jūs varētu atvērt attālo SSH Linux instancē, kas tiks palaista. Varat arī pāriet pa šo vērtību no komandrindas.

Sadaļā Parametri varat definēt arī EC2 instances tipu. Noklusējums ir t2.small, taču mums būtu atļauts šo vērtību vai nu nomainīt pret jebkuru citu šajā dokumentā atļauto vērtību, vai arī ignorēt to no komandrindas.

 "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", 

Ritinot lejup pa sadaļu Kartējumi, mēs varam redzēt garus pieejamo aparatūras arhitektūru sarakstus un Amazon Machine Image identifikatorus katram reģionam.

Šī ir izvēles sadaļa, kurā varat ievietot savas nestandarta vērtības, lai, piemēram, tiktu palaists attēla tips, pamatojoties uz noteiktu parametru kopu - varbūt pat privātu AMI attēlu. Šādi dati ir sakārtoti atslēgu / vērtību pāros.

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

Resursu sadaļa šajā gadījumā nosaka jūsu instances vidi. Piemēram, SecurityGroup ir konfigurēts, lai atvērtu SSH 22. portu, bet nekas cits. Instances publiskā IP adrese ir saistīta arī ar jauno elastīgo IP adresi, kas tiks piešķirta.

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

Vēl viens svarīgs Amazon resurss: ātrie sākumi. Stingri sakot, iepriekš sagatavotie infrastruktūras kaudzes, kas šeit sniegtas, lai palīdzētu jums izveidot sarežģītākas mākoņa izvietošanas, nav tieši saistītas ar CloudFormation. Tos vienkāršoja trešo pušu uzņēmumi, lai vienkāršotu savas infrastruktūras izveidošanas procesu AWS platformā.

Bet fakts ir tāds, ka katrs no tiem sākas ar savu unikālo CloudFormation veidni. Noklikšķinot, lai apskatītu faktiskos piemērus, jūs bieži novirzīsit uz kaudzes avota kodu veidnēm GitHub repo. Šis piemērs parāda mums nepieciešamos rīkus, lai palaistu HashiCorp konsoli:

Jebkurā gadījumā izmantojiet šīs veidnes kā mācību līdzekļus vai pārlūkojiet atlasi, lai redzētu, vai tur ir kaudze, kas atbilst jūsu vajadzībām.

Manā bootstrap-it.com pieejamo grāmatu, kursu un rakstu veidā ir daudz vairāk administrēšanas labestības.