Tutorial AWS CLI - Πώς να εγκαταστήσετε, να ρυθμίσετε και να χρησιμοποιήσετε το AWS CLI για να κατανοήσετε το περιβάλλον των πόρων σας

Πώς να λάβετε ακριβώς τις πληροφορίες λογαριασμού και περιβάλλοντος που χρειάζεστε για να διαχειριστείτε τον λογαριασμό σας AWS χρησιμοποιώντας μόνο το AWS CLI

Η εγκατάσταση του AWS CLI είναι πραγματικά πολύ απλή. Ο καλύτερος τρόπος για να το κάνετε είναι να κατευθυνθείτε στον οδηγό εγκατάστασης AWS και να ακολουθήσετε τις οδηγίες για το λειτουργικό σας σύστημα.

Αυτή τη στιγμή μας σπρώχνουν προς την έκδοση 2 του CLI και δεν έχω δει κανένα λόγο να μην ακολουθήσουμε. Δουλεύω με το Linux, οπότε εδώ θα κατευθυνθώ.

Για να το ολοκληρώσω, θα επικολλήσω την εντολή curl από τη σελίδα του Amazon στο κέλυφος Linux που θα κατεβάσει το πακέτο και θα το γράψει σε ένα τοπικό αρχείο zip, το οποίο στη συνέχεια θα αποσυμπιέσω. Αυτό θα δημιουργήσει έναν νέο κατάλογο που ονομάζεται aws που θα περιέχει ένα σενάριο εγκατάστασης, τον οποίο μπορώ να τρέξω χρησιμοποιώντας το sudo για να λάβω δικαιώματα διαχειριστή. Θα τρέξω aws - μετατροπή για να επιβεβαιώσω ότι όλα λειτουργούσαν όπως έπρεπε.

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

Το επόμενο βήμα θα απαιτήσει ένα γρήγορο ταξίδι στην κονσόλα διαχείρισης. Βλέπετε, για τον έλεγχο ταυτότητας του CLI στο λογαριασμό σας, θα χρειαστείτε ένα έγκυρο κλειδί πρόσβασης. Τώρα, το CLI έχει μια εντολή "create-access-key" που θα δημιουργήσει ένα νέο κλειδί, αλλά αυτό είναι δυνατό μόνο μετά την πιστοποίηση. Είμαι σίγουρος ότι καταλαβαίνετε το πρόβλημα με αυτό.

Έχετε πρόσβαση στη σελίδα διαπιστευτηρίων ασφαλείας από το αναπτυσσόμενο μενού λογαριασμού στο επάνω μέρος οποιασδήποτε σελίδας στην κονσόλα. Με τα διαπιστευτήριά σας στο χέρι, μπορείτε να εκτελέσετε το "aws configure". Θα σας ζητηθεί να εισαγάγετε το αναγνωριστικό κλειδιού πρόσβασης και το ίδιο το μυστικό κλειδί. Αν θέλετε μπορείτε να επιλέξετε μια προεπιλεγμένη περιοχή AWS και μορφή εξόδου. Η μορφή δεν θα είναι πρόβλημα, επομένως θα την αφήσω ως προεπιλογή.

aws configure 

Αυτό είναι. Για να επιβεβαιώσω ότι όλα λειτουργούσαν, θα παραθέσω όλους τους κουβάδες S3 στο λογαριασμό μου. Με αυτό, θα είμαστε όλοι έτοιμοι να ξεκινήσουμε να δουλεύουμε στο επόμενο κλιπ.

aws s3 ls 

Ίσως γνωρίζετε ήδη ότι η υπηρεσία CloudFormation της Amazon υπάρχει για να σας επιτρέπει να διαχειριστείτε την υποδομή της εφαρμογής σας οργανώνοντάς την σε στοίβες των πόρων του λογαριασμού σας AWS.

Τα πρότυπα CloudFormation που ορίζουν αυτές τις στοίβες μπορούν να κοινοποιηθούν, να επεξεργαστούν και να ξεκινήσουν οπουδήποτε, δίνοντάς σας προβλέψιμα και αξιόπιστα περιβάλλοντα εφαρμογών cloud όπου και όποτε τα χρειάζεστε.

Μπορεί επίσης να γνωρίζετε ότι μπορείτε να αλλάξετε τις στοίβες CloudFormation τόσο μέσω της Κονσόλας διαχείρισης AWS όσο και, όπως συζητώ στη νέα μου σειρά Pluralsight, Δημιουργία και διαχείριση στοίβας με AWS CloudFormation χρησιμοποιώντας τη διεπαφή γραμμής εντολών, χρησιμοποιώντας το AWS CLI.

Εάν επιλέξετε να πάτε με το AWS CLI - κάτι που προτείνω ιδιαίτερα - θα χρειαστείτε έναν τρόπο για να συλλέξετε βασικές πληροφορίες σχετικά με άλλους πόρους λογαριασμού. Αλλά πώς αναμένεται να λάβετε αυτές τις πληροφορίες μέσω του CLI ενδέχεται, στην αρχή, να μην φαίνονται τόσο προφανείς.

Για να σας δείξω τι εννοώ, ας πειραματιστούμε με μια πιο περίπλοκη στοίβα χρησιμοποιώντας ένα πρότυπο που προέρχεται από τα δείγματα τεκμηρίωσης AWS.

Το σύνολο προτύπων Application Frameworks περιλαμβάνει ένα πρότυπο για διακομιστές Linux με αυτόματη κλιμάκωση που θα παρέχονται ήδη με τον διακομιστή ιστού Apache και τη γλώσσα δέσμης ενεργειών PHP και μια σύνδεση με μια παρουσία βάσης δεδομένων Multi-AZ RDS που εκτελεί τη μηχανή βάσης δεδομένων MySQL.

Μπορείτε να κάνετε κλικ στην Προβολή από αυτήν τη σελίδα τεκμηρίωσης AWS και να ρίξετε μια ματιά στο ίδιο το πρότυπο. Εκεί θα δείτε τις ενότητες παραμέτρων που ορίζουν το VPC και τα υποδίκτυα στα οποία θα ξεκινήσει η παρουσία σας και το όνομα, τον χρήστη και τον κωδικό πρόσβασης της βάσης δεδομένων MySQL.

Είναι κρίσιμο όλες οι σωστές υπηρεσίες να γνωρίζουν αυτές τις λεπτομέρειες γιατί, διαφορετικά, δεν θα μπορούν να μιλούν μεταξύ τους. Θα πρέπει να βρούμε έναν τρόπο να προσθέσουμε αυτές τις τιμές. Για να ξεκινήσετε τα πράγματα, μπορείτε απλά να κάνετε κλικ για να δείτε το πρότυπο (το οποίο μπορείτε να δείτε εδώ) και να αντιγράψετε τα περιεχόμενα, επικολλώντας το σε ένα νέο αρχείο JSON στον τοπικό υπολογιστή σας.

Χρησιμοποιείτε το CLI για να ενεργοποιήσετε μια στοίβα Cloudformation χρησιμοποιώντας την εντολή create-stack. Η εντολή, ωστόσο, χρειάζεται μερικά επιχειρήματα για τη διαβίβαση σημαντικών πληροφοριών. Αυτό το ελάχιστο παράδειγμα σάς δείχνει πώς μπορείτε να τοποθετήσετε το CloudFormation στο αρχείο προτύπου JSON, ένα όνομα που θα εκχωρηθεί στη στοίβα σας και ένα έγκυρο κλειδί SSH, ώστε να μπορώ να συνδεθώ στην παρουσία που δημιουργεί.

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

Το πρόβλημα είναι ότι, εάν θέλατε να εκτελέσετε αυτήν την εντολή ενάντια στο πρότυπο στο έγγραφο JSON, θα αποτύχει. Αυτό συμβαίνει επειδή, όπως θα θυμάστε αναμφίβολα από το να κοιτάξετε μέσα από το πρότυπο, υπάρχουν μερικές επιπλέον παραμέτρους που χρειάζονται ικανοποίηση. Συγκεκριμένα, θα χρειαστούμε αναφορές σε ένα VPC και σε δύο υποδίκτυα - και επειδή πρόκειται για ανάπτυξη ζώνης πολλαπλών διαθεσιμότητας, θα πρέπει να βρίσκονται σε διαφορετικές ζώνες.

Πώς θα λειτουργήσει; Είναι το AWS CLI για τη διάσωση. Χρειάζεστε αναγνωριστικό VPC; Λαμβάνοντας υπόψη ότι τα VPC είναι αντικείμενα EC2, μπορείτε να εκτελέσετε aws ec2 description-vpcs και όλα τα δεδομένα που θα χρειαστείτε - συμπεριλαμβανομένου του αναγνωριστικού VPC - θα εμφανιστούν μαγικά. Και υποδίκτυα; Προφανώς λοιπόν το ίδιο. Απλώς αντιγράψτε τα αναγνωριστικά υποδικτύου για οποιοδήποτε από τα δύο υποδίκτυα που θα εμφανιστούν και είστε επαγγελματίες.

aws ec2 describe-vpcs aws ec2 describe-subnets 

Τώρα ας βάλουμε όλες αυτές τις πληροφορίες μαζί στη νέα έκδοση της εντολής create-stack. Θα πρέπει να είστε προσεκτικοί με αυτό, καθώς υπάρχουν μερικά δυσάρεστα gotchas στη σύνταξη.

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 

Η πρώτη νέα παράμετρος είναι VPC-ID. Αλλά βεβαιωθείτε ότι έχετε τη σωστή υπόθεση: η χρήση κεφαλαίου D στο Id θα προκαλέσει την αποτυχία του όλου. Δεν ξέρω γιατί κάνουν τα πράγματα τόσο δύσκολα να ζήσουν, αλλά αυτό έχουμε.

Το επόμενο είναι ακόμα πιο ευαίσθητο. Δεδομένου ότι χρειαζόμαστε δύο υποδίκτυα, θα πρέπει να τα εισαγάγουμε σε μία μόνο γραμμή διαχωρισμένη με κόμμα - αλλά χωρίς κενό. Ωστόσο, θα πρέπει επίσης να περικλείσουμε τη συμβολοσειρά μέσα σε μεμονωμένες αποστροφές. Αλλά το CLI δεν μπορεί να διαβάσει απόστροφα ακριβώς έτσι, οπότε θα πρέπει να τα ξεφύγουμε χρησιμοποιώντας ανάστροφες. Το κατάλαβα?

Θα προσθέσω επίσης αυτές τις δύο παραμέτρους βάσης δεδομένων: DBUser και το εξαιρετικά μυστικό μου, εξαιρετικά κρυπτό DBPassword. Θα λειτουργήσει; Είσαι καλά. Αλλά μην πείτε σε κανέναν πόσες φορές έπρεπε να το δοκιμάσω χωρίς να το παρακολουθήσετε προτού το κάνω σωστά. Θυμηθείτε: η αποτυχία είναι ο φίλος σας.

Όταν η στοίβα μας είναι καλή και ξεκινά (η οποία μπορεί να διαρκέσει έως και μισή ώρα), η εκτέλεση του stack-stack θα μας δώσει τη διεύθυνση URL του ιστότοπού μας.

aws cloudformation describe-stacks 

Αλλά δεν είναι όλη αυτή η ιστορία. Θα χρησιμοποιήσω μια άλλη εντολή aws ec2 - περιγράψτε τις παρουσίες αυτή τη φορά - για να λάβω κάποιες πληροφορίες σχετικά με τις παρουσίες EC2 που ξεκίνησαν ως μέρος αυτής της στοίβας. Αυτό θα φιλτράρει τα αποτελέσματα, περιορίζοντας την έξοδο μόνο σε εκείνες τις περιπτώσεις που εκτελούνται αυτήν τη στιγμή.

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

Τυχαίως δεν έχω άλλες παρουσίες σε αυτήν την περιοχή, επομένως θα εμφανίζονται μόνο οι παρουσίες CloudFormation. Τώρα χρησιμοποιώ - ερώτημα για περαιτέρω φιλτράρισμα της εξόδου για να μου δώσει μόνο τα αναγνωριστικά παρουσίας και τις δημόσιες διευθύνσεις IP αυτών των παρουσιών. Υπάρχουν, όπως θα περίμενε κανείς, δύο ακριβώς τρέχουν.

Απλώς μια γεύση - και το μεγαλύτερο μέρος της σχετίζεται συγκεκριμένα με το CloudFormation - αλλά νομίζω ότι έχετε την ιδέα για το πώς λειτουργεί η συλλογή πληροφοριών χρησιμοποιώντας το AWS CLI.

Υπάρχει πολύ περισσότερη θετική διαχείριση με τη μορφή βιβλίων, μαθημάτων και άρθρων που διατίθενται στο bootstrap-it.com.