Μειώνει το CloudFront
Πώς μπορώ να αντιμετωπίσω και να μειώσω την αυξημένη λανθάνουσα κατάσταση από το cloudfront
Σύντομη περιγραφή
Για να αντιμετωπίσετε την καθυστέρηση από το CloudFront, προσδιορίστε πρώτα ποια από τα ακόλουθα γεγονότα συμβάλλουν στην καθυστέρηση:
– Ο χρόνος που απαιτείται για αιτήματα για να προχωρήσει μεταξύ του πελάτη και των θέσεων CloudFront Edge. Αυτό περιλαμβάνει τη διαδικασία αναζήτησης ονόματος τομέα (DNS) και οι διαπραγματεύσεις TCP και SSL/TLS.
– Ο χρόνος που απαιτείται για αιτήματα για το CloudFront και την προέλευση. Αυτό περιλαμβάνει τη διαδικασία αναζήτησης DNS Origin, TCP και SSL/TLS διαπραγματεύσεις με την προέλευση και ο χρόνος που λαμβάνεται από την προέλευση για επεξεργασία και απάντηση με ένα αντικείμενο.
Στη συνέχεια, ακολουθήστε τα βήματα αντιμετώπισης προβλημάτων για τα γεγονότα που προσδιορίζονται για να μειώσετε την καθυστέρηση.
Περίληψη του άρθρου
Το άρθρο εξετάζει την εμπειρία του συγγραφέα στην οικοδόμηση μιας εφαρμογής ιστού υψηλής απόδοσης με τη χρήση των υπηρεσιών Amazon Web (AWS) και επικεντρώνεται ειδικά στη μείωση της καθυστέρησης από το CloudFront. Ο συγγραφέας εξηγεί το υπόβαθρο του έργου, διερευνώντας διάφορους τρόπους για να επιτύχει χαμηλή λανθάνουσα κατάσταση και η αρχιτεκτονική που χρησιμοποιείται.
Ο συγγραφέας δίνει έμφαση στη σημασία της ενδεχόμενης συνέπειας και συζητά την πρόκληση της επιστροφής των πρώτων αποτελεσμάτων στους καταναλωτές, ενώ συγκεντρώνουν τα υπόλοιπα αποτελέσματα από διαφορετικούς προμηθευτές. Η ομάδα χρησιμοποιεί ασύγχρονους κλήσεις και AWS Elasticache για τον Redis για να επιτύχει αυτόν τον στόχο.
Από την πλευρά της υποδομής, ο συγγραφέας επέλεξε το AWS Elastic Container Service (ECS) για την επεκτασιμότητα και το Amazon CloudFront για υψηλή διαθεσιμότητα. Το CloudFront λειτουργεί ως δεύτερο στρώμα προσωρινής αποθήκευσης στην κορυφή του AWS Elasticache για το Redis. Το άρθρο παρέχει ένα συνολικό διάγραμμα αρχιτεκτονικής AWS για να απεικονίσει το σύστημα.
Για να εξασφαλιστεί η υψηλή διαθεσιμότητα και η επεκτασιμότητα, εφαρμόστηκε η αυτόματη μετατόπιση της υπηρεσίας ECS. Ο εξισορροπητής φορτίου εφαρμογής ανιχνεύει υγιεινά καθήκοντα Fargate, τερματίζει τα ανθυγιεινά καθήκοντα και ξεκινά νέα καθήκοντα για να τα αντικαταστήσει. Η χρήση πολλαπλών ζωνών διαθεσιμότητας εξασφαλίζει ότι η εφαρμογή συνεχίζει να λειτουργεί ακόμη και αν μια ζώνη διαθεσιμότητας δεν είναι διαθέσιμη.
Ο συγγραφέας διεξήγαγε δοκιμές φορτίου χρησιμοποιώντας το JMeter και συνέκρινε την καθυστέρηση μεταξύ του εξισορρόπησης φορτίου εφαρμογής και του CloudFront. Τα αποτελέσματα έδειξαν σημαντική μείωση της καθυστέρησης κατά τη χρήση του CloudFront, μαζί με ένα ποσοστό σφάλματος 0%.
Συμπερασματικά, ο συγγραφέας βρίσκει το έργο ανταμείβοντας και παρέχει ανατροφοδότηση από την αφοσίωση της Ascenda στην αρχιτεκτονική που εφαρμόζεται. Το άρθρο τελειώνει με πρόσκληση για προβολή μιας επίδειξης της αίτησης.
Ερωτήσεις και απαντήσεις
1. Ποια είναι μερικά γεγονότα που μπορούν να συμβάλουν στην αυξημένη λανθάνουσα κατάσταση από το CloudFront?
Κατά τη διάρκεια της διαδικασίας αντιμετώπισης προβλημάτων, πρέπει να ληφθούν υπόψη τα ακόλουθα συμβάντα:
– Ο χρόνος που απαιτείται για αιτήματα για να προχωρήσει μεταξύ του πελάτη και των θέσεων CloudFront Edge, συμπεριλαμβανομένης της διαδικασίας αναζήτησης DNS και των διαπραγματεύσεων TCP και SSL/TLS.
– Ο χρόνος που απαιτείται για τα αιτήματα που προέρχονται από το CloudFront και την προέλευση, συμπεριλαμβανομένης της διαδικασίας αναζήτησης DNS προέλευσης, των διαπραγματεύσεων TCP και SSL/TLS με την προέλευση και ο χρόνος που λαμβάνεται από την προέλευση για επεξεργασία και απάντηση με ένα αντικείμενο.
2. Πώς μπορώ να αντιμετωπίσω και να μειώσω την καθυστέρηση από το cloudfront?
Για να αντιμετωπίσετε και να μειώσετε την καθυστέρηση από το CloudFront, ακολουθήστε αυτά τα βήματα:
– Προσδιορίστε ποια από τα γεγονότα που αναφέρονται παραπάνω συμβάλλουν στην καθυστέρηση.
– Για κάθε συμβάν, αναλύστε και βελτιστοποιήστε τις αντίστοιχες διαδικασίες. Για παράδειγμα, εξασφαλίστε την αποτελεσματική αναζήτηση DNS, ελαχιστοποιήστε τον αριθμό των TCP ή SSL/TLS Round Trips και βελτιστοποιήστε το χρόνο απόκρισης προέλευσης.
– Χρησιμοποιήστε εργαλεία παρακολούθησης και καταγραφής CloudFront για να συλλέξετε δεδομένα και να αποκτήσετε πληροφορίες για την απόδοση της διανομής σας.
– Ελέγξτε τακτικά και βελτιώστε τις διαμορφώσεις σας CloudFront για να εξασφαλίσετε τη βέλτιστη απόδοση.
3. Ποια είναι η σημασία της ενδεχόμενης συνέπειας στην εφαρμογή?
Η εφαρμογή απαιτεί ενδεχόμενη συνέπεια για να επιτευχθεί υψηλή διαθεσιμότητα χωρίς να θυσιάζεται η ανοχή στο διαμέρισμα. Η αυστηρή συνέπεια δεν θα ήταν εφικτή λόγω του θεώρημα του ζυθοποιού (θεώρημα Cap), το οποίο δηλώνει ότι είναι αδύνατο να εγγυηθεί η συνέπεια, η διαθεσιμότητα και η ανοχή διαμερίσματος ταυτόχρονα σε ένα κατανεμημένο σύστημα. Επιλέγοντας την ενδεχόμενη συνέπεια, η εφαρμογή μπορεί να παράσχει γρήγορα τα πρώτα αποτελέσματα στους καταναλωτές ενώ συγκεντρώνουν τα υπόλοιπα αποτελέσματα.
4. Πώς συγκεντρώνει η ομάδα από πολλούς προμηθευτές ξενοδοχείων?
Η ομάδα χρησιμοποιεί ασύγχρονες κλήσεις προς τους πολλούς προμηθευτές ξενοδοχείων. Αυτό τους επιτρέπει να επιστρέψουν τα πρώτα αποτελέσματα στους καταναλωτές, ενώ σταδιακά συγκεντρώνουν τα υπόλοιπα αποτελέσματα στο παρασκήνιο. Το AWS Elasticache for Redis χρησιμοποιείται επίσης για την αποχώρηση των αποτελεσμάτων, ενισχύοντας περαιτέρω την απόδοση.
5. Ποιος είναι ο σκοπός της χρήσης της υπηρεσίας AWS Elastic Container (ECS) στην αρχιτεκτονική?
Το AWS Elastic Container Service (ECS) χρησιμοποιείται για να εξασφαλιστεί η επεκτασιμότητα στην εφαρμογή. Η χρήση των εμπορευματοκιβωτίων επιτρέπει την εύκολη διαχείριση και την ανάπτυξη της εφαρμογής και η αυτόματη υλοποίηση εφαρμόζεται για να χειριστεί το φορτίο κυκλοφορίας με την κλιμάκωση των υπηρεσιών backend ανάλογα.
6. Πώς το Amazon CloudFront παρέχει υψηλή διαθεσιμότητα?
Το Amazon CloudFront λειτουργεί ως δεύτερο στρώμα προσωρινής αποθήκευσης στην κορυφή του AWS Elasticache για το Redis. Χρησιμεύει ως δίκτυο παράδοσης περιεχομένου (CDN) που αποθηκεύει και προσφέρει περιεχόμενο από την πλησιέστερη θέση του άκρου μέχρι τον τελικό χρήστη. Αυτό βοηθά στη μείωση της λανθάνουσας κατάστασης και διασφαλίζει ότι η στατική εφαρμογή React JS Web που φιλοξενείται στο S3 παραμένει ιδιαίτερα διαθέσιμη.
7. Ποια είναι τα οφέλη από τη χρήση της αυτόματης μετατόπισης στην υπηρεσία ECS?
Η Autoscaling διασφαλίζει ότι η εφαρμογή μπορεί να χειριστεί την τρέχουσα ζήτηση με την παροχή του σωστού ποσού των πόρων και της χωρητικότητας. Επιτρέπει στις υπηρεσίες backend να κλιμακώνονται και να εξέρχονται αυτόματα, καθιστώντας τις ανθεκτικές σε σφάλματα και οικονομικά αποδοτικά.
8. Πώς εξασφαλίζει ο εξισορροπητής φορτίου εφαρμογής εξασφαλίζει την υγεία των εργασιών Fargate?
Το Balancer Load Application χρησιμοποιεί ένα τελικό σημείο ελέγχου υγείας στις υπηρεσίες Backend για να καθορίσει την υγεία των εργασιών Fargate. Εάν το τελικό σημείο ελέγχου υγείας δεν είναι προσβάσιμο, θεωρεί το έργο ανθυγιεινό, το απορρίπτει από την ομάδα -στόχο, τερματίζει και ξεκινά ένα νέο έργο για να το αντικαταστήσει. Αυτό εξασφαλίζει ότι η εφαρμογή παραμένει διαθέσιμη ακόμη και αν μια ζώνη διαθεσιμότητας δεν είναι διαθέσιμη.
9. Τι οφέλη παρέχει το CloudFront σε σύγκριση με το Balancer Load Load Application?
Στη δοκιμή φορτίου που διεξήχθη, τα αιτήματα που υποβλήθηκαν στο CloudFront έδειξαν σημαντική μείωση της καθυστέρησης σε σύγκριση με τον εξισορροπητή φορτίου εφαρμογής. Το CloudFront λειτουργεί ως CDN και βοηθά στην προσωρινή μνήμη και την παραγωγή περιεχομένου από τις θέσεις άκρων πιο κοντά στον τελικό χρήστη, με αποτέλεσμα τη βελτίωση της απόδοσης και της μειωμένης καθυστέρησης.
10. Πώς ο συγγραφέας περιγράφει την εμπειρία τους στο έργο?
Ο συγγραφέας περιγράφει το έργο ως αποθαρρυντικό, ειδικά για αρχάριους στο AWS. Ωστόσο, ήταν επίσης ανταμείβοντας να δούμε την επιτυχή εφαρμογή και τα εκπληκτικά αποτελέσματα που επιτεύχθηκαν.
Πώς μπορώ να αντιμετωπίσω και να μειώσω την αυξημένη λανθάνουσα κατάσταση από το cloudfront
З з з п п п п д д е д д д д д д д д д д д д д.
Επιτυχία χαμηλής καθυστέρησης με το Amazon CloudFront
Δημιουργία εφαρμογής ιστού με υψηλή διαθεσιμότητα και ενδεχόμενη συνέπεια
Δημοσιευτηκε σε
Διαβάστε 4 λεπτά
23 Μαΐου 2021
Ιστορικό
Αυτό ήταν ένα έργο που έκανα πρόσφατα το πρώτο εξάμηνο του 2021. Ήταν μια συνεργασία με την αφοσίωση της Ascenda, όπου η ομάδα μου είχε την εντολή να οικοδομήσει μια εφαρμογή υψηλής απόδοσης με τη χρήση των υπηρεσιών Web Amazon (AWS). Οι απαιτήσεις εφαρμογής είναι ότι πρέπει να είναι εξαιρετικά κλιμακωτά και διαθέσιμα κατά την επίτευξη τελικής συνέπειας.
Είναι σημαντικό να αναφέρουμε την ενδεχόμενη συνέπεια και όχι την αυστηρή συνέπεια, καθώς ήταν σχεδόν αδύνατο να επιτευχθεί τόσο υψηλή διαθεσιμότητα όσο και αυστηρή συνέπεια χωρίς να θυσιάζουμε την ανοχή στο διαμέρισμα. Αυτό οφείλεται στον ζυθοποιό’Θεώρημα (Θεώρημα Cap).
Όσον αφορά την εφαρμογή, η κύρια λειτουργία της θα ήταν η συσσωμάτωση των αποτελεσμάτων από διαφορετικούς προμηθευτές ξενοδοχείων και η εμφάνιση αποτελεσμάτων με χαμηλή λανθάνουσα κατάσταση στους καταναλωτές (που χρησιμοποιούν την εφαρμογή). Καθώς η εφαρμογή μας συνδέεται με πολλούς προμηθευτές ξενοδοχείων με διαφορετικά τελικά σημεία και επομένως διαφορετικούς χρόνους λανθάνουσας κατάστασης, που κυμαίνονται από 2 δευτερόλεπτα έως 20 δευτερόλεπτα, είναι επίσης μια πρόκληση να διασφαλίσουμε ότι θα επιστρέψουμε τα πρώτα αποτελέσματα στους καταναλωτές πρώτα και παρέχουμε τα καλύτερα αποτελέσματα τελικά.
Εξερεύνηση
Η ομάδα μας διερευνά διάφορους τρόπους που μπορούμε να εκπληρώσουμε αυτήν την απαίτηση. Θεωρήσαμε διάφορες υπηρεσίες που μπορούμε να χρησιμοποιήσουμε σε AWS, σχέδια σχεδιασμού και πρότυπα επικοινωνίας. Από την πλευρά του προγραμματισμού, συγκεντρώνουμε τα αποτελέσματα χρησιμοποιώντας ασύγχρονες κλήσεις προς τους πολλαπλούς προμηθευτές, ώστε να μπορούμε πρώτα να παρέχουμε στους καταναλωτές μας τα αποτελέσματα ενώ σιγά -σιγά συγκεντρώνουν τα υπόλοιπα αποτελέσματα. Ο συμπαίκτης μου έχει κάνει ένα ωραίο άρθρο σχετικά με αυτό εδώ, όπου χρησιμοποιούμε επίσης το AWS Elasticache για το Redis.
Υπηρεσίες Web Amazon (AWS)
Από την πλευρά της υποδομής, η ομάδα μας αποφάσισε να χρησιμοποιήσει την AWS Elastic Container Service (ECS) για την εκπλήρωση της κλιμακωτής απαίτησης και του Amazon CloudFront για να εξασφαλίσει υψηλή διαθεσιμότητα. Το Amazon CloudFront λειτουργεί επίσης ως δεύτερο στρώμα προσωρινής αποθήκευσης πάνω από τα αποτελέσματα που προσωρινά αποθηκευμένα στο AWS Elasticache για το Redis.
Αυτό είναι το γενικό διάγραμμα αρχιτεκτονικής AWS.
Από το παραπάνω διάγραμμα, είναι επίσης σαφές ότι το Amazon CloudFront παρείχε υψηλή διαθεσιμότητα στη στατική μας εφαρμογή js js που αποθηκεύεται στον κάδο S3. Η αποθήκευση AWS S3 έχει ανθεκτικότητα δεδομένων 99.9999999999% λόγω της κατασκευής του γύρω από τις περιοχές, έτσι η στατική ιστοσελίδα που φιλοξενείται στο S3 δεν θα είναι πιθανό να είναι κάτω. Επιπλέον, η έκδοση έχει ενεργοποιηθεί στον κάδο S3 που περιέχει τη στατική ιστοσελίδα, αποτρέποντας τις τυχαίες διαγραφές που μας επιτρέπουν να διατηρήσουμε, να ανακτήσουμε και να αποκαταστήσουμε κάθε έκδοση ενός συγκεκριμένου αντικειμένου.
Για να εξασφαλιστεί η υψηλή διαθεσιμότητα και η επεκτασιμότητα της εφαρμογής, εφαρμόστηκε η αυτόματη μετατόπιση της υπηρεσίας ECS. Αυτό εξασφαλίζει ότι οι υπηρεσίες backend είναι ανθεκτικές σε σφάλματα και μπορούν να χειριστούν το φορτίο της κυκλοφορίας με την κλιμάκωση και την κατάλληλη προς τα έξω (ανάλογα με την κυκλοφορία).
Ο εξισορροπητής φορτίου εφαρμογής ανιχνεύει εάν οι εργασίες Fargate είναι υγιείς χρησιμοποιώντας το τελικό σημείο ελέγχου υγείας στις υπηρεσίες Backend. Εάν το τελικό σημείο ελέγχου υγείας δεν είναι προσβάσιμο, θα θεωρούσε το έργο ανθυγιεινό, θα το απομακρύνει από την ομάδα -στόχο, θα τερματίσει την εργασία και θα ξεκινήσει μια νέα εργασία για να το αντικαταστήσει. Καθώς αναπτύξαμε την υπηρεσία ECS σε πολλαπλές ζώνες διαθεσιμότητας, εάν μια ζώνη διαθεσιμότητας δεν ήταν διαθέσιμη, θα υπάρξουν περιπτώσεις στις άλλες ζώνες διαθεσιμότητας που θα κρατούσαν την εφαρμογή να τρέχει. Περισσότερες εργασίες θα ξεκινήσουν αυτόματα ανάλογα με την κυκλοφορία. Μέσω της χρήσης της αυτόματης μετατόπισης, διασφαλίζουμε ότι παρέχονται μόνο το σωστό ποσό των πόρων και της χωρητικότητας.
Αποτελέσματα
Χρησιμοποιήσαμε το JMeter για να φορτώσουμε τη δοκιμή της εφαρμογής μας, με 500 χρήστες και 1 ramp-up, δείχνοντας τα δύο διαφορετικά τελικά σημεία (Balancer Load Application και CloudFront). Εξετάζοντας τα αποτελέσματα, μπορούμε να δούμε ότι τα αιτήματα που έγιναν στο CloudFront είναι πολύ καλύτερα με τεράστια μείωση της λανθάνουσας κατάστασης (~ 80% μείωση της καθυστέρησης). Το ποσοστό σφάλματος ήταν εκπληκτικά 0%. Αυτό θα πρέπει να οφείλεται στη δυνατότητα υψηλής διαθεσιμότητας και αυτόματης κλιμάκωσης της AWS ECS.
Πάρε μακριά
Αν και αυτό το έργο ήταν τρομακτικό ειδικά για τους αρχάριους στο AWS, ήταν σίγουρα ανταμείβοντας να μπορούμε να δούμε αυτά τα εκπληκτικά αποτελέσματα, πράγμα που σημαίνει ότι η εφαρμογή μας ήταν καλή και αξιέπαινη.
Μερικά σχόλια που παρέχονται στην αρχιτεκτονική μας από την Ascenda Felyty:
“Φιλοξενία του Frontend στο S3 -> ωραία ιδέα. Φαίνεται σαν’για την οικοδόμηση ενός αληθινού σπα”
Εάν ενδιαφέρεστε για αυτό που έχουμε επιτύχει, μπορείτε να δείτε ένα demo της αίτησής μας εδώ!
Σας ευχαριστούμε για την ανάγνωση: Δ
Πώς μπορώ να αντιμετωπίσω και να μειώσω την αυξημένη λανθάνουσα κατάσταση από το cloudfront?
Βλέπω αυξημένη καθυστέρηση στις απαντήσεις από το Amazon CloudFront. Πώς μπορώ να εντοπίσω την αιτία και να μειώσω την καθυστέρηση?
Σύντομη περιγραφή
Για να αντιμετωπίσετε την καθυστέρηση από το CloudFront, προσδιορίστε πρώτα ποια από τα ακόλουθα γεγονότα συμβάλλουν στην καθυστέρηση:
- Ο χρόνος που απαιτείται για αιτήματα για να προχωρήσει μεταξύ του πελάτη και των θέσεων CloudFront Edge. Αυτό περιλαμβάνει τη διαδικασία αναζήτησης ονόματος τομέα (DNS) και οι διαπραγματεύσεις TCP και SSL/TLS.
- Ο χρόνος που απαιτείται για αιτήματα για το CloudFront και την προέλευση. Αυτό περιλαμβάνει τη διαδικασία αναζήτησης DNS Origin, TCP και SSL/TLS διαπραγματεύσεις με την προέλευση και ο χρόνος που λαμβάνεται από την προέλευση για επεξεργασία και απάντηση με ένα αντικείμενο.
Στη συνέχεια, ακολουθήστε τα βήματα αντιμετώπισης προβλημάτων για τα γεγονότα που προκαλούν την μεγαλύτερη λανθάνουσα κατάσταση.
Ανάλυση
Προσδιορίστε τα γεγονότα που προκαλούν λανθάνουσα κατάσταση από το CloudFront:
Για να προσδιορίσετε ποια γεγονότα προκαλούν καθυστέρηση από το CloudFront, κάντε ένα από τα παρακάτω:
- Εκτελέστε την ακόλουθη εντολή curl:
Curl -w "DNS_Resolution: %| TCP_NEGOTIATION_TIME: %| SSL_NEGOTIATION_TIME: %| TTFB: %| Συνολικός χρόνος: %\ n" -o/dev/null -vsl https: // www.παράδειγμα.com
Σημείωση: Αντικαταστήστε παράδειγμα.COM με το όνομα τομέα cloudfront ή το εναλλακτικό όνομα τομέα (CNAME) και τη διαδρομή URL.
- Ελέγξτε πόσο καιρό λαμβάνει κάθε στάδιο ενός αίτημα δικτύου στα εργαλεία προγραμματιστή του προγράμματος περιήγησης ιστού σας. Για παράδειγμα, εάν χρησιμοποιείτε το Mozilla Firefox, η καρτέλα Χρονισμού παρέχει αυτές τις πληροφορίες.
Βασισμένο στο χρονομεταχμένος Για κάθε συμβάν ή αίτημα, ανατρέξτε στην ενότητα Σχετική ανάλυση σε αυτό το άρθρο.
Εάν παρατηρήσατε την καθυστέρηση στο παρελθόν, τότε ελέγξτε τα πεδία χρονομεταχμένος και χρόνος-πρώτος-byte στα αρχεία καταγραφής πρόσβασης CloudFront. Τα αρχεία καταγραφής πρόσβασης στο CloudFront δεν καταγράφουν το χρόνο που λαμβάνεται από τον πελάτη για τη διαδικασία αναζήτησης DNS και τις διαπραγματεύσεις TCP και SSL/TLS
Μείωση της καθυστέρησης στην ανάλυση DNS
- Αύξηση του χρόνου προσωρινής αποθήκευσης DNS στο DNS από την πλευρά του πελάτη.
- Αύξησε το Ώρα να ζήσετε (TTL) της προσωρινής μνήμης στον τοπικό διακομιστή DNS.
- Αύξησε το TTL στο αρχείο DNS στον καταχωρητή/παροχέα DNS.
- Εάν ο διαλυτής Διακομιστής DNS Από τον πάροχο υπηρεσιών Διαδικτύου σας προκαλεί λανθάνουσα κατάσταση, τότε εξετάστε τη χρήση δημόσιων διακομιστών DNS.
Μείωση της καθυστέρησης σε TCP και SSL/TLS - χρόνος διαπραγμάτευσης
- Ελέγξτε το τοπικό εύρος ζώνης δικτύου και το εύρος ζώνης Internet.
- Ελέγξτε εάν υπάρχει διαταραχή δικτύου στον πάροχο διακομιστή Internet ή τον δρομολογητή σας.
- Βελτιστοποιήστε την απόδοση του τοπικού δικτύου σας μέσω του παροχέα υπηρεσιών διαδικτύου ή των διαδρομών δικτύου.
- Επιβεβαιώστε ότι χρησιμοποιείτε το σωστό διαλυτή DNS που επιτρέπει στο πρόγραμμα περιήγησής σας στο Web να βρείτε την πλησιέστερη και σωστή τοποθεσία POP.
- Για να βελτιώσετε την απόδοση του ιστότοπου HTTPS, διατηρήστε τη σύντομη αλυσίδα πιστοποίησης.
- Η καθυστέρηση μπορεί να προκληθεί από ένα τείχος προστασίας, πληρεξούσιο ή τοπικό δρομολογητή. Για να προσδιορίσετε ποιο από αυτά προκαλεί λανθάνουσα κατάσταση, εκτελέστε την ακόλουθη εντολή MTR από το σύστημά σας. Ανατρέξτε στην ενότητα Διαγνώστες προβλημάτων δικτύου με MTR για περισσότερες πληροφορίες.
Παράδειγμα MTR -RW.com-no-dns
Σημείωση: Αντικαταστήστε παράδειγμα.com με το όνομα τομέα σας.
Μείωση της καθυστέρησης στο χρόνο που απαιτείται για το πρώτο byte (TTFB) και τον συνολικό χρόνο που λαμβάνεται (TTL)
Εάν το CloudFront επιστρέψει "X-Cache: Hit From CloudFront"
Το CloudFront επιστρέφει "X-Cache: Hit From CloudFront" όταν τα αιτήματα σερβίρονται από την πλησιέστερη τοποθεσία Edge. Για να μειώσετε την καθυστέρηση:
- Ενεργοποιήστε την αυτόματη συμπίεση CloudFront για να συμπιέσετε αρχεία και αυξήστε την ταχύτητα λήψης.
- Χρησιμοποιήστε την τοπική προσωρινή αποθήκευση ή την προσωρινή αποθήκευση προγράμματος περιήγησης για να μειώσετε τις αιτήσεις στο CloudFront. Καθορίστε την κεφαλίδα ελέγχου cache στα αρχεία για να δώσετε εντολή στο web browsers για να διατηρήσετε το περιεχόμενο του ιστότοπου στη μνήμη του προγράμματος περιήγησης ή στον τοπικό δίσκο για ένα ορισμένο χρονικό διάστημα. Για περισσότερες πληροφορίες σχετικά με τις κεφαλίδες ελέγχου προσωρινής μνήμης, ανατρέξτε στην ενότητα Προσδιορισμός του χρόνου που τα αντικείμενα του CloudFront Caches Caches Caches.
Εάν το CloudFront επιστρέψει "X-Cache: Miss From CloudFront"
Εάν το CloudFront επιστρέψει το "X-Cache: Miss From CloudFront" όταν αποστέλλεται το αίτημα στην προέλευση. Για να μειώσετε την καθυστέρηση:
- Μειώστε το χρόνο μετ 'επιστροφής (RTT) μεταξύ της θέσης του CloudFront Edge στη θέση προέλευσης σας. Εάν ένα αίτημα από μια τοποθεσία Cloudfront Edge πηγαίνει στην πλησιέστερη θέση προέλευσης, τότε το RTT είναι μικρότερο. Ωστόσο, το TTFB επηρεάζεται εάν το αίτημα προέρχεται από μια θέση ακμής γεωγραφικά απομακρυσμένη από την προέλευση. Για να βελτιστοποιήσετε το RTT, το Replicate Server Origin σε πολλές περιοχές που είναι γεωγραφικά πιο κοντά στους χρήστες σας. Στη συνέχεια, ρυθμίστε το DNS του ονόματος τομέα προέλευσης, έτσι ώστε να δρομολογεί το αίτημα σε διακομιστές προέλευσης με βάση την καθυστέρηση ή τη γεωγραφική θέση. Εάν χρησιμοποιείτε το Amazon Route 53 ως παροχέα DNS, τότε δείτε την επιλογή μιας πολιτικής δρομολόγησης για περισσότερες πληροφορίες.
- Ενεργοποιήστε την αυτόματη συμπίεση CloudFront για να συμπιέσετε αρχεία και να μειώσετε την ταχύτητα λήψης. Εάν η μορφή αρχείου σας δεν υποστηρίζεται από την αυτόματη συμπίεση του CloudFront, τότε προ-συμπιέστε αυτό το αρχείο στην προέλευσή σας και το εξυπηρετείτε με Κωδικοποίηση περιεχομένου επί κεφαλής.
- Ελέγξτε την καθυστέρηση από την προέλευση στο CloudFront, επιτρέποντας τη μέτρηση λανθάνουσας καταγωγής. Σημείωση: Ισχύουν τα τυπικά ποσοστά CloudWatch.
- Ενεργοποιήστε την ασπίδα προέλευσης CloudFront.
- Προσθέστε τις πολιτικές κεφαλίδων απόκρισης με ενεργοποιημένη τη λειτουργία κεφαλίδας διακομιστή χρονών. Αυτή η λειτουργία μπορεί να σας βοηθήσει να κατανοήσετε τα γεγονότα που συμβάλλουν στην καθυστέρηση μεταξύ του CloudFront και της προέλευσης.
Μειώστε την καθυστέρηση για τους τελικούς χρήστες με API πολλαπλών περιφερειών με το CloudFront
Καθώς οι οργανισμοί μεγαλώνουν, πρέπει συχνά να εξυπηρετούν γεωγραφικά διασκορπισμένους χρήστες με χαμηλή λανθάνουσα κατάσταση, προτρέποντάς τους να έχουν μια κατανεμημένη παγκόσμια υποδομή στο σύννεφο. Σε αυτό το άρθρο, περιγράφουμε τον τρόπο ανάπτυξης των παγκόσμιων τελικών σημείων API για να μειώσουμε την καθυστέρηση για τους τελικούς χρήστες, ενώ αυξάνοντας μια εφαρμογή’διαθεσιμότητα.
Χρησιμοποιώντας το AWS Global Network και το Amazon CloudFront για την ανάπτυξη εφαρμογών σε πολλαπλές περιοχές AWS, οι οργανισμοί μπορούν να επιτρέψουν στους χρήστες τους να συνδεθούν με ένα τελικό σημείο API στην περιοχή με τη χαμηλότερη καθυστέρηση στο αίτημα API’S Origin, κατά την πρόσβαση σε δεδομένα που διατηρούνται αυτόματα σε συγχρονισμό σε όλες τις περιοχές σε πραγματικό χρόνο.
Για να εξηγήσουμε τη λύση για τους προγραμματιστές της GraphQL API, παρέχουμε μια αρχιτεκτονική χρησιμοποιώντας το AWS Appsync. Αυτή η αρχιτεκτονική βασίζεται σε ένα σύνολο εξαρτημάτων για την υποστήριξη ενεργών/ενεργών σεναρίων πολλαπλών περιοχών, δηλαδή: CloudFront, Amazon Route 53, Διευθυντής Πιστοποιητικών AWS (ACM) και AWS Lambda@Edge.
Για το GraphQL, αυτό το άρθρο συμπληρώνει την προηγούμενη ανάπτυξη πολλαπλών περιοχών της AWS Appsync με τους παγκόσμιους πίνακες Amazon DynamoDB, εξηγώντας πώς να μετατρέψει μια ενεργή/παθητική παγκόσμια λύση Appsync σε ενεργό/ενεργό. Επιπλέον, παρέχει μια εναλλακτική λύση βασισμένη σε cloudfront στα ονόματα προσαρμοσμένων τομέων για APS APSSNC API.
Αν εσύ’Re REST Developer API, τότε μπορείτε να επιτύχετε παρόμοια αποτελέσματα ακολουθώντας τη θέση χρησιμοποιώντας δρομολόγηση με βάση την καθυστέρηση με το Amazon CloudFront για μια ενεργή ενεργή αρχιτεκτονική πολλαπλών περιφερειών. Εκεί εσύ’Θα βρείτε επίσης καθοδήγηση σχετικά με το κόστος και την πολυπλοκότητα που θα σας βοηθήσουν να σκεφτείτε μέσω αρχιτεκτονικών εκτιμήσεων και τον αντίκτυπό τους στη λειτουργικότητα, την ανθεκτικότητα και την απόδοση των εφαρμογών σας.
Multi-Region GraphQL API με CloudFront
Βλέπουμε τους οργανισμούς να επιλέγουν όλο και περισσότερο να χτίσουν API με το GraphQL να παρέχουν εφαρμογές ταχύτερα, δίνοντας στους προγραμματιστές Front-end τη δυνατότητα να αναζητούν πολλαπλές βάσεις δεδομένων, μικροεπιχειρήσεις και API με ένα μόνο τελικό σημείο.
Το ακόλουθο διάγραμμα αρχιτεκτονικής (Εικόνα 1) περιγράφει τον τρόπο μείωσης της λανθάνουσας κατάστασης για τους τελικούς χρήστες, αυξάνοντας παράλληλα την εφαρμογή σας’S διαθεσιμότητα παρέχοντας τα τελικά σημεία GraphQL API σε πολλαπλές περιοχές, με ενεργό/ενεργό συγχρονισμό δεδομένων σε πραγματικό χρόνο που υποστηρίζεται από τους παγκόσμιους πίνακες Amazon Dynamodb. Μια έκδοση PDF αυτού του διαγράμματος είναι διαθέσιμη σε αυτόν τον σύνδεσμο. Για περισσότερες λεπτομέρειες σχετικά με τον τρόπο εφαρμογής της αναπαραγωγής του Amazon DynamoDB, διαβάστε την ανάπτυξη της AWS ADPSYNC με την AWS APPSYNC με τους παγκόσμιους πίνακες Amazon Dynamodb.
Εικόνα 1: Διάγραμμα για το API GraphQL πολλαπλών περιοχών με το CloudFront
Ακολουθήστε τα παρακάτω βήματα για να εφαρμόσετε την αρχιτεκτονική που εμφανίζεται στο διάγραμμα:
- Αναπτύξτε ένα API GraphQL σε δύο ή περισσότερες περιοχές χρησιμοποιώντας το AWS AppSync και στη συνέχεια χειριστείτε τις εντολές και τα ερωτήματα AppSync χρησιμοποιώντας το AWS Lambda Resolvers συνδεδεμένους σε μια βάση δεδομένων DynamoDB.
- Για να ειδοποιήσετε τους πελάτες σχετικά με τις αλλαγές δεδομένων σε όλες τις περιοχές, επιτρέψτε στο DynamoDB Global Tables να διατηρούν δεδομένα σε συγχρονισμό σε όλες τις περιοχές, στη συνέχεια να χειρίζονται ροές δεδομένων DynamoDB με χειριστή Lambda, προκαλώντας έτσι συνδρομές GraphQL που κατασκευάζονται με σκοπό. Για πρόσθετες πληροφορίες σχετικά με το πώς να το κάνετε αυτό, ανατρέξτε στην ανάπτυξη της AWS ADPSYNC μετά την περιοχή Multi Post.
- Για να υποστηρίξετε προσαρμοσμένους τομείς, ανεβάστε τον τομέα’Πιστοποιητικό SSL σε ACM και επισυνάψτε το σε διανομή CloudFront.
- Τοποθετήστε το όνομα τομέα σας στο CloudFront χρησιμοποιώντας τη διαδρομή 53 ως υπηρεσία ανάλυσης ονόματος DNS.
- Ρυθμίστε έναν κανόνα δρομολόγησης στη διαδρομή 53 για να δρομολογήσετε τους παγκόσμιους πελάτες σας στην περιοχή AWS με μικρότερη καθυστέρηση στην τοποθεσία τους.
- Έτσι ώστε οι πελάτες σας να μπορούν να πιστοποιήσουν απρόσκοπτα τα τελικά σημεία APSSNC σε οποιαδήποτε περιοχή, να χρησιμοποιήσουν το Lambda@Edge για να ερωτήσουν τη διαδρομή 53 για την καλύτερη περιοχή για να προωθήσουν το αίτημα και να εξομαλύνουν την εξουσιοδότηση, αφαιρώντας τις ιδιαιτερότητες κάθε περιφερειακής APPSYNC.
- Στη συνέχεια, οι πελάτες σε όλο τον κόσμο μπορούν να συνδεθούν με το API GraphQL σε ένα μόνο τελικό σημείο που είναι διαθέσιμο σε τοποθεσίες άκρων.
- Το CloudFront θα δρομολογήσει άψογα τους πελάτες’ αιτήματα προς το API στην περιοχή με τη χαμηλότερη καθυστέρηση στον πελάτη’τοποθεσία.
Διαμόρφωση του CloudFront
Ακολουθούν τα βήματα για τη διαμόρφωση του CloudFront για την ενεργή/ενεργή λύση πολλαπλών περιοχών σε αυτό το άρθρο:
- Ξεκινήστε δημιουργώντας μια απλή γενική διανομή cloudfront (δείτε πώς εδώ).
- Η προέλευση της διανομής δεν είναι’t σχετική για την τελική κατάσταση της λύσης μας, διότι θα αντικατασταθεί από τα τελικά σημεία API. Ωστόσο, πρέπει να είναι διαλυτή έτσι ώστε να επικαλείται η λειτουργία Lambda@Edge. Για παράδειγμα, μπορείτε να χρησιμοποιήσετε το AWS.αμαζόνα.com ως προέλευσή σας.
- Για απλότητα, η λύση που περιγράφεται σε αυτήν την ανάρτηση υλοποιεί μια ασφαλή προσαρμοσμένη διεύθυνση URL που ξεκινά με το Global-API . Για παράδειγμα, εάν ο προσαρμοσμένος τομέας σας είναι παράδειγμα.com, τότε το ενεργό/ενεργό API είναι διαθέσιμο στο https: // global-api.παράδειγμα.com . Για να το υποστηρίξετε, προσθέστε το εναλλακτικό όνομα τομέα σας (e.σολ., παγκόσμια-ΑΒΙ.παράδειγμα.com) στη διανομή CloudFront (δείτε πώς εδώ).
Στη διανομή CloudFront, επεξεργαστείτε τη συμπεριφορά και ρυθμίστε τις ακόλουθες τιμές ιδιοτήτων:
- Αλλαγή “Επιτρεπόμενες μεθόδους HTTP” προς την “ Αποκτήστε, Επικεφαλής, Επιλογές, βάλτε, ταχυδρομείο, patch, διαγραφή ” - Αυτό θα επιτρέψει τα απαραίτητα αιτήματα μετά τη διαχείριση των ερωτημάτων GraphQL.
- Αλλαγή “Πολιτική προσωρινής μνήμης” προς την “ CachingDisabled ” - Αυτό θα καταργήσει οποιαδήποτε προσωρινή μνήμη για να βεβαιωθείτε ότι όλα τα αιτήματα είναι δυναμικά.
- Αλλαγή “Πολιτική αιτήματος προέλευσης” προς την “ Ερασιτέχνης ” - Αυτό θα προσθέσει τις απαιτούμενες πληροφορίες στο ωφέλιμο φορτίο που αποστέλλεται στη λειτουργία Lambda@Edge.
Ρύθμιση ACM
Για να εφαρμόσετε τη λύση που περιγράφεται σε αυτό το άρθρο, χρησιμοποιήστε το ACM για να ζητήσετε δημόσιο πιστοποιητικό στον προσαρμοσμένο τομέα σας (δείτε πώς εδώ). Αυτή η λύση χρησιμοποιεί υποτομείς, οπότε πρέπει να ζητήσετε ένα πιστοποιητικό που υποστηρίζει μπαλαντέρ. Για παράδειγμα, εάν ο τομέας σας είναι “παράδειγμα.com”, Στη συνέχεια, ζητήστε ένα πιστοποιητικό για να χειριστείτε και τα δύο “παράδειγμα.com” και “*.παράδειγμα.com”.
Μόλις το πιστοποιητικό σας είναι διαθέσιμο και επικυρωμένο στο ACM, επισυνάψτε το στη διανομή CloudFront (δείτε πώς εδώ).
Ρύθμιση διαδρομής Amazon53
Για να εφαρμόσετε τη λύση που περιγράφεται σε αυτό το άρθρο, δημιουργήστε τις ακόλουθες εγγραφές στη φιλοξενούμενη ζώνη Route 53 για τον τομέα σας:
- Ένα απλό αρχείο CNAME για να χρησιμεύσετε ως σημείο εισόδου στη διανομή CloudFront (δείτε πώς εδώ).
- Ένα αρχείο με μια πολιτική δρομολόγησης που βασίζεται σε λανθάνουσα κατάσταση για να διαμορφώσετε τα πολλαπλά περιφερειακά API σας (δείτε πώς εδώ). Αυτό βελτιώνει την απόδοση για τους χρήστες σας εξυπηρετώντας τα αιτήματά τους από την περιοχή AWS που παρέχει τη χαμηλότερη λανθάνουσα κατάσταση.
- Ένας προσαρμοσμένος τομέας για κάθε περιοχή (χρησιμοποιήστε τον ίδιο προσαρμοσμένο τομέα στη λειτουργία Lambda που ακολουθεί).
Για παράδειγμα, εάν ο τομέας σας είναι “ παράδειγμα.com ”, Η διανομή του CloudFront είναι “ abcdefghij.σύννεφο.καθαρά ”, Και έχετε API στις περιοχές της Ευρώπης (Ιρλανδία) και της Ασίας -Ειρηνικού (Σίδνεϊ), τότε θα πρέπει να καταλήξετε με διαμόρφωση διαδρομής 53 παρόμοια με το Σχήμα 2.
Εικόνα 2: Πίνακας εγγραφών στη διαδρομή 53
Σημειώστε τα ακόλουθα κοινά λάθη κατά τη διαμόρφωση της διαδρομής 53:
- ο “Ιρλανδία” και “Σίδνεϊ” Οι τιμές εγγραφής στο παραπάνω παράδειγμα’οι διευθύνσεις URL των περιφερειακών τελικών σημείων API. Αντ 'αυτού, αυτά είναι τα κλειδιά του λεξικού που ορίζονται στον κωδικό Lambda@Edge που ακολουθεί.
- Τα ονόματα καταγραφής λανθάνουσας κατάστασης στο παραπάνω παράδειγμα’συγκεκριμένη περιοχή. Αντ 'αυτού, αυτοί’Re Common Records Ονόματα ότι το Lambda@Edge θα επικοινωνήσει με το Query Route 53 για την συνιστώμενη περιοχή’κλειδί.
Για περισσότερες λεπτομέρειες σχετικά με τον τρόπο με τον οποίο χρησιμοποιείται αυτή η διαμόρφωση διαδρομής 53 στο πλαίσιο της λύσης, εκτελέστε τα βήματα στο τμήμα δοκιμής αυτού του άρθρου. Αυτά σας επιτρέπουν να ξεκινήσετε από έναν κενό λογαριασμό AWS και να φτιάξετε το δρόμο σας σε ένα πλήρως λειτουργικό περιβάλλον πολλαπλών περιφερειακών που μπορείτε να δοκιμάσετε με ένα Vue.Εφαρμογή JS.
Κωδικός για το lambda@Edge
Για να εφαρμόσετε τη λύση σε αυτό το άρθρο, δημιουργήστε μια λειτουργία Lambda@Edge στον κόμβο.JS χρησιμοποιώντας τα αποσπάσματα κώδικα σε αυτή την ενότητα ως πρότυπο (δείτε πώς εδώ).
Υπάρχουν πολλοί τρόποι για να αναπτύξετε τη λειτουργία σας στο CloudFront. Ένας απλός τρόπος είναι να επιλέξετε το “ Ενέργειες ” αναπτυσσόμενο αναπτυσσόμενο επεξεργαστή Lambda και, στη συνέχεια, επιλέξτε “ Αναπτύξτε στο lambda@ide ”.
Ο παρακάτω κωδικός σάς επιτρέπει να βρείτε την καλύτερη περιοχή AWS για ένα εισερχόμενο αίτημα. Υποθέτει ότι έχετε ήδη δημιουργήσει μια πολιτική δρομολόγησης στη διαδρομή σας 53 ονομάστηκε “ λανθάνουσα διαδρομή ”. Τα πιθανά αποτελέσματα αυτής της συνάρτησης, λαμβάνοντας υπόψη το παράδειγμα στον παραπάνω πίνακα διαδρομής 53, είναι “Ιρλανδία” και “Σίδνεϊ”.
const dns = απαιτεί ('dns'); Αφήστε τον Bestorigin. ας λήγει = 0; Αφήστε το TTL = 1; Αφήστε το DNS_HOST = 'Latency Routing.παράδειγμα.com '; λειτουργία getBestRegion () < console.log("inside resolver"); const now = Date.now(); if (now < expires) return Promise.resolve(bestOrigin); return new Promise((resolve, reject) => < dns.resolveCname(DNS_HOST, (err, addr) =>< bestOrigin = addr[0]; expires = now + TTL; resolve(bestOrigin); >) >); >
Ο παρακάτω κωδικός σάς επιτρέπει να χαρτογραφήσετε την καλύτερη περιοχή AWS (όπως κρίνεται από τη διαδρομή 53) σε ένα δημοσιευμένο API. Αυτός ο κώδικας εξετάζει τις ρυθμίσεις του παραδείγματος Route 53 στον παραπάνω πίνακα, με δύο καταχωρήσεις API GraphQL (μία για την Ιρλανδία και μία για το Σίδνεϊ). Πρέπει να αλλάξετε αυτόν τον κωδικό για να ταιριάζει με τις ρυθμίσεις των περιφερειακών τελικών σημείων API σας.
αφήστε τις περιοχές = []; // Χρησιμοποιήστε πεζά. Περιφέρειες ['Ιρλανδία'] = < "Host": "" >; Περιφέρειες ['Σίδνεϊ'] = < "Host": "" >; Λειτουργία GetRegionalSettings (BestRegion)
Ο ακόλουθος κωδικός χρησιμοποιεί τη λειτουργία GetBestRegion για να βρει την καλύτερη περιοχή AWS (σύμφωνα με τη διαδρομή 53), στη συνέχεια το χαρτογραφεί στον τομέα και το μυστικό ενός API χρησιμοποιώντας τη λειτουργία GetRegionalSettings και τελικά αλλάζει τις κεφαλίδες αιτήματος για να προωθήσουν το αίτημα στο επιλεγμένο API.
εξαγωγές.Χειρισμός = async (συμβάν, πλαίσιο, επανάκληση) => < const request = event.Records[0].cf.request; let bestRegion = await getBestRegion(); let map = getRegionalSettings(bestRegion); let target_domain = map["Host"]; // Forward GraphQL subscription requests for WebSockets. request.origin.custom.domainName = target_domain; // Forward REST and GraphQL query/mutation requests. request.headers["host"] = [< key: "host", value: target_domain >]; // κονσόλα.log (`Αίτημα Οι κεφαλίδες που έχουν οριστεί σε" $ "`) callback (null, αίτημα); >;
Ροή από άκρο σε άκρο
Το ακόλουθο διάγραμμα (Εικόνα 3) δείχνει τη ροή επικοινωνίας από άκρο σε άκρο μεταξύ της λύσης’εξαρτήματα.
Περιγράφει οπτικά τον τρόπο με τον οποίο ένα αίτημα από έναν πελάτη μεταφράζεται πρώτα από τη διαδρομή 53 (ή οποιοδήποτε άλλο διακομιστή DNS) και στη συνέχεια αποστέλλεται στη διανομή CloudFront που καταχωρήθηκε στο DNS. Στη συνέχεια, το CloudFront επικυρώνει το αίτημα’Πιστοποιητικό S χρησιμοποιώντας ACM και στη συνέχεια αλλάζει την προέλευση στο τελικό σημείο API με τη χαμηλότερη καθυστέρηση στον πελάτη, εκμεταλλευόμενοι το Lambda@Edge. Τέλος, το αίτημα αποστέλλεται στο καλύτερο τοπικό σημείο API και στο API’Η απάντηση S παραδίδεται πίσω στον πελάτη από το CloudFront.
Εικόνα 3: Διάγραμμα ροής μηνυμάτων
Δοκιμάζοντας την ενεργή/ενεργή λύση πολλαπλών περιοχών
Στη δοκιμή που περιγράφεται σε αυτό το άρθρο, εσείς’ll χρησιμοποιήστε τις ίδιες περιοχές της Ιρλανδίας και του Σίδνεϊ που χρησιμοποιήθηκαν στην προηγούμενη διαμόρφωση δείγματος διαδρομής 53. Τα βήματα δοκιμής υποθέτουν ότι εσείς’έχουν ήδη εκτελέσει τα προηγούμενα βήματα που αναφέρονται σε αυτό το άρθρο’τα προηγούμενα κεφάλαια για την κατασκευή της λύσης πολλαπλών περιοχών.
Για να ελέγξετε ποια περιοχή εσείς’χτυπάω κατά τη δοκιμή, εσύ’θα χρειαστεί ένας πελάτης μεσολάβησης VPN ή κάτι παρόμοιο. Τα δοκιμαστικά βήματα σε αυτό το άρθρο πραγματοποιήθηκαν χρησιμοποιώντας το Mullvad, μια εμπορική υπηρεσία VPN ανοιχτού κώδικα με έδρα τη Σουηδία.
Δοκιμάζοντας το ενεργό/ενεργό API της πολλαπλών περιοχών
Ακολουθήστε αυτά τα βήματα για να προετοιμάσετε τις δοκιμές μιας λύσης πολλαπλών περιοχών σε τελικά σημεία GraphQL API.
Αυτή η ενότητα σας επιτρέπει να δημιουργήσετε ένα περιβάλλον δοκιμής AppSync από το μηδέν, ακόμη και αν δεν έχετε προηγούμενη εμπειρία με το AppSync. Εσείς’LL Χρησιμοποιήστε αυτό το περιβάλλον ως προϋπόθεση για να δοκιμάσετε τα ερωτήματα και τις συνδρομές του GraphQL στις επόμενες δύο ενότητες.
- Ξεκινήστε ένα δείγμα API GraphQL στις περιοχές της Ιρλανδίας και του Σίδνεϊ. Αυτό θα αναπτύξει ένα πλήρως λειτουργικό appsync API Endpoint με ένα δείγμα σχήματος που υποστηρίζεται από μια περιφερειακή βάση δεδομένων DynamoDB.
- Για να καταργήσετε τυχόν αμφιβολίες σχετικά με την περιοχή που πλήττεται από τις δοκιμές, Don’T Ενεργοποίηση των παγκόσμιων πινάκων DynamoDB-Διαφορετικά, ακολουθήστε τη μετά την ανάπτυξη της AWS Appsync με τους παγκόσμιους πίνακες του Amazon DynamoDB εάν θέλετε να ενεργοποιήσετε τα διασταυρωμένα δεδομένα σε πραγματικό χρόνο και την αντιγραφή συνδρομής. Οι δοκιμές σε αυτό το άρθρο υποθέτουν ότι έχετε HAVED’Ενεργοποιημένη με την αντιγραφή.
- Χρησιμοποιήστε την Ιρλανδία-Appsync.παράδειγμα.com, για παράδειγμα, ως Ιρλανδία’S Ονομασία προσαρμοσμένου τομέα
- Χρησιμοποιήστε το Sydney-Appsync.παράδειγμα.com, για παράδειγμα, ως Σίδνεϊ’S Ονομασία προσαρμοσμένου τομέα
- Βεβαιωθείτε ότι συνδέετε το API στο όνομα του προσαρμοσμένου τομέα.
Περιφέρειες ['Ιρλανδία'] = < "Host": ".cloudfront.net" >; Περιφέρειες ['Σίδνεϊ'] = < "Host": ".cloudfront.net" >;
- Για σκοπούς δοκιμής, δημιουργήστε μια απλή λειτουργία εξουσιοδότησης Lambda για τα API GraphQL χρησιμοποιώντας τον ακόλουθο κόμβο.JS δείγμα κώδικα και αναπτύξτε το και στις δύο περιοχές. Αυτή η λειτουργία θα δεχτεί τη συμβολοσειρά “ εξουσιοδοτημένος ” ως το μόνο έγκυρο διακριτικό εξουσιοδότησης. Σημειώστε ότι τα Hardcoded Authentication Tokens Aren’μια καλή πρακτική, και εμείς’επαναφέρετε μόνο εδώ για απλότητα δοκιμής. Αντ 'αυτού, σκεφτείτε να αποθηκεύσετε τα μάρκες σας στο AWS Secrets Manager.
εξαγωγές.Χειρισμός = async (συμβάν) => < const < authorizationToken >= επιστροφή συμβάντος < isAuthorized: authorizationToken === 'custom-authorized', resolverContext: <>>; >;
- Ρυθμίστε τη λειτουργία Lambda Actenizer ως προεπιλεγμένο εξουσιοδοτημένο για τα περιφερειακά τελικά σημεία APPSYNC API (δείτε πώς εδώ) και αφαιρέστε τυχόν κλειδιά API από τη διαμόρφωση APPSYNC. Αυτό θα κάνει το API διαθέσιμο στο κοινό με ένα απλό διακριτικό κατά την εκτέλεση της δοκιμής, καθιστώντας τις δοκιμές ευκολότερη εκτέλεση. Ωστόσο, εκτός αν αυτό είναι ακριβώς αυτό που θέλετε, συνιστούσαμε να εξετάσετε όλες τις διαθέσιμες επιλογές για να εξασφαλίσετε τα APIS APPSYNC σας.
- Δημιουργήστε μια μετάλλαξη στην περιοχή της Ιρλανδίας για να προσθέσετε ένα δείγμα εγγραφής (δείτε αυτή τη σελίδα για περισσότερες πληροφορίες):
- Μεταβείτε στην Ιρλανδία’S AWS APPSYNC Console.
- Μεταβείτε στην Ιρλανδία’S Appsync API που δημιουργήσατε σε ένα προηγούμενο βήμα.
- Επιλέξτε την καρτέλα Queries στην αριστερή πλευρά.
- Σχετικά με το πεδίο διακριτικής εξουσιοδότησης, πληκτρολογήστε προσαρμοσμένο εξουσιοδοτημένο (όπως στο Lambda Agrentizer).
- Εκτελέστε την ακόλουθη εντολή μετάλλαξης:
μετάλλαξη createevent < createEvent( name: "Ireland" when: "" where: "" description: "" ) < id name >>
Υποθέτοντας ότι εσείς’έχετε ήδη ρυθμίσει το παγκόσμιο-API σας.παράδειγμα.com ανακατεύθυνσης χρησιμοποιώντας τα βήματα από αυτήν την ανάρτηση, τότε αυτό’Καθίστε! Εσείς’Re είναι έτοιμοι να δοκιμάσετε το τελικό σημείο AppSync πολλαπλών περιοχών.
Δοκιμάζοντας τα ενεργά/ενεργά ερωτήματα GraphQL πολλαπλών περιοχών
Υποθέτοντας ότι εσείς’Ακολούθησε ήδη τα απαραίτητα βήματα για την κατασκευή ενός περιβάλλοντος δοκιμής AppSync πολλαπλών περιοχών από το μηδέν όπως εξηγείται στην προηγούμενη ενότητα, ακολουθήστε αυτά τα βήματα για να δοκιμάσετε τη λύση πολλαπλών περιφερειών με τα ερωτήματα GraphQL.
- Στον πελάτη VPN σας, ρυθμίστε μια σύνδεση σε διακομιστή VPN κοντά στην Ιρλανδία (e.σολ., Λονδίνο, Ηνωμένο Βασίλειο).
- Αναζητήστε το API με μια εντολή curl παρόμοια με την ακόλουθη για να εμφανίσετε τα δείγματα δεδομένων, αντικαθιστώντας το όνομα τομέα με το δικό σας και περνώντας το διακριτικό εξουσιοδότησης που επιτρέπεται από το Assetizer Lambda.
$ curl -xpost -h "εξουσιοδότηση: προσαρμοσμένη -εξουσιοδοτημένη" -d " < "query": "query < listEvents < items < name >>> "> 'https: // global-api.παράδειγμα.com/graphql/ - Επιβεβαιώστε ότι η απόκριση μπούκλα είναι
< "data": < "listEvents": < "items": [ < "name": "Ireland" >]>>>>>>>>>>>>>>>> - Στον πελάτη VPN, ρυθμίστε μια σύνδεση σε διακομιστή VPN κοντά στο Sydney (e.σολ., Μελβούρνη, Αυστραλία).
- Εκτελέστε ξανά την εντολή curl - η απάντηση θα πρέπει τώρα
< "data": < "listEvents": < "items": [ < "name": "Sydney" >]>>>>>>>>>>>>>>>>
Όπως μπορείτε να δείτε, η εκτέλεση της εντολής Curl από διαφορετικές τοποθεσίες στον κόσμο προκαλεί ένα διαφορετικό τελικό σημείο Appsync για να απαντήσει, αν και εσείς’Επανέλθει το ίδιο τελικό σημείο πολλαπλών περιφερειών API API.
Δοκιμάζοντας τις συνδρομές σας σε πολλαπλές περιφέρεια/ενεργές γραφικές συνδρομές
Για να δοκιμάσετε τις συνδρομές GraphQL, ακολουθήστε αυτά τα βήματα για να τα δοκιμάσετε χρησιμοποιώντας το WebSockets.
Αυτή η ενότητα υποθέτει επίσης ότι εσείς’Ακολούθησε ήδη τα απαραίτητα βήματα για την κατασκευή ενός περιβάλλοντος δοκιμής AppSync πολλαπλών περιοχών από την αρχή, όπως εξηγείται στο προηγούμενο τμήμα.
Η ακόλουθη δοκιμαστική προσέγγιση χρησιμοποιεί το Postman, μια εφαρμογή που σας επιτρέπει να αλληλεπιδράτε με API χρησιμοποιώντας post, get και websockets. Η ακολουθία των βημάτων που χρησιμοποιούνται στην ακόλουθη δοκιμή βασίζεται στις οδηγίες από την οικοδόμηση ενός πελάτη websocket σε πραγματικό χρόνο για το AWS Appsync.
- Δημιουργήστε ένα ωφέλιμο φορτίο χειραψίας για αποστολή κατά το άνοιγμα της σύνδεσης WebSocket. Στο εργαλείο γραμμής εντολών σας, εκτελέστε την ακόλουθη εντολή, αντικαθιστώντας το όνομα τομέα με το δικό σας και χρησιμοποιώντας το διακριτικό που ορίζεται στο Lambda Agrentizer. Το αποτέλεσμα θα πρέπει να είναι μια βασική κρυπτογραφημένη συμβολοσειρά-αποθηκεύστε αυτή τη συμβολοσειρά σε ένα σημειωματάριο επειδή εσείς’Θα το χρειαστώ αργότερα για το ταχυδρομείο’διαμόρφωση S.
$ echo '' | βάση64 - Στο Postman, δημιουργήστε μια νέα σύνδεση websocket ακολουθώντας τις οδηγίες σε αυτήν τη σελίδα. Θα πρέπει να μπορείτε να το κάνετε επιλέγοντας το νέο κουμπί και, στη συνέχεια, επιλέγοντας το κουμπί Αίτησης WebSocket.
- Στο πλαίσιο URL διακομιστή, πληκτρολογήστε την ακόλουθη διεύθυνση URL, βεβαιωθείτε ότι αντικαταστήσετε το όνομα τομέα σας:
wss: // global-api.παράδειγμα.com/graphql/realtime - Στην ενότητα PARAMS, προσθέστε τις ακόλουθες παραμέτρους:
- Κλειδί: ωφέλιμο φορτίο, τιμή: E30 = (αυτό είναι το ίδιο με το Empty <>)
- Κλειδί: κεφαλίδα, τιμή: (Η συμβολοσειρά base64 που δημιουργήσατε στο πρώτο βήμα)
- Κλειδί: Sec-Websocket-Protocol, Value: GraphQL-WS
- Βεβαιωθείτε ότι η σύνδεση έχει καθιερωθεί αναζητώντας ταχυδρομείο’S Connected Green Label στην ενότητα μηνυμάτων και αναζητώντας το συνδεδεμένο με το WSS: //. Μήνυμα στην ίδια ενότητα.
< "id":"test", "payload": < "data": "", "extensions": < "authorization": < "Authorization":"", "host": "", > >, "Πληκτρολογήστε": "Έναρξη">
συνδρομή < subscribeToEventComments(eventId: "Ireland") < content >>
- Βεβαιωθείτε ότι η συνδρομή δημιουργήθηκε με επιτυχία αναζητώντας το μήνυμα απόκρισης start_ack στο postman’Τμήμα μηνυμάτων. Για το παραπάνω μήνυμα συνδρομής, η απάντηση πρέπει να είναι .
μετάλλαξη < commentOnEvent( content: "test-comment", createdAt: "2000-01-01", eventId: "Ireland" ) < commentId eventId createdAt content >>
Όπως μπορείτε να δείτε, οι μεταλλάξεις εκτελούνται σε μια περιοχή (Ε.σολ., Ιρλανδία) ενεργοποιήστε τις συνδρομές που συνδέονται με αυτήν την περιοχή. Για μία μόνο περιφερειακή μετάλλαξη για την ενεργοποίηση συνδρομών πελάτη σε όλες τις περιοχές (Ε.σολ., Ιρλανδία και Σίδνεϊ), πρέπει να ρυθμίσετε την αντιγραφή διασταυρούμενης περιοχής με διάδοση μετάλλαξης. Ακολουθήστε την ανάπτυξη της AWS Appsync μετά την περιοχή Multi Post με την Amazon Dynamodb Global Tables για να μάθετε πώς να το κάνετε αυτό.
Δημιουργία εφαρμογής ενισχύσεων για να ελέγξετε το API πολλαπλών περιοχών
Τώρα που εσύ’Είναι σίγουρος ότι το API Active/Active GraphQL του Multi-Region λειτουργεί τόσο για ερωτήματα όσο και για συνδρομές, μπορείτε να εκμεταλλευτείτε το AWS να ενισχύσει για να δημιουργήσετε έναν πελάτη δοκιμής για το API.
Σε αυτό το άρθρο, χρησιμοποιούμε το Vue.JS με το Inplify JavaScript για την οικοδόμηση μιας απλής εφαρμογής πελάτη, αλλά ενισχύει τις βιβλιοθήκες υποστηρίζουν επίσης τους πελάτες iOS, Android και Flutter, παρέχοντας έτσι τις ίδιες δυνατότητες σε αυτά τα διαφορετικά runtimes. Οι υποστηριζόμενοι πελάτες που υποστηρίζονται παρέχουν απλές αφαίρεσης για να αλληλεπιδρούν με το AppSync GraphQL API backends με λίγες γραμμές κώδικα, συμπεριλαμβανομένων των ενσωματωμένων δυνατοτήτων websocket, πλήρως συμβατά με το πρωτόκολλο σε πραγματικό χρόνο AppSync.
Ακολουθήστε αυτήν την ακολουθία βημάτων για να δημιουργήσετε τη δοκιμαστική σας εφαρμογή.
- Βεβαιωθείτε ότι έχετε κόμβο.Εγκατάσταση JS - το χρειάζεστε για το επόμενο βήμα.
- Δημιουργήστε ένα Vue.Το JS ενισχύει την εφαρμογή στην περιοχή της Ιρλανδίας εκτελώντας αυτά τα βήματα.
- Συνδέστε την αίτησή σας στην Ιρλανδία’api.
- Εκτελέστε την ακόλουθη εντολή για να δεσμεύσετε την αίτησή σας στην Ιρλανδία’s appsync endpoint, αντικαθιστώντας το και το:
amplify add codegen -Apiid -Profile - Εκτελέστε την ακόλουθη εντολή για τη δημιουργία του σχετικού κώδικα για ερωτήματα και συνδρομές:
ενισχύουν τον κωδικό Gen
- Εκτελέστε το NPM Run Serve στο εργαλείο γραμμής εντολών.
- Βεβαιωθείτε ότι υπάρχει’T Οποιαδήποτε σφάλματα.
- Μεταβείτε στο http: // localhost: 8080/ - θα πρέπει να δείτε το προεπιλεγμένο Vue.Εφαρμογή JS.
ListEvents (φίλτρο: $ φίλτρο, όριο: $ όριο, NextToken: $ nexttoken) < items < id name where when description comments < items < content commentId >>> NextToken>
Εκδηλώσεις
Εκδήλωση: < , name=">"">
>>>
- Εκτελέστε το NPM Run Serve στο εργαλείο γραμμής εντολών.
- Βεβαιωθείτε ότι υπάρχει’T Οποιαδήποτε σφάλματα.
- Πλοηγηθείτε στο http: // localhost: 8080/ - Θα πρέπει τώρα να δείτε την αναγραφόμενη εκδήλωση της Ιρλανδίας που δημιουργήθηκε στο παρελθόν στις δοκιμές σας, ανεξάρτητα από το πού στον κόσμο εσείς’εκτελώντας την εφαρμογή. Αυτό συμβαίνει επειδή εσύ’Συνδεθεί απευθείας με την Ιρλανδία’S Περιφερειακό τελικό σημείο.
- Πριν από το επόμενο βήμα, αντιγράψτε την εκδήλωση της Ιρλανδίας’s σε ένα σημειωματάριο (αυτό είναι ένα τυχαίο 36-χαρακτήρα-lenght uuid).
μετάλλαξη < commentOnEvent( content: "test-comment", createdAt: "2000-01-01", eventId: "" ) < commentId eventId createdAt content >>
- Τροποποιήστε τις εξαγωγές SRC/AWS.Αρχείο JS, αλλάζοντας την τιμή της παραμέτρου AWS_APPSYNC_GRAPHQLENDPOINT από την Ιρλανδία’S Endpoint API στο παγκόσμιο σημείο εισόδου σας (e.σολ., https: // global-api.παράδειγμα.com/graphql).
- Η εφαρμογή θα πρέπει να ανανεώνεται αυτόματα, αναφέροντας είτε το στοιχείο της Ιρλανδίας είτε το στοιχείο του Σίδνεϊ, ανάλογα με το πού βρίσκεστε στον κόσμο.
Δοκιμάζοντας την εφαρμογή ενίσχυσης έναντι του API της πολλαπλών περιοχών
Ακολουθήστε αυτά τα βήματα για να δοκιμάσετε το τελικό σημείο API πολλαπλών περιφέρειας API με μια εφαρμογή ενισχυτή.
- Στον πελάτη VPN, ρυθμίστε μια σύνδεση σε διακομιστή VPN κοντά στο Sydney (e.σολ., Μελβούρνη, Αυστραλία).
- Μεταβείτε στην εφαρμογή ενίσχυσης σε ένα πρόγραμμα περιήγησης ιστού (e.σολ., http: // localhost: 8080). Θα πρέπει τώρα να δείτε την αναγραφόμενη εκδήλωση Sydney που δημιουργήθηκε προηγουμένως στις δοκιμές σας.
- Εκτελέστε μια εντολή μετάλλαξης για να προσθέσετε ένα σχόλιο στην εκδήλωση του Σίδνεϊ με τον ίδιο τρόπο που κάνατε για την Ιρλανδία.
- Βεβαιωθείτε ότι το νέο σχόλιο εμφανίστηκε αυτόματα στην αίτησή σας, ακριβώς κάτω από την εκδήλωση του Σίδνεϊ.
Όπως μπορείτε να δείτε, η εφαρμογή σας χτυπά απρόσκοπτα το πλησιέστερο τελικό σημείο APPSYNC API, τόσο για ερωτήματα όσο και για συνδρομές, ενώ συνδέεται με ένα ενιαίο παγκόσμιο API Endpoint.
Καθάρισε
Για να καθαρίσετε τη δημιουργία της υποδομής, διαγράψτε τα APSSNC API, τη διανομή CloudFront, τη λειτουργία Lambda@Edge και τις εγγραφές Route53 που δημιουργήσατε για αυτή τη δοκιμή.
συμπέρασμα
Σε αυτήν την ανάρτηση, περιγράψαμε τον τρόπο μείωσης της λανθάνουσας κατάστασης για τους τελικούς χρήστες, ενώ αυξάνοντας μια εφαρμογή’τη διαθεσιμότητα, παρέχοντας τελικά σημεία API σε πολλαπλές περιοχές AWS.
Η λύση αξιοποιεί το CloudFront, Route 53 και ACM για να υποστηρίξει το παγκόσμιο API σας’S Custom Domain Name και χρησιμοποιεί το Lambda@Edge για να προωθήσει τα εισερχόμενα αιτήματα στο καλύτερο τελικό σημείο API με βάση την καθυστέρηση του δικτύου στον αιτούντα.
Για να εξηγήσουμε τη λύση στους προγραμματιστές της GraphQL API, δώσαμε μια σε βάθος αναφορά της αρχιτεκτονικής αναφοράς που μπορείτε να κατεβάσετε ως PDF εδώ. Αν εσύ’Re REST Developer API, τότε μπορείτε να επιτύχετε παρόμοια αποτελέσματα ακολουθώντας τη θέση χρησιμοποιώντας δρομολόγηση με βάση την καθυστέρηση με το Amazon CloudFront για μια ενεργή ενεργή αρχιτεκτονική πολλαπλών περιφερειών.
Για να διατηρήσουμε τις δοκιμές απλές, δεν κάναμε’t Ενεργοποίηση αντιγραφής διασταυρούμενων δεδομένων. Αν εσύ’Το D μου αρέσει να δημιουργεί ένα ενεργό/ενεργό τελικό σημείο GraphQL πολλαπλών περιοχών με διασταυρούμενα δεδομένα και αντιγραφές συνδρομής, στη συνέχεια, συνδυάστε αυτό που μάθατε από αυτό το άρθρο μαζί με την ανάπτυξη της AWS Appsync με το Amazon DynamoDB Global Tables.
Aaron SEMPF
Το AARON SEMPF είναι ένας παγκόσμιος αρχιτέκτονας Party Partner Solutions, στην ομάδα Global Systems Integrators. Όταν δεν συνεργάζεται με τους συνεργάτες της AWS GSI, μπορεί να βρεθεί πρωτότυπα κωδικοποίησης για αυτόνομα ρομπότ, συσκευές IoT και διανεμημένες λύσεις.
Fernando Ibanez
Ο Fernando Ibanez είναι αρχιτέκτονας λύσεων με έδρα τη Βόρεια Καρολίνα στην ομάδα τριτοβάθμιας εκπαίδευσης. Ο Fernando απολαμβάνει βοηθώντας τους πελάτες να σχεδιάσουν και να εφαρμόσουν λύσεις αυτοματισμού για να κάνουν τη χρήση του σύννεφου απλούστερη. Στον ελεύθερο χρόνο του, ο Fernando απολαμβάνει να πηγαίνει στο θέατρο, να δοκιμάζει νέες κουζίνες και να ξοδεύει χρόνο με την οικογένειά του.
Χόρργ Φόνσς
Ο Jorge είναι ένας αρχιτέκτονας λύσεων με 20+ χρόνια σε αυτό, κρατώντας 2 κύρια πτυχία και όλες τις πιστοποιήσεις AWS. Στο AWS, βοηθά τους πελάτες μέσω των διαδρομών του cloud μετατρέποντας πολύπλοκες προκλήσεις σε χάρτες πορείας που μπορούν να ενεργοποιηθούν τόσο για τεχνικά όσο και για επιχειρηματικά ακροατήρια.
Ralph Richards
Ο Ralph είναι ένας αρχιτέκτονας λύσεων στο Amazon Web Services με έδρα το Λονδίνο. Συνεργάζεται με τους πελάτες της Enterprise Software & SaaS ως τεχνικός σύμβουλος βοηθώντας τους να επιτύχουν τους επιχειρηματικούς τους στόχους στο σύννεφο. Είναι επίσης εξειδικευμένος στις τεχνολογίες εμπορευματοκιβωτίων, με έντονο ενδιαφέρον για την οικοδόμηση σύγχρονων εφαρμογών χρησιμοποιώντας μια προσέγγιση μικροεπιχειρήσεων. Έξω από την εργασία, απολαμβάνει τη φωτογραφία, την ανάγνωση και την εξερεύνηση νέων θέσεων σε οδικά ταξίδια.
Дооттй πραγματοποιούμενοι к к и и и и и и и и и и и и д д д д д д д д д д д д
Amazon Cloudfront - э э э с с д д а а а а а а а д д д д д д д д д д д д д д д д д д д д д д д д д д в.
Приερι ы и и и и μύμν
Пrogооос й й й οχουμ
Х х п ыч ыч д д τροφή. лений и шифровριού.
Усрряй досооооооооосооооо кооо к к к и и и и и у у у у
Оптимизируйте доставку динамического веб-контента с помощью специально созданной многофункциональной глобальной сетевой инфраструктуры AWS, которая поддерживает периферийное завершение и WebSockets.
Поооовая передачa виее в римερι ρου рии ве ие п п п и и и иλινατό
Есррз п п п п п нτροφή е у у у у у у у у у у уΑ.
Рrаroin
Д д д д д д д д д д д д д д д д д д д д д д д д й с с с с с с й й й й й й й й.
Киен πραγματοποιούμενοι
К н н τροφή
Ззнай πραγματοποιού
Прочи πραγματοποιούμενοι ρου рке нз нзалδι не ре ре ре р и з з н н τροφή нячκου ре ре ре ре ре р и з з н н τροφή няалδι ре ре ре ре р и и з з н н τροφή няалδι ре ре ре ре р и з з з н τροφή наче ре ре ре р р и з з н н τροφή няалδι ре ре ре ре р и и з з н н τροφή,.
Начad р р р п п п п ° п п п п п
З з з п п п п д д е д д д д д д д д д д д д д.
Попробй й й й р р ρίσ
Начни πραγματικά ριμπάζε на aws же егодня лаоаριού песатρά иъоо п перερι денене ъем 1 т т перече даных ο ъ ъ т п χείρ.
Подробнτερ
Подробнτερ
- Ч ч ч т т т ч ч ч ч ч ч ч ч ч ч ч ч?
- Ч ч ч т т т т т ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч?
- И и и р р ηματμοστεμβρίου
- Ч ч ч т т т ч ч ч ч ч ч ч ч ч ч ч ч ч ч?
- Ч ч т €?
- Ч ч ч т т т ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч?
- Зезο .
- Нооé в в в в
- Ανά
- Преe -roлизы
Ррριμσ д д χειριστού
- Началol р р а р р
- О чение и с р р р с ζί
- Б иφύλα
- Ценнц аити¯ккры
- Ation в р и и п п п и и и и ζί п п
- Аналλί
- Паррεριζέ aws
Ρυθμίστε το
- Ценнц рразрабочIin
- Паé sdk и и и и и и п п п п п п п п
- .Καθαρό на aws
- Python на aws
- Java на aws
- Php на aws
- Javascript на aws
Подérжmжming
- Сжψηφικά
- Полчение пοο
- Ο Δεκέμβριο
- Ценнц знан πραγματοποιούσα
- AWS RE: Δημοσίευση
- Υποστήριξη AWS
- Юридичé πραγματοποιού
- Р р в в р
Αμαζόνα.com - р р о а а в в в в в в в в ζί. Ы пro памам о о о и и и г εντανά л и д д д д д τροφή л. еендерных гру ю ю ю ю н н н н н н н н н н н н н н н н @.
- Krocver
- |
- Усовия половριού
- |
- Парамее rы Φεβρουάριος μπισκότο
- |
- © 2023 g. Amazon Web Services, Inc. и е д дчερι рερι прерние предрияттятятятятятятятятяάσαι. Βαθμολογία праβιου.
В р р °. Р е н н н е п п п п п п п п п п п п п п п п п п п п.
Прекращениτερ
Подérжrka aWS д ερμηνευτή internet заканчλί. Подерживаеыεριe рразερι: Chrome, Firefox, Edge και Safari Safari. Пороннαι »
- Εκτελέστε την ακόλουθη εντολή για να δεσμεύσετε την αίτησή σας στην Ιρλανδία’s appsync endpoint, αντικαθιστώντας το και το: