Cum să obțineți exact informațiile despre cont și mediu de care aveți nevoie pentru a vă gestiona contul AWS utilizând doar AWS CLI

Instalarea AWS CLI este de fapt destul de simplă. Cel mai bun mod de a face acest lucru este să vă îndreptați spre Ghid de instalare AWS și urmați instrucțiunile pentru sistemul dvs. de operare.

Chiar acum ne împing spre versiunea 2 a CLI și nu am văzut niciun motiv să nu merg mai departe. Lucrez cu Linux, așa că acolo aș merge mai departe.

Pentru a face acest lucru, voi lipi comanda curl din pagina Amazon în shell-ul meu Linux, care va descărca pachetul și îl voi scrie într-un fișier zip local, pe care îl voi dezarhiva apoi. Aceasta va crea un nou director numit aws care va conține un script de instalare, pe care îl pot executa folosind sudo pentru a obține privilegii de administrator. Voi executa aws – versiunea pentru a confirma că totul a funcționat așa cum trebuia.

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

Următorul pas va necesita o călătorie rapidă la consola de administrare. Vedeți, pentru a autentifica CLI în contul dvs., veți avea nevoie de o cheie de acces validă. Acum, CLI are o comandă „create-access-key” care va genera o nouă cheie, dar acest lucru este posibil numai după autentificare. Sunt sigur că înțelegi problema cu asta.

Accesați pagina acreditării de securitate din meniul derulant al contului din partea de sus a oricărei pagini de pe consolă. Cu acreditările în mână, puteți rula „aws configure”. Vi se va solicita să introduceți ID-ul cheii de acces și cheia secretă în sine. Dacă doriți, puteți alege o regiune AWS implicită și un format de ieșire. Formatul nu va fi o problemă, așa că îl voi lăsa ca implicit.

aws configure

Asta este. Doar pentru a confirma că totul a funcționat, voi lista toate gălețile S3 din contul meu. Cu aceasta, ne vom pregăti cu toții să începem treaba în clipul următor.

aws s3 ls

Este posibil să știți deja că serviciul Amazon CloudFormation există pentru a vă permite să gestionați infrastructura aplicației dvs., organizându-o în pachete de resurse ale contului dvs. AWS.

Șabloanele CloudFormation care definesc aceste stive pot fi partajate, editate și lansate oriunde, oferindu-vă medii de aplicații cloud previzibile și fiabile oriunde și oricând aveți nevoie de ele.

De asemenea, este posibil să știți că puteți gestiona stivele CloudFormation atât prin intermediul AWS Management Console, cât și, așa cum discut în nou curs Pluralsight, Creați și gestionați stive cu AWS CloudFormation utilizând interfața liniei de comandă, folosind AWS CLI.

Dacă alegeți să mergeți cu AWS CLI – lucru pe care îl recomand cu drag – veți avea nevoie de o modalitate de a aduna informații cheie despre alte resurse ale contului. Dar cum vă așteptați să obțineți aceste informații prin CLI ar putea, la început, să nu pară atât de evident.

Pentru a vă arăta ce vreau să spun, să experimentăm cu o stivă mai complexă folosind un șablon care provine din exemplele de documentație AWS.

Set de șabloane Cadrele aplicației include un șablon pentru serverele Linux scalate automat care vor fi furnizate în prealabil cu serverul web Apache și limbajul de script PHP, și o conexiune la o instanță de bază de date Multi-AZ RDS care rulează motorul bazei de date MySQL.

Puteți face clic pe Vizualizare din acea pagină de documentare AWS și aruncați o privire asupra șablonului în sine. Acolo veți vedea secțiunile Parametri care definesc VPC și subrețele în care va lansa instanța dvs. și numele bazei de date MySQL, utilizatorul și parola.

Este esențial ca toate serviciile potrivite să cunoască aceste detalii deoarece, altfel, nu vor putea vorbi între ele. Va trebui să găsim o modalitate de a adăuga aceste valori. Pentru ca lucrurile să funcționeze, puteți face clic pur și simplu pentru a vizualiza șablonul (pe care le puteți vedea aici), și copiați conținutul, lipindu-l într-un nou fișier JSON de pe mașina dvs. locală.

Utilizați CLI pentru a declanșa o stivă Cloudformation folosind comanda create-stack. Cu toate acestea, comanda ia câteva argumente pentru a transmite informații importante. Acest exemplu minim vă arată cum să indicați CloudFormation către fișierul dvs. șablon JSON, un nume de atribuit stivei dvs. și o cheie SSH validă, astfel încât să mă pot conecta la instanța pe care o creează.

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

Problema este că, dacă ar fi să executați acea comandă împotriva șablonului din documentul dvs. JSON, aceasta ar eșua. Asta pentru că, după cum vă veți aminti fără îndoială că ați analizat șablonul, există câțiva parametri suplimentari care trebuie satisfăcuți. Mai exact, vom avea nevoie de referințe la un VPC și la două subrețele – și deoarece aceasta este o implementare în zone cu disponibilitate multiplă, vor trebui să fie în zone diferite.

Cum va funcționa asta? Este AWS CLI pentru salvare. Aveți nevoie de un ID VPC? Ținând cont de faptul că VPC-urile sunt obiecte EC2, puteți rula aws ec2 describe-vpcs și toate datele de care aveți nevoie – inclusiv ID-ul VPC – vor apărea în mod magic. Și subrețele? Ei bine, mai mult de la fel, evident. Copiați doar ID-urile de subrețea pentru oricare dintre două subrețele care vor apărea și sunteți în afaceri.

aws ec2 describe-vpcs
aws ec2 describe-subnets

Acum, să punem toate aceste informații împreună în noua noastră versiune a comenzii create-stack. Va trebui să aveți grijă la acest lucru, deoarece există câteva probleme urâte în sintaxă.

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

Primul parametru nou este VPC-ID. Dar asigurați-vă că înțelegeți cazul: utilizarea unui majuscul D în Id va face ca totul să eșueze. Nu știu de ce fac lucrurile atât de dificil de trăit, dar asta avem.

Următorul este și mai delicat. Deoarece avem nevoie de două subrețele, va trebui să le introducem pe o singură linie separată printr-o virgulă – dar fără spațiu. Cu toate acestea, va trebui să includem șirul într-un singur apostrof. Dar CLI nu poate citi apostrofe așa, așa că va trebui să le scăpăm folosind backslash. Am inteles?

Voi adăuga, de asemenea, acei doi parametri ai bazei de date: DBUser și DBPassword-ul meu ultra secret, super criptic. Va funcționa? Pui pariu. Dar nu spune nimănui de câte ori a trebuit să încerc asta fără ca tu să te uiți înainte să-l înțeleg. Amintiți-vă: eșecul este prietenul dvs.

Când stiva noastră este bună și lansată (care poate dura până la o jumătate de oră), rularea de descriere-stive ne va oferi adresa URL a site-ului nostru web.

aws cloudformation describe-stacks

Dar asta nu este întreaga poveste. Voi folosi o altă comandă aws ec2 – descrie-instanțe de data aceasta – pentru a obține câteva informații despre instanțele EC2 care au fost lansate ca parte a acestei stive. Acesta va filtra rezultatele, limitând rezultatele la acele instanțe care rulează în prezent.

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

Se întâmplă să nu am alte instanțe care rulează în această regiune, așa că numai instanțele CloudFormation vor apărea. Acum folosesc –query pentru a filtra în continuare rezultatul pentru a-mi da doar ID-urile de instanță și adresele IP publice ale acestor instanțe. Există, așa cum v-ați aștepta, exact două alergări.

Doar un gust – și cea mai mare parte a acestuia se referă în mod specific la CloudFormation – dar cred că aveți ideea despre cum funcționează colectarea informațiilor folosind AWS CLI.

Există mult mai multă bunătate administrativă sub formă de cărți, cursuri și articole disponibile la adresa mea bootstrap-it.com.