AWS CLI-vejledning - Sådan installeres, konfigureres og bruges AWS CLI til at forstå dit ressourcemiljø

Sådan får du nøjagtigt de konto- og miljøoplysninger, du har brug for til at administrere din AWS-konto ved hjælp af kun AWS CLI

Installation af AWS CLI er faktisk ret simpelt. Den bedste måde at få det gjort på er at gå over til AWS installationsvejledning og følge instruktionerne til dit operativsystem.

Lige nu skubber de os mod version 2 af CLI, og jeg har ikke set nogen grund til ikke at gå med. Jeg arbejder med Linux, så det er her, jeg går videre.

For at få det gjort, indsætter jeg curl-kommandoen fra Amazon-siden i min Linux-skal, der downloader pakken og skriver den til en lokal zip-fil, som jeg derefter pakker ud. Der oprettes en ny mappe kaldet aws, der indeholder et installationsskript, som jeg kan køre ved hjælp af sudo for at få administratorrettigheder. Jeg kører aws - version for at bekræfte, at alt fungerede, som det skulle.

curl "//awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" unzip awscliv2.zip ls aws sudo ./aws/install aws --version 

Det næste trin kræver en hurtig tur til administrationskonsollen. Du kan se, for at godkende CLI til din konto skal du have en gyldig adgangsnøgle. Nu har CLI en "create-access-key" -kommando, der genererer en ny nøgle, men det er kun muligt, når jeg er godkendt. Jeg er sikker på, at du forstår problemet med det.

Du får adgang til siden med sikkerhedsoplysninger fra rullemenuen øverst på en hvilken som helst side på konsollen. Med dine legitimationsoplysninger i hånden kan du køre "aws configure." Du bliver bedt om at indtaste dit adgangsnøgle-id og selve den hemmelige nøgle. Hvis du kan lide det, kan du vælge et standard AWS-område og outputformat. Formatet er ikke et problem, så jeg vil lade det være som standard.

aws configure 

Det er det. Bare for at bekræfte, at det hele fungerede, viser jeg alle S3-skovle på min konto. Med det er vi klar til at komme i gang med det næste klip.

aws s3 ls 

Du ved muligvis allerede, at Amazons CloudFormation-tjeneste eksisterer for at lade dig administrere din applikationsinfrastruktur ved at organisere den i stakke af dine AWS-kontoressourcer.

CloudFormation-skabelonerne, der definerer disse stakke, kan deles, redigeres og lanceres hvor som helst, hvilket giver dig forudsigelige og pålidelige skyapplikationsmiljøer, hvor og når du har brug for dem.

Du ved muligvis også, at du kan mange dine CloudFormation-stakke både gennem AWS Management Console, og som jeg diskuterer i mit nye Pluralsight-kursus, Opret og administrer stakke med AWS CloudFormation ved hjælp af kommandolinjegrænsefladen ved hjælp af AWS CLI.

Hvis du vælger at gå med AWS CLI - noget jeg stærkt anbefaler - har du brug for en måde at indsamle nøgleoplysninger om andre konto ressourcer på. Men hvordan det forventes, at du får disse oplysninger gennem CLI, kan i starten måske ikke virke så indlysende.

For at vise dig hvad jeg mener, lad os eksperimentere med en mere kompleks stak ved hjælp af en skabelon, der kommer fra AWS-dokumentationseksemplerne.

Application Frameworks-skabelonsættet inkluderer en skabelon til automatisk skalerede Linux-servere, der leveres forudbestemt med Apache-webserveren og PHP-scriptingsproget og en forbindelse til en Multi-AZ RDS-databaseinstans, der kører MySQL-databasemotoren.

Du kan klikke på Vis fra den AWS-dokumentationsside og se på selve skabelonen. Der vil du se Parametersektioner, der definerer VPC og undernet, hvor din instans startes, og MySQL-databasens navn, bruger og adgangskode.

Det er afgørende, at alle de rigtige tjenester kender disse detaljer, fordi de ellers ikke kan tale med hinanden. Vi bliver nødt til at finde ud af en måde at tilføje disse værdier på. For at få tingene i gang kan du blot klikke for at se skabelonen (som du kan se her) og kopiere indholdet og indsætte det i en ny JSON-fil på din lokale maskine.

Du bruger CLI til at affyre en Cloudformation-stak ved hjælp af kommandoen create-stack. Kommandoen tager dog et par argumenter for at videregive vigtige oplysninger. Dette minimale eksempel viser dig, hvordan du peger CloudFormation til din JSON-skabelonfil, et navn, der skal tildeles din stak, og en gyldig SSH-nøgle, så jeg kan logge ind på den forekomst, den opretter.

aws cloudformation create-stack \ --template-body file://lamp-as.json \ --stack-name lamp \ --parameters \ ParameterKey=KeyName,ParameterValue=mykey 

Problemet er, at hvis du skulle køre kommandoen mod skabelonen i dit JSON-dokument, ville den mislykkes. Det er fordi, som du uden tvivl vil huske at kigge gennem skabelonen, der er nogle ekstra parametre, der skal tilfredsstille. Specifikt har vi brug for referencer til en VPC og til to undernet - og fordi dette er en installation med flere tilgængelighedszoner, skal de være i forskellige zoner.

Hvordan fungerer det? Det er AWS CLI til undsætning. Brug for et VPC ID? Når du husker, at VPC'er er EC2-objekter, kan du køre aws ec2 beskriv-vpcs, og alle de data, du har brug for - inklusive VPC ID - vises magisk. Og undernet? Nå mere af det samme, naturligvis. Kopier bare undernet-id'er til to af de undernet, der vises, og du er i gang.

aws ec2 describe-vpcs aws ec2 describe-subnets 

Lad os nu samle alle disse oplysninger i vores nye version af kommandoen create-stack. Du bliver nødt til at være forsigtig med dette, da der er nogle grimme gotchas i syntaksen.

aws cloudformation create-stack \ --template-body file://lamp-as.json \ --stack-name lamp-as \ --parameters \ ParameterKey=KeyName,ParameterValue=mykey \ ParameterKey=VpcId,ParameterValue=vpc-1ffbc964 \ ParameterKey=Subnets,ParameterValue=\'subnet-0e170b31,subnet-52d6117c\' \ ParameterKey=DBUser,ParameterValue=myadmin \ ParameterKey=DBPassword,ParameterValue=mypass23 

Den første nye parameter er VPC-ID. Men sørg for at få sagen rigtig: ved at bruge en stor bogstav D i Id vil det hele mislykkes. Jeg ved ikke, hvorfor de gør tingene så vanskelige at leve med, men det er det, vi har.

Den næste er endnu mere delikat. Da vi har brug for to undernet, skal vi indtaste dem på en enkelt linje adskilt med komma - men ikke mellemrum. Vi bliver dog også nødt til at omslutte strengen i enkelte apostrofer. Men CLI kan ikke læse apostrofer bare sådan, så vi bliver nødt til at undslippe dem ved hjælp af tilbageslag. Forstået?

Jeg tilføjer også de to databaseparametre: DBUser og min ultrahemmelige, superkrypterede DBPassword. Vil det fungere? Du betcha. Men fortæl ikke nogen, hvor mange gange jeg var nødt til at prøve dette uden at du så, før jeg fik det rigtigt. Husk: fiasko er din ven.

Når vores stak er god og lanceret (hvilket kan tage så lang tid som en halv time), vil kørsel af beskrivelsesstakke give os vores webadresse.

aws cloudformation describe-stacks 

Men det er ikke hele historien. Jeg vil bruge en anden aws ec2-kommando - beskriv forekomster denne gang - for at få nogle oplysninger om de EC2-forekomster, der blev lanceret som en del af denne stak. Denne filtrerer resultater og begrænser kun output til de forekomster, der kører i øjeblikket.

aws ec2 describe-instances \ --filters Name=instance-state-name,Values=running \ --query 'Reservations[*].Instances[*].{Instance:InstanceId,PublicIPAddress:PublicIpAddress}' 

Jeg har tilfældigvis ingen andre forekomster, der kører i denne region, så kun CloudFormation-forekomsterne vises. Nu bruger jeg --forespørgsel til yderligere at filtrere output for kun at give mig instans-id'er og offentlige IP-adresser for disse forekomster. Der kører, som du ville forvente, nøjagtigt to.

Bare en smag - og det meste relaterede specifikt til CloudFormation - men jeg tror, ​​du får ideen om, hvordan informationsindsamling fungerer ved hjælp af AWS CLI.

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