Βελτιώστε την επεκτασιμότητα για τα API χωρίς ιθαγένεια του Amazon Rekognition χρησιμοποιώντας πολλαπλές περιοχές PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.

Βελτιώστε την επεκτασιμότητα για τα API χωρίς ιθαγένεια του Amazon Rekognition χρησιμοποιώντας πολλαπλές περιοχές

Σε προηγούμενες ανάρτηση, περιγράψαμε μια λύση επαλήθευσης ταυτότητας από άκρο σε άκρο σε μία περιοχή AWS. Η λύση χρησιμοποιεί το Αναγνώριση Amazon APIs DetectFaces για ανίχνευση προσώπου και Συγκρίνετε Πρόσωπα για σύγκριση προσώπων. Θεωρούμε ότι αυτά τα API είναι API ανιθαγενών επειδή δεν εξαρτώνται από μια αναγνώριση Amazon συλλογή προσώπου. Είναι επίσης ανίκανοι, που σημαίνει ότι οι επαναλαμβανόμενες κλήσεις με τις ίδιες παραμέτρους θα επιστρέψουν το ίδιο αποτέλεσμα. Παρέχουν ευέλικτες επιλογές για τη μετάδοση εικόνων, είτε μέσω ενός Απλή υπηρεσία αποθήκευσης Amazon Τοποθεσία (Amazon S3) ή ακατέργαστα byte.

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

Amazon Rekognition ανιθαγενών API

Από τα διαθέσιμα API εικόνων αναγνώρισης Amazon, Συγκρίνετε Πρόσωπα, DetectFaces, DetectLabels, DetectModerationLabels, DetectProtectiveEquipment, DetectText, να Αναγνωρίστε Διασημότητες είναι ανιθαγενείς. Παρέχουν επιλογές τόσο του Amazon S3 όσο και των ακατέργαστων byte για τη μετάδοση εικόνων. Για παράδειγμα, στη σύνταξη αιτήματος του DetectFaces API, υπάρχουν δύο επιλογές για μεταβίβαση στο Image πεδίο: Bytes or S3Object.

Όταν χρησιμοποιείτε το S3Object επιλογή, μια τυπική αρχιτεκτονική είναι η εξής.

Αυτή η λύση έχει την ακόλουθη ροή εργασίας:

  1. Η εφαρμογή πελάτη έχει πρόσβαση σε μια ιστοσελίδα που φιλοξενείται με Ενίσχυση AWS.
  2. Η εφαρμογή πελάτη είναι πιστοποιημένη και εξουσιοδοτημένη με Amazon Cognito.
  3. Η εφαρμογή πελάτη μεταφορτώνει μια εικόνα σε έναν κάδο S3.
  4. Το Amazon S3 ενεργοποιεί ένα AWS Lambda λειτουργία για να καλέσετε το Amazon Rekognition.
  5. Η συνάρτηση Lambda καλεί Amazon Rekognition API με την επιλογή S3Object.
  6. Η συνάρτηση Λάμδα διατηρεί το αποτέλεσμα σε ένα Amazon DynamoDB πίνακα.

Επιλέξτε S3Object επιλογή στα ακόλουθα σενάρια:

  • Η εικόνα είναι αρχείο με μορφή PNG ή JPEG
  • Αναπτύξτε ολόκληρη τη στοίβα στην ίδια Περιοχή όπου είναι διαθέσιμο το Amazon Rekognition
  • Το όριο περιφερειακής υπηρεσίας του Amazon Rekognition API ανταποκρίνεται στις απαιτήσεις του συστήματός σας

Όταν δεν πληροίτε όλες αυτές τις απαιτήσεις, θα πρέπει να επιλέξετε το Bytes επιλογή.

Χρησιμοποιήστε Amazon Rekognition Un Stateless API σε διαφορετική περιοχή

Ένα παράδειγμα χρήσης του Bytes Η επιλογή είναι όταν θέλετε να αναπτύξετε την περίπτωση χρήσης σας σε μια περιοχή όπου το Amazon Rekognition δεν είναι γενικά διαθέσιμο, για παράδειγμα, εάν έχετε παρουσία πελατών στη Νότια Αμερική (sa-east-1) Περιοχή. Για τη διατήρηση δεδομένων, πρέπει να βρίσκεται ο κάδος S3 που χρησιμοποιείτε για την αποθήκευση των εικόνων των χρηστών sa-east-1, αλλά θέλετε να χρησιμοποιήσετε το Amazon Rekognition για τη λύση σας, παρόλο που δεν είναι γενικά διαθέσιμο στο sa-east-1. Μια λύση είναι να χρησιμοποιήσετε το Bytes επιλογή για να καλέσετε το Amazon Rekognition σε διαφορετική Περιοχή όπου είναι διαθέσιμη η Αναγνώριση Amazon, όπως π.χ us-east-1. Το παρακάτω διάγραμμα απεικονίζει αυτήν την αρχιτεκτονική.

Αναγνώριση σε διαφορετική Περιφέρεια

Αφού ενεργοποιηθεί η συνάρτηση Lambda (Βήμα 4), αντί να καλεί το Amazon Rekognition απευθείας με τη θέση S3 της εικόνας, η συνάρτηση πρέπει να ανακτήσει την εικόνα από τον κάδο S3 (Βήμα 5) και μετά να καλέσει το Amazon Rekognition με τα ακατέργαστα byte της εικόνας (Βήμα 6). Το παρακάτω είναι ένα απόσπασμα κώδικα της συνάρτησης Lambda:

rekognition_region = os.getenv("REKOGNITION_REGION")
s3 = boto3.client('s3')
rekognition = boto3.client('rekognition', region_name=rekognition_region)

def handler(event, context):
    bucket = event['Records'][0]['s3']['bucket']['name']
    key = urllib.parse.unquote_plus(
    event['Records'][0]['s3']['object']['key'], encoding='utf-8')
    s3_res = s3.get_object(Bucket=bucket, Key=key)
    rekognition_res = rekognition.detect_faces(Image={"Bytes": s3_res['Body'].read()}, Attributes=['ALL'])
    print(json.dumps(rekognition_res))

Λάβετε υπόψη ότι το προηγούμενο απόσπασμα κώδικα λειτουργεί απευθείας για μορφές JPEG ή PNG. Για άλλες μορφές εικόνας, όπως το BMP, απαιτείται επιπλέον επεξεργασία εικόνας για τη μετατροπή της σε JPEG ή PNG byte πριν από την αποστολή στο Amazon Rekognition. Ο παρακάτω κώδικας μετατρέπει BMP σε JPEG byte:

import io
from PIL import Image

s3_res = s3.get_object(Bucket=bucket, Key=key)
bmp_img = Image.open(io.BytesIO(s3_res['Body'].read()))
buffered = io.BytesIO()
rgb_img = bmp_img.convert('RGB')
rgb_img.save(buffered, format="JPEG")
rekognition_res = rekognition.detect_faces(Image={"Bytes": buffered.getvalue()}, Attributes=['ALL'])

Κλιμακώστε το TPS των API απάτριδων διαδίδοντας κλήσεις API σε πολλές Περιφέρειες

Μια άλλη περίπτωση χρήσης του Bytes Η επιλογή είναι ότι μπορείτε να κλιμακώσετε το TPS των API ανιθαγενών κατανέμοντας τις κλήσεις API σε πολλές Περιοχές. Με αυτόν τον τρόπο, δεν περιορίζεστε από το όριο περιφερειακών υπηρεσιών του API, επειδή μπορείτε να κερδίσετε επιπλέον TPS από άλλες Περιφέρειες.

Στο παρακάτω παράδειγμα, δημιουργείται μια συνάρτηση Lambda για να καλέσετε την Αναγνώριση του Amazon DetectLabels API με το Bytes επιλογή. Για να αυξήσετε το μέγιστο TPS, μπορείτε να κατανείμετε τις κλήσεις API σε πολλές Περιοχές με βάρη. Το μέγιστο TPS που μπορείτε να επιτύχετε υπολογίζεται με: min(region_1_max_tps/region_1_weight, region_2_max_tps/region_2_weight, … region_n_max_tps/region_n_weight). Το παρακάτω παράδειγμα χρησιμοποιεί us-east-1 και us-west-2 Περιφέρειες.

διάδοση κυκλοφορίας αναγνώρισης

Το απόσπασμα κώδικα για να καλέσετε το DetectLabels Το API έχει ως εξής:

region_1 = os.getenv("REKOGNITION_REGION_1")
region_2 = os.getenv("REKOGNITION_REGION_2")
region_1_traffic_percentage = int(os.getenv("REGION_1_TRAFFIC_PERCENTAGE"))

# randomly generate a number between 1, 100
random_num = random.randint(1, 100)
region = region_1 if random_num <= region_1_traffic_percentage else region_2
rekognition = boto3.client('rekognition', region_name=region)
response = rekognition.detect_labels(Image={"Bytes": image_bytes})
print(response)

Επειδή us-east-1 και us-west-2 και τα δύο έχουν μέγιστο 50 TPS για το Amazon Rekognition DetectFaces API, μπορείτε να κατανείμετε ομοιόμορφα τις κλήσεις API με βάρος 50/50 ορίζοντας τη μεταβλητή περιβάλλοντος REGION_1_TRAFFIC_PERCENTAGE έως 50. Με αυτόν τον τρόπο, μπορείτε να επιτύχετε min(50/50%, 50/50%) = 100 TPS θεωρητικά.

Για την επικύρωση της ιδέας, η συνάρτηση Lambda εκτίθεται ως REST API με Amazon API Gateway. Έπειτα jμέτρο χρησιμοποιείται για τη φόρτωση δοκιμής του API.

δοκιμή φόρτωσης Κλήσεις API αναγνώρισης

REGION_1_TRAFFIC_PERCENTAGE ορίζεται πρώτα στο 100, με αυτόν τον τρόπο DetectFaces Οι κλήσεις API αποστέλλονται στο us-east-1 μόνο. Θεωρητικά, το μέγιστο TPS που μπορεί να επιτευχθεί περιορίζεται από την ποσόστωση υπηρεσιών us-east-1, που είναι 50 TPS. Φόρτωση δοκιμής στο προσαρμοσμένο τελικό σημείο API, ξεκινώντας με 50 ταυτόχρονα νήματα, προσθέτοντας σταδιακά 5 νήματα μέχρι ProvisionedThroughputExceededException επιστράφηκε από το Amazon Παρατηρείται Αναγνώριση.

REGION_1_TRAFFIC_PERCENTAGE στη συνέχεια ορίζεται στο 50, με αυτόν τον τρόπο DetectLabels Οι κλήσεις API αποστέλλονται ομοιόμορφα σε us-east-1 και us-west-2. Θεωρητικά, το μέγιστο TPS που μπορεί να επιτευχθεί είναι το όριο εξυπηρέτησης που συνδυάζουν οι δύο Περιφέρειες, το οποίο είναι 100 TPS. Ξεκινήστε ξανά τη δοκιμή φορτίου από 100 νήματα για να βρείτε το μέγιστο TPS.

Ο παρακάτω πίνακας συνοψίζει τα αποτελέσματα της δοκιμής φορτίου.

Ποσοστό κλήσεων API DetectLabels σε us-east-1 Ποσοστό κλήσεων API DetectLabels σε us-west-2 Μέγιστο TPS στη Θεωρία Μέγιστες ταυτόχρονες εκτελέσεις χωρίς ProvisionedThroughputExceededException
100 0 50 70
50 50 100 145

Συμπέρασμα

Πολλοί πελάτες χρησιμοποιούν Amazon Rekognition Image απάτριδα API για διάφορες περιπτώσεις χρήσης, όπως επαλήθευση ταυτότητας, εποπτεία περιεχομένου, επεξεργασία μέσων και πολλά άλλα. Αυτή η ανάρτηση εξέτασε τις δύο επιλογές μετάδοσης εικόνων και τον τρόπο χρήσης της επιλογής ακατέργαστων bytes για τις ακόλουθες περιπτώσεις χρήσης:

  • Διαθεσιμότητα Amazon Rekognition Regional
  • Κατοικία δεδομένων πελατών
  • Κλιμάκωση του TPS των API απάτριδων Amazon Rekognition

Δείτε πώς χρησιμοποιείται το Amazon Rekognition διαφορετικές περιπτώσεις χρήσης όρασης υπολογιστή και ξεκινήστε το ταξίδι καινοτομίας σας.


Σχετικά με τους Συγγραφείς

Βελτιώστε την επεκτασιμότητα για τα API χωρίς ιθαγένεια του Amazon Rekognition χρησιμοποιώντας πολλαπλές περιοχές PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.Σάρον Λι είναι αρχιτέκτονας λύσεων στην AWS, με έδρα την περιοχή της Βοστώνης, MA. Συνεργάζεται με εταιρικούς πελάτες, βοηθώντας τους να λύσουν δύσκολα προβλήματα και να βασιστούν στο AWS. Εκτός δουλειάς, της αρέσει να περνά χρόνο με την οικογένειά της και να εξερευνά τοπικά εστιατόρια.

Βελτιώστε την επεκτασιμότητα για τα API χωρίς ιθαγένεια του Amazon Rekognition χρησιμοποιώντας πολλαπλές περιοχές PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.Vaibhav Shah είναι Ανώτερος Αρχιτέκτονας Λύσεων με AWS και θέλει να βοηθά τους πελάτες του με οτιδήποτε cloud και να επιτρέπει το ταξίδι υιοθέτησης του cloud. Εκτός δουλειάς, του αρέσει να ταξιδεύει, να εξερευνά νέα μέρη και εστιατόρια, να μαγειρεύει, να ακολουθεί αθλήματα όπως κρίκετ και ποδόσφαιρο, να βλέπει ταινίες και σειρές (θαυμαστής της Marvel) και περιπετειώδεις δραστηριότητες όπως πεζοπορία, αλεξίπτωτο και η λίστα συνεχίζεται.

Σφραγίδα ώρας:

Περισσότερα από Μηχανική εκμάθηση AWS