AWS CloudFormation: Hvor finder du hjælp, når du har brug for det?

At stirre på en almindelig, dum kommandolinjeprompt uden anelse om, hvad man skal gøre med AWS CLI, kan være en ydmyg oplevelse. Og efter min erfaring kan det i det mindste være værre at stirre på Management Console for AWS CloudFormation.

Så lad mig tilbyde dig hurtig "at komme i gang" hjælp baseret på en del af indholdet i mit seneste Pluralsight-kursus.

Først og fremmest, hvis du planlægger at administrere dine CloudFormation-stakke gennem AWS CLI snarere end Management Console, diskuterer jeg det grundlæggende i denne artikel. Når alt dette er taget hånd om, er du klar til alt.

Start simpelt:

$ 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" i dette eksempel fortæller din shell, at du vil have det, der kommer næste gang, håndteres af AWS CLI. Den "s3", jeg skriver, fortæller CLI, at jeg bruger S3-tjenesten - det er Amazons Simple Storage Service. Endelig er "ls" eller "liste" den kommando, jeg gerne vil køre mod denne tjeneste.

CLI, der bruger de kontoautentificeringsvariabler, som konfigurationsværktøjet tilføjede til mit miljø, skynder sig nu og får adgang til min konto, i dette tilfælde henter navnene på alle mine spande.

Forudsigeligt fortæller du AWS, at du ønsker at arbejde med CloudFormation ved hjælp af "cloudformation." Hvis jeg bare kører det uden at specificere en kommando, får jeg en fejlmeddelelse:

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 

Men det er en vigtig besked, da den fortæller os, hvordan vi får adgang til den integrerede dokumentation. Kontekstafhængig hjælp er tilgængelig på hvert lag.

Se hvad der sker, hvis du tilføjer "hjælp" efter "skyformation". Du får en kort beskrivelse og derefter en liste over alle tilgængelige underkommandoer.

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

Kør nu kommandoen "beskriv stakke". Der er sandsynligvis ingen live stakke på din konto lige nu, så du kan ikke se nogen output.

Men gør det igen, denne gang tilføjer "hjælp". Denne viser dig nogle muligheder, der giver dig mulighed for at filtrere eller manipulere de data, du får tilbage. Du kan for eksempel pege CLI'en på en bestemt stak ved at bruge "--stack-name" efterfulgt af navnet på en eksisterende stak.

$ 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 

Det er værktøjer, der hjælper dig, uanset hvilken AWS-tjeneste du bruger. Men specifikt set på CloudFormation er der nogle værdifulde officielle samlinger af eksempler på skabeloner, du bør vide om. JSON- eller YAML-syntaks er, hvad de er, og du vil sandsynligvis ikke starte med et tomt dokument.

Amazon selv har gjort et godt stykke arbejde med at skabe skabeloner, som vi kan arbejde med. Dit første stop skal være siden AWS CloudFormation-skabeloner. Her finder du links til uddrag og specifikke applikationsrammer og noget mere avanceret indhold.

Men lige nu vil jeg henlede opmærksomheden på en af ​​"eksempler på skabeloner" arrangeret af AWS-tjenesten (denne kode kommer fra et af Amazon EC2-eksemplerne).

Skabelonen begynder med en beskrivelse af den fri form, der hjælpsomt fortæller os, hvilken slags stak dette vil generere. Vi får også at vide, at vi kunne tilpasse skabelonen ved hjælp af en eksisterende elastisk IP-adresse i stedet for en, der automatisk genereres.

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

Du bliver nødt til at videregive navnet på et eksisterende KeyPair fra den aktuelle region på din AWS-konto, så du kan åbne ekstern SSH i den Linux-forekomst, der lanceres. Du kan alternativt videregive denne værdi fra kommandolinjen.

Parametersektionen er også hvor du definerer EC2-instansstypen. Standard er t2.small, men vi får lov til enten at bytte denne værdi ud for nogen af ​​de andre tilladte værdier i dette dokument eller tilsidesætte den fra kommandolinjen.

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

Hvis du ruller ned gennem afsnittet Mappings, kan vi se lange lister over tilgængelige hardwarearkitekturer og Amazon Machine Image-identifikatorer for hver region.

Dette er et valgfrit afsnit, hvor du kan indsætte dine egne ikke-standardværdier, så f.eks. Vil en billedtype blive lanceret baseret på et bestemt sæt parametre - måske endda et privat AMI-billede. Sådanne data er organiseret i nøgle / værdipar.

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

Afsnittet Ressourcer definerer i dette tilfælde dit instansmiljø. SecurityGroup er for eksempel konfigureret til at åbne SSH-port 22, men intet andet. Instansens offentlige IP-adresse er også knyttet til den nye elastiske IP-adresse, der tildeles.

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

Endnu en vigtig Amazon-ressource: Quick Starts. Strengt taget er de forudbyggede infrastrukturstakke, der findes her for at hjælpe dig med at oprette mere komplekse skyinstallationer, ikke direkte relateret til CloudFormation. De blev leveret af tredjepartsfirmaer for at forenkle processen med at opbygge deres infrastruktur inden for AWS-platformen.

Men faktum er, at hver enkelt starter med sin egen unikke CloudFormation-skabelon. Ved at klikke igennem for at se på faktiske eksempler vil du ofte føre dig til stabelkildekodeskabeloner i en GitHub-repo. Dette eksempel viser os de værktøjer, du har brug for til at fyre en HashiCorp-konsol op:

Uanset hvad er du velkommen til at bruge disse skabeloner som læringsværktøjer - eller gennemse markeringen for at se, om der er en stak der, der tilfældigvis passer til dine behov.

Der er meget mere administrativ godhed i form af bøger, kurser og artikler tilgængelige på min bootstrap-it.com.