Υποστηρίζει το Terraform Eventbridge
CSS-FHXB3M DISPLAY-WEBKIT-BOX; Display-Webkit-Flex; Display-MS-Flexbox; Εμφάνιση: Flex-Webkit-Flex-Direction: Row-MS-Flex-Direction: Row; Flex-Direction: Row-Webkit-align-items: Center-Webkit-Box-Align: Center-MS-Flex-ευθυγράμμιση: κέντρο; ευθυγράμμιση-στοιχείων: κέντρο;. CSS-9A49Z0 Περιθώριο-δεξιά: 0.5REM; ύψος: 2.5REM; Πλάτος: 2.5REM-WebKit-Flex-Shrink: 0-MS-Flex-αρνητικό: 0; Flex-Shrink: 0; υπερχείλιση: κρυμμένο. Border-Radius: 9999px; Ραχούλ Λόκετ’s blog
Αυτή η λύση χρησιμοποιεί την έκδοση Terraform 0.12.16, μπορείτε να ορίσετε διαφορετικά ψευδώνυμα ως εξής. Στη συνέχεια, η Terraform θα χρησιμοποιούσε αυτούς τους παρόχους όταν θα αρχίσουμε να δημιουργούμε τις ενότητες μας:
Περίληψη του άρθρου:
– Το Terraform υποστηρίζει το Eventbridge και σας επιτρέπει να ορίσετε διαφορετικά ψευδώνυμα για τους παρόχους.
– Το EventBridge είναι μια υπηρεσία διαύλου συμβάντων χωρίς διακομιστή που συνδέει εφαρμογές με δεδομένα από διαφορετικές πηγές.
– Υποστηρίζει την ενσωμάτωση με εφαρμογές που βασίζονται σε SAAS και άλλες υπηρεσίες AWS όπως οι λειτουργίες Lambda και οι λειτουργίες Step.
– Το άρθρο εξηγεί πώς να επικαλεστεί μια λειτουργία AWS Lambda σε προγραμματισμένα διαστήματα χρησιμοποιώντας τον κανόνα AWS Eventbridge και το Terraform.
– Για να ξεκινήσετε, πρέπει να δημιουργήσετε μια δομή του έργου και να δημιουργήσετε έναν κανόνα για να εκτελέσετε τη λειτουργία Lambda στο πρόγραμμα.
– Η δομή του έργου περιλαμβάνει τη δημιουργία ενός νέου καταλόγου, πόρων και ενός φακέλου Lambda.
– Στο φάκελο Lambda, πρέπει να δημιουργήσετε ένα ευρετήριο.αρχείο js με τον κωδικό λειτουργίας lambda.
– Η λειτουργία Lambda χρησιμοποιεί τη βιβλιοθήκη Faker για να δημιουργήσει τυχαία δεδομένα.
– Αφού δημιουργήσετε τη λειτουργία Lambda, μπορείτε να ορίσετε τους παρόχους Terraform στο κύριο.αρχείο TF.
– Το κύριο.Το αρχείο TF καθορίζει τον πάροχο AWS με επιλογές διαμόρφωσης όπως αρχείο περιοχής, προφίλ και διαπιστευτήρια.
– Μπορείτε επίσης να ορίσετε μεταβλητές στις μεταβλητές.αρχείο tf για την παροχή τιμών για τη διαμόρφωση του παροχέα.
Ερωτήσεις και απαντήσεις:
1. Υποστηρίζει το Terraform Eventbridge?
Το Terraform υποστηρίζει το Eventbridge και παρέχει τη δυνατότητα να ορίσετε διαφορετικά ψευδώνυμα για τους παρόχους. Αυτό επιτρέπει στο Terraform να χρησιμοποιεί τους καθορισμένους παρόχους κατά τη δημιουργία μονάδων.
2. Τι είναι το eventbridge?
Το EventBridge είναι μια υπηρεσία διαύλου συμβάντων χωρίς διακομιστή που επιτρέπει στις εφαρμογές να συνδεθούν με δεδομένα από διάφορες πηγές. Παρέχει παρατηρήσουμε για γεγονότα και υποστηρίζει την ενσωμάτωση με εφαρμογές με βάση το SAAS και τρίτους.
3. Τι υπηρεσίες AWS μπορούν να στείλουν συμβάντα στο eventbridge?
Το EventBridge μπορεί να στείλει συμβάντα σε διάφορες υπηρεσίες AWS, συμπεριλαμβανομένων των λειτουργιών Lambda και των λειτουργιών βημάτων.
4. Πώς μπορούμε να καλέσουμε μια λειτουργία AWS Lambda σε προγραμματισμένα διαστήματα με τον κανόνα Eventbridge χρησιμοποιώντας το Terraform?
Για να καλέσετε μια λειτουργία AWS Lambda σε προγραμματισμένα διαστήματα, πρέπει πρώτα να ρυθμίσετε έναν κανόνα χρησιμοποιώντας το Eventbridge και στη συνέχεια να χρησιμοποιήσετε το Terraform για να ορίσετε τον κανόνα και το πρόγραμμά του.
5. Ποια είναι η δομή του έργου για τη δημιουργία μιας προγραμματισμένης λειτουργίας Lambda?
Η δομή του έργου περιλαμβάνει τη δημιουργία ενός νέου καταλόγου και ενός φακέλου πόρων. Μέσα στο φάκελο πόρων, δημιουργήστε ένα φάκελο Lambda για να κρατήσετε τον κωδικό λειτουργίας Lambda.
6. Πώς δημιουργείτε μια λειτουργία Lambda?
Για να δημιουργήσετε μια λειτουργία Lambda, δημιουργήστε ένα φάκελο μέσα στο φάκελο πόρων και προσθέστε ένα ευρετήριο.αρχείο js με τον κωδικό λειτουργίας lambda. Μπορείτε να χρησιμοποιήσετε τη βιβλιοθήκη Faker για να δημιουργήσετε τυχαία δεδομένα στη λειτουργία Lambda.
7. Ποιοι είναι οι πάροχοι terraform για?
Οι πάροχοι Terraform χρησιμοποιούνται για τη διαμόρφωση και την αλληλεπίδραση με τους παρόχους υποδομής. Σε αυτή την περίπτωση, ο πάροχος AWS χρησιμοποιείται για τον ορισμό της περιοχής AWS, του προφίλ και άλλων επιλογών διαμόρφωσης.
8. Τι κάνει το κύριο.Το αρχείο TF περιέχει?
Το κύριο.Το αρχείο TF περιέχει τη διαμόρφωση Terraform για τον παροχέα AWS. Καθορίζει τους απαιτούμενους παρόχους και τις επιλογές διαμόρφωσης, όπως η περιοχή, το προφίλ και οι ετικέτες.
9. Πώς χρησιμοποιούνται οι μεταβλητές στο terraform?
Οι μεταβλητές χρησιμοποιούνται για την παροχή δυναμικών τιμών στη διαμόρφωση Terraform. Μπορούν να οριστούν σε μεταβλητές.αρχείο TF και αναφέρεται σε άλλα αρχεία terraform.
10. Τι κάνει οι μεταβλητές.Το αρχείο TF περιέχει?
Οι μεταβλητές.Το αρχείο TF περιέχει τους ορισμούς των μεταβλητών που μπορούν να χρησιμοποιηθούν στη διαμόρφωση Terraform. Οι μεταβλητές μπορούν να έχουν περιγραφές και προεπιλεγμένες τιμές και αναφέρονται χρησιμοποιώντας το VAR.Σύνταξη μεταβλητής_name.
11. Μπορεί να ενσωματωθεί το Eventbridge με εφαρμογές που βασίζονται σε SAAS?
Ναι, το EventBridge μπορεί να ενσωματωθεί με εφαρμογές που βασίζονται σε SAAS και εφαρμογές τρίτων μερών.
12. Υποστηρίζει εκδηλώσεις EventBridge σε άλλες υπηρεσίες AWS?
Ναι, το EventBridge μπορεί να στείλει συμβάντα σε άλλες υπηρεσίες AWS όπως οι λειτουργίες Lambda και οι λειτουργίες βημάτων.
13. Ποιος είναι ο σκοπός της βιβλιοθήκης Faker στον κωδικό λειτουργίας Lambda?
Η βιβλιοθήκη Faker χρησιμοποιείται για τη δημιουργία τυχαίων δεδομένων στη λειτουργία Lambda. Μπορεί να χρησιμοποιηθεί για τη δημιουργία ψεύτικων προφίλ, αριθμών τηλεφώνου, τύπων οχημάτων και πολλά άλλα.
14. Πώς ορίζετε τον πάροχο AWS στο Terraform?
Ο πάροχος AWS ορίζεται στη διαμόρφωση Terraform χρησιμοποιώντας το μπλοκ παροχής. Καθορίζει τον πάροχο ως “AWS” και περιλαμβάνει επιλογές διαμόρφωσης όπως περιοχή και προφίλ.
15. Τι μπορείτε να καθορίσετε στην ενότητα default_tags της διαμόρφωσης του παρόχου AWS?
Στην ενότητα default_tags, μπορείτε να καθορίσετε προεπιλεγμένες ετικέτες που θα εφαρμοστούν σε πόρους AWS που δημιουργήθηκαν από το Terraform. Αυτό μπορεί να είναι χρήσιμο για την οργάνωση και τη διαχείριση των πόρων.
CSS-FHXB3M DISPLAY-WEBKIT-BOX; Display-Webkit-Flex; Display-MS-Flexbox; Εμφάνιση: Flex-Webkit-Flex-Direction: Row-MS-Flex-Direction: Row; Flex-Direction: Row-Webkit-align-items: Center-Webkit-Box-Align: Center-MS-Flex-ευθυγράμμιση: κέντρο; ευθυγράμμιση-στοιχείων: κέντρο;. CSS-9A49Z0 Περιθώριο-δεξιά: 0.5REM; ύψος: 2.5REM; Πλάτος: 2.5REM-WebKit-Flex-Shrink: 0-MS-Flex-αρνητικό: 0; Flex-Shrink: 0; υπερχείλιση: κρυμμένο. Border-Radius: 9999px; Ραχούλ Λόκετ’s blog
Αυτή η λύση χρησιμοποιεί την έκδοση Terraform 0.12.16, μπορείτε να ορίσετε διαφορετικά ψευδώνυμα ως εξής. Στη συνέχεια, η Terraform θα χρησιμοποιούσε αυτούς τους παρόχους όταν θα αρχίσουμε να δημιουργούμε τις ενότητες μας:
Υποστηρίζει το Terraform Eventbridge
Э э э э э э э э э э э э э э э э э э э э э э э э э э э э э э э э э э
Ы з з з з з з з и и и и п п п п п п з п з з з з з з з з з п. С п п п п п п п п п п п п п п п п п п п п п п п п п п п п п п п п п п п п п п п п п п п п п п п п п п п. ПOчем э э э э э э э э э э э п п п п п п п?
Э э э э э а а а а и е е з з л л л л л л л э э э э э э э э э э э э Κοιτάζοντας το ριμπάγ. С с п п п п п э э э э э э э э э э э э э э э э э э э э э э э э э э э э. Д э э э э д д д и и д д д ρίας н и д д д д д д д д д д д д д д д д д д д д д д д д д д д д д д д д д д д.
И и з а а а а а а а а ы ы з .. Е е е е д п п ж ж ж ж ж ж ж ж ж ж ж ж ж ж ж ж ж ж п п п п п п п п п п п п п п п п п. Орrρά. Пороннαι.
ПON п п е е а а τροφή пρέφ а а а а а τροφήλου. е е е и τροφή ее же жÉ в в ж и и и и ч ч.
Πώς να καλέσετε μια λειτουργία AWS Lambda σε προγραμματισμένα διαστήματα με τον κανόνα AWS Eventbridge χρησιμοποιώντας το Terraform
Amazon Eventbridge είναι μια υπηρεσία διαύλου συμβάντων χωρίς διακομιστή που μπορείτε να χρησιμοποιήσετε για να συνδέσετε τις εφαρμογές σας με δεδομένα από διάφορες πηγές. Τα γεγονότα είναι κεντρικά για το Eventbridge και τα γεγονότα είναι παρατηρήσιμα. Η Bridge Event υποστηρίζει επίσης την ενσωμάτωση με πολλές εφαρμογές που βασίζονται σε SAAS και εφαρμογές τρίτων μερών. Υποστηρίζει επίσης την αποστολή συμβάντων σε άλλες υπηρεσίες AWS όπως οι λειτουργίες Lambda, λειτουργίες βημάτων.
Σε αυτό το ιστολόγιο, θα δημιουργήσουμε ένα κανόνας Για να εκτελέσετε τη λειτουργία Lambda στο χρονοδιάγραμμα κάθε 2 λεπτά χρησιμοποιώντας Τερματοφύλακα.
Δομή έργου
- Δημιουργήστε έναν νέο κατάλογο και μεταβείτε στον κατάλογο
mkdir lambda-schedule-event-bridge && CD γέφυρα Lambda-Schedule
Πόροι Mkdir
Δημιουργήστε ένα λάμδα
Δημιουργήστε ένα φάκελο προφίλ-γεννήτρια-lambda στο πόροι φάκελος και προσθέστε το δείκτης.JS αρχείο με το παρακάτω περιεχόμενο. Επίσης, αρχικοποιήστε το έργο κόμβου και εγκαταστήστε τις εξαρτήσεις.
MKDIR Profile-Penerator-Lambda && CD Δείκτης αφής προφίλ-γεννήτη-Lambda.JS NPM init -y NPM Εγκατάσταση Faker
κονσερβός Faker = απαιτώ("Faker/locale/en_ind") εξαγωγές.χειριστής = ασύμ (συμβάν, πλαίσιο) => < αφήνω FirstName = Faker.όνομα.όνομα(); αφήνω LastName = Faker.όνομα.επίθετο(); αφήνω PhonEnumber = Faker.τηλέφωνο.τηλεφωνικό νούμερο(); αφήνω ΟΧΗΜΑΤΑ = FAKER.όχημα.όχημα(); αφήνω απάντηση = < όνομα: όνομα, επίθετο: επίθετο, τηλεφωνικό νούμερο: τηλεφωνικό νούμερο, Τύπος οχήματος: οχήματος,>; ΕΠΙΣΤΡΟΦΗ < κώδικας κατάστασης: 200, κεφαλίδες: < "Τύπος περιεχομένου": "Application/JSON", >, σώμα: Json.stringify (< Προφίλ: απάντηση,>),>; >;
Προμηθευτές terraform
Τώρα, θα γράψουμε τα σενάρια Terraform στη γλώσσα HCL όπου θα χρησιμοποιήσουμε τον παροχέα AWS. Δημιουργήστε ένα κύριο.αρχείο TF στον ριζικό κατάλογο του έργου και προσθέστε το παρακάτω περιεχόμενο.
αγγίζω το Main.TF
τερματοφύλακα < required_providers < aws = < πηγή = "Hashicorp/aws" Έκδοση = 3.50.0 " >>> πάροχος "AWS" < # Επιλογές διαμόρφωσης Περιοχή = Var.προφίλ περιοχής = var.aws_profile shared_credentials_file = var.shared_credentials_file default_tags < tags = var.tags >>
- Κάθε ενότητα terraform πρέπει να δηλώσει ποιοι πάροχοι απαιτεί έτσι ώστε η Terraform να μπορεί να εγκαταστήσει και να τα χρησιμοποιήσει. Οι απαιτήσεις του παροχέα δηλώνονται σε μπλοκ _requiredproviders.
- Οι πάροχοι AWS απαιτούν διαμορφώσεις όπως οι περιοχές σύννεφων, τα προφίλ, το credential_files που είναι διαθέσιμες πριν μπορούν να χρησιμοποιηθούν.
- Όλες οι τιμές θα παρέχονται από τις παραμέτρους μεταβλητών.
Ας δημιουργήσουμε μεταβλητές.TF στον ριζικό κατάλογο του έργου και προσθέστε το παρακάτω περιεχόμενο.
Μεταβλητές αφής.TF
μεταβλητός "περιοχή" < description = "Περιοχή ανάπτυξης" προεπιλογή = "AP-South-1" > μεταβλητή "aws_profile" < description = "Δεδομένο όνομα στο αρχείο διαπιστευτηρίων" τύπος = Προεπιλογή συμβολοσειρά = "Rahul-Admin" > μεταβλητή "shared_credentials_file" < description = "Αρχείο προφίλ με διαπιστευτήρια στον λογαριασμό AWS" τύπος = Προεπιλογή συμβολοσειρά = "~/.aws/διαπιστευτήρια " > μεταβλητή "Ετικέτες" < description = "Ένας χάρτης ετικετών για προσθήκη σε όλους τους πόρους.« τύπος = MAP (String) Προεπιλογή = < application = "Learning-Tutor" env = "Δοκιμή" >>
Κάθε μεταβλητή εισόδου που γίνεται αποδεκτή από μια ενότητα πρέπει να δηλωθεί χρησιμοποιώντας μεταβλητό μπλοκ. Η ετικέτα μετά τη μεταβλητή λέξη -κλειδί είναι ένα όνομα για τη μεταβλητή, η οποία πρέπει να είναι μοναδική μεταξύ όλων των μεταβλητών στην ίδια ενότητα.
- Μια προεπιλεγμένη τιμή καθιστά τη μεταβλητή προαιρετική.
- Ένας τύπος υποδεικνύει ποιοι τύποι τιμών γίνονται αποδεκτοί για τη μεταβλητή.
- Μια περιγραφή καθορίζει την τεκμηρίωση της μεταβλητής εισόδου.
Μονάδες terraform
Τώρα, θα χρησιμοποιήσουμε τη μονάδα Terraform-Aws-Modules/Lambda/AWS για τη δημιουργία υποδομής Lambda και Lambda Layer.
Δημιουργήστε τα αρχεία Lambda.TF στον ριζικό κατάλογο του έργου και προσθέστε το παρακάτω περιεχόμενο.
αγγίξτε τη λάμδα.TF
μονάδα μέτρησης "Profile_Generator_Lambda" < πηγή = "Terraform-aws-modules/lambda/aws" Έκδοση = 2.7.0 " # Εισαγάγετε τις 28 απαιτούμενες μεταβλητές εδώ λειτουργία_name = "Προφίλ-γεννήτρια-Lambda" περιγραφή = "Δημιουργεί νέα προφίλ" χειριστής = "δείκτης.χειριστής " Χρόνος εκτέλεσης = "Nodejs14.Χ" source_path = «$ /πόροι /προφίλ-γεννήτρια-lambda " ετικέτες = < Name = "Προφίλ-γεννήτρια-Lambda" >>
Κανόνας εκδήλωσης
Δημιουργήστε τα αρχεία event_bridge.TF στον ριζικό κατάλογο του έργου και προσθέστε το παρακάτω περιεχόμενο.
Αγγίξτε το event_bridge.TF
πόρος "aws_cloudwatch_event_rule" "Προφίλ_GENERATAR_LAMBDA_EVENT_RULE" < name = "Προφίλ-γεννήτρια-Lambda-event-rule" περιγραφή = "Επαναλάβετε την προγραμματισμένη κάθε 2 λεπτά" schedule_expression = "Βαθμολογία (2 λεπτά)" > πόρος "aws_cloudwatch_event_target" "Profile_Generator_Lambda_target" < arn = module.profile_generator_lambda.lambda_function_arn rule = aws_cloudwatch_event_rule.profile_generator_lambda_event_rule.name >πόρος "aws_lambda_permission" "enlay_cloudwatch_to_call_rw_fallout_retry_step_delexion_lambda" < statement_id = "Επιτρέπεται ExecutionFromCloudWatch" δράση = "Lambda: InvokeFunction" λειτουργία_name = module.προφίλ_generator_lambda.lambda_function_name κύριος = "Εκδηλώσεις.Αμαζονόνια.com " source_arn = aws_cloudwatch_event_rule.προφίλ_generator_lambda_event_rule.arn>
Όπως φαίνεται παραπάνω, το schedule_expression Το χαρακτηριστικό έχει ποσοστό 2 λεπτών. Σημαίνει, ενεργοποιεί τη λειτουργία Lambda που βρίσκεται στο στόχο χρησιμοποιώντας τον πόρο aws_cloudwatch_event_target.προφίλ_generator_lambda_target. Δίνουμε επίσης άδεια Lambda, έτσι ώστε η εκδήλωση να είναι σε θέση να καλέσει τη λειτουργία.
Εκτελέστε σενάρια terraform
Ας τρέξουμε τις 3 βασικές εντολές του Terraform για να δημιουργήσουμε τους πόρους στο AWS.
- Αρχικοποιήστε το Terraform που θα κατεβάσει όλους τους παρόχους και τις ενότητες που χρησιμοποιούνται στη διαμόρφωση.
terraform init
- Ελέγξτε εάν ένα σχέδιο ταιριάζει με την προσδοκία και αποθηκεύει επίσης το σχέδιο στο σχέδιο αρχείων εξόδου
Σχέδιο Terraform -out "Plan-out"
- Μόλις επαληθευτεί το σχέδιο, εφαρμόστε τις αλλαγές για να λάβετε τα επιθυμητά στοιχεία υποδομής.
Εφαρμόστε το Terraform "Plan-out"
Επαληθεύστε την υποδομή στο AWS
- Lambda με γέφυρα εκδηλώσεων
Εάν ελέγξετε τα αρχεία καταγραφής ρολογιών Cloud, μπορείτε να δείτε ότι η λειτουργία Lambda επικαλείται κάθε 2 λεπτά.
Διαγράψτε τους πόρους
Μπορούμε να διαγράψουμε τους πόρους που δημιουργήθηκε από την Terraform, εκδίδοντας την παρακάτω εντολή, ώστε να μην χρεώνουμε τους πόρους.
Το Terraform καταστρέφει
συμπέρασμα
Σε αυτήν την ανάρτηση ιστολογίου, είδαμε πώς να δημιουργήσουμε μια λειτουργία Lambda και runger event bridge χρησιμοποιώντας το Terraform. Είδαμε επίσης, πώς να προγραμματίσετε τη λειτουργία Lambda κάθε 2 λεπτά δημιουργώντας έναν κανόνα λεωφορείου εκδηλώσεων.
Βρήκατε αυτό το άρθρο πολύτιμο?
Υποστήριξη Ραχούλ Λόκετ Με το να γίνει χορηγός. Οποιοδήποτε ποσό εκτιμάται!
Σωλήνες eventbridge χρησιμοποιώντας terraform
Σε αυτήν την ανάρτηση, θα σας δείξω πώς να εφαρμόσετε μια απλή εφαρμογή που βασίζεται σε συμβάντα χρησιμοποιώντας σωλήνες Eventbridge και Terraform. Τη στιγμή της σύνταξης αυτής της ανάρτησης, οι πόροι Eventbridge δεν είναι διαθέσιμοι με τους πόρους Τερματοφύλακα Πάροχος AWS, Επομένως χρησιμοποιώ Terraform AWS Control Control Provider (AWSCC). Μπορείτε να το ακολουθήσετε Σύνδεσμος Για να μάθετε περισσότερα σχετικά με τους σωλήνες eventbridge.
Υπόθεση χρήσης
Αφήνω’λένε ότι έχουμε μια εφαρμογή που χειρίζεται ερωτήματα από διαφορετικούς τύπους πελατών όπως Χρυσό, ασήμι και πλατίνα. Επί του παρόντος, αυτά τα ερωτήματα δημοσιεύονται σε μια κεντρική ουρά SQS και επεξεργάζονται από μια εφαρμογή καταναλωτή.
Τώρα έχουμε μια νέα απαίτηση ότι θέλουμε να φιλτράρουμε όλα τα ερωτήματα των πελατών της πλατίνας και να τα επανεξετάσουμε για να συμπεριλάβουμε τα στοιχεία του πράκτορα πελατών πριν από την αποστολή τους στην υπηρεσία καταναλωτών. (Ανατρέξτε στο παραπάνω διάγραμμα)
Εξαρτήματα των σωλήνων eventbridge
Το ακόλουθο διάγραμμα δείχνει τα κύρια συστατικά των σωλήνων Eventbridge που πρόκειται να εφαρμόσουμε σε αυτό το παράδειγμα.
Πηγή
Αυτό είναι το σημείο εκκίνησης των σωλήνων eventbridge. Ο σωλήνας μπορεί να λάβει συμβάντα από διάφορες πηγές όπως SQS, DynamoDB κ.λπ. Σε αυτό το παράδειγμα, ο σωλήνας λαμβάνει συμβάντα από μια ουρά SQS (Request Customer).
Πόρος "aws_sqs_queue" "customer_request_sqs" name = "πελάτης-request"
>
Φιλτράρισμα
Δεδομένου ότι πρέπει να φιλτράρουμε τις εκδηλώσεις πελατών Platinum από τα συμβάντα προέλευσης, μπορούμε να συμπεριλάβουμε τα προαιρετικά “Φιλτράρισμα” Βγείτε στον σωλήνα. Μπορείτε να χρησιμοποιήσετε τα πρότυπα συμβάντων Amazon Eventbridge για να γράψετε κριτήρια φιλτραρίσματος. Όπως μπορείτε να δείτε στον παρακάτω κωδικό, χρησιμοποιώ το customer_type πεδίο στο σώμα μηνύματος SQS για να φιλτράρει τις εκδηλώσεις πελατών πλατίνας.
φίλτρα = [< pattern = "< \"body\": < \"customer_type\": [\"Platinum\"] >> ">]
>
Πλουτισμός
Μπορούμε να χρησιμοποιήσουμε το βήμα εμπλουτισμού των σωλήνων eventbridge για να βελτιώσουμε τα δεδομένα από την πηγή πριν την αποστείλουμε στον στόχο. Σε αυτό το παράδειγμα, το βήμα εμπλουτισμού κάνει τις ακόλουθες εργασίες.
- Μετατρέψτε τα συμβάντα πριν τα αποστείλετε σε στόχο εμπλουτισμού.
- Συμπεριλάβετε πρόσθετα δεδομένα στο ωφέλιμο φορτίο συμβάντος χρησιμοποιώντας μια λειτουργία Lambda εμπλουτισμού.
Μετατρέψτε ένα συμβάν εισόδου
Ακολουθεί ένα δείγμα συμβάντος του αιτήματος του πελάτη. Μπορείτε να το δείτε αυτό ΔημιουργήθηκεDate Το πεδίο έχει ελαφρώς διαφορετική μορφή και θα θέλαμε να το μεταμορφώσουμε ως ως Δημιουργήθηκε_Date Πριν την αποστείλετε στη λειτουργία Lambda του εμπλουτισμού.
"ID": "003",
"customer_type": "platinum",
"Ερώτηση": "Χρειάζεστε τεχνική υποστήριξη",
"Σοβαρότητα": "Υψηλή",
"CreatedDate": "2023-02-25"
>
Μπορούμε να χρησιμοποιήσουμε σωλήνες eventbridge Μετασχηματιστής εισόδου εμπλουτισμού Για να μεταμορφώσετε το συμβάν όπως παρακάτω.
"id": "",
"customer_type": "",
"Ερώτηση": "",
"αυστηρότητα":"",
"Created_date": ""
>
2. Συμπεριλάβετε πρόσθετα δεδομένα στο ωφέλιμο φορτίο συμβάντος
Σε αυτό το παράδειγμα, θέλουμε να συμπεριλάβουμε τα στοιχεία του πράκτορα υποστήριξης πελατών στην εκδήλωση πριν τα αποστείλουμε στην υπηρεσία καταναλωτών. Ως εκ τούτου, πρέπει να επανεπεξεργαστούμε το συμβάν και να δημιουργήσουμε ένα νέο συμβάν. Για να γίνει αυτό, μπορούμε να χρησιμοποιήσουμε μια λειτουργία Lambda ως στόχος εμπλουτισμού Eventbridge Pipes.
Μονάδα "rich_customer_request_lambda" source = "terraform-aws-modules/lambda/aws"
function_name = "rrich-customer-request"
source_path = "$/lambda/rich-customer-request"
Χειρισμός = "Ευρετήριο.χειριστής "
runtime = "nodejs18.Χ"
local_existing_package = "$/lambda/inrich-customer-request/index.φερμουάρ"
create_role = false
lambda_role = aws_iam_role.inrich_customer_request_lambda_iam_role.arn
>
Εμπλουτισμός Lambda Handler
Όπως μπορείτε να δείτε στον παρακάτω κωδικό, δημιουργώ ένα νέο συμβάν για να συμπεριλάβω τα στοιχεία του πράκτορα του πελάτη και να επιστρέψω στον σωλήνα. Τότε ο σωλήνας θα στείλει εμπλουτισμένα συμβάντα στη λειτουργία Lambda Target Lambda.
Export Const Handler = async (συμβάν) => κονσόλα.log ("Φιλτραπιασμένες εκδηλώσεις πελατών Platinum: %O", συμβάν);
const richedevents = []
αν (συμβάν && συμβάν.Μήκος> 0) Εκδήλωση.foreach (eventObj => let updateVent = . εκδήλωση,
. Agent_id: "0001",
agent_name: "Mark John",
Agent_email: "[email protected] "
>
>
εμπλουτισμός.push (updateVent);
>);
>
επιστροφή richedevents?
>;
Στόχος
Αυτό είναι το τελευταίο βήμα των σωλήνων Eventbridge που επεξεργάζονται τα δεδομένα που προέρχονται από το βήμα εμπλουτισμού. Σε αυτό το παράδειγμα, χρησιμοποιούμε μια λειτουργία Lambda ως το Στόχος.
Μονάδα "process_customer_request_lambda" source = "terraform-aws-modules/lambda/aws"
function_name = "process-customer-request"
source_path = "$/lambda/process-customer-request"
Χειρισμός = "Ευρετήριο.χειριστής "
runtime = "nodejs18.Χ"
local_existing_package = "$/lambda/process-customer-request/index.φερμουάρ"
create_role = false
lambda_role = aws_iam_role.process_customer_request_lambda_iam_role.arn
>
Στόχος Lambda Handler
Export Const Handler = async (συμβάν) => κονσόλα.LOG ("Εμπλουτισμένα συμβάντα πελατών Platinum: %o", εκδήλωση);
αν (συμβάν && συμβάν.Μήκος> 0) Εκδήλωση.foreach (eventObject => κονσόλα.log (eventObject)
>);
>
εκδήλωση επιστροφής ·
>;
Συνδυασμένα όλα τα βήματα
Το παρακάτω είναι το awscc_pipes_pipe πόρος που δημιουργεί τους σωλήνες eventbridge με όλα τα βήματα που συζητήσαμε πριν. Μπορείτε να κατεβάσετε τον πλήρη πηγαίο κωδικό από αυτό Σύνδεσμος.
ΠΟΛΙΤΙΣΜΟΣ "AWSCC_PIPES_PIPE" "PIPE" Όνομα = "Pipe-Customer-Request"
ROOR_ARN = AWS_IAM_ROLE.pipe_iam_role.arn
πηγή = aws_sqs_queue.customer_request_sqs.arn
source_parameters = sqs = sqs_queue_parameters = batch_size = 10
>
>
filter_criteria = φίλτρα = [< pattern = "< \"body\": < \"customer_type\": [\"Platinum\"] >> ">]
>
>
εμπλουτισμός = ενότητα.rich_customer_request_lambda.lambda_function_arn
richment_parameters = input_template = "\", \ "customer_type \": \ "\", \ "query \": \ "\"
>
στόχος = ενότητα.process_customer_request_lambda.lambda_function_arn
>
Δοκιμασία
Βρείτε το δείγμα αρχείου αίτημα πελάτη.json στον πηγαίο κώδικα και εκτελέστε την παρακάτω εντολή. Θα δημοσιεύσει πέντε αιτήματα πελατών στο SQS (2 Platinum, 1 χρυσό και 2 ασημένια αιτήματα).
AWS SQS Αποστολή-Μασιγκ-παρτίδα \
--queue-url https: // sqs.US-East-1.Αμαζονόνια.com // customer-request \
--Περιοχή US-East-1 \
--Αρχείο καταχωρήσεων: // Πελάτης-Request.json
Εμπλουτισμός Lambda Λειτουργία αρχεία καταγραφής
Το ακόλουθο συμβάν καταγραφής εμφανίζει το μετασχηματισμένο συμβάν που αποστέλλονται σωλήνες Eventbridge στη λειτουργία Lambda Enrichment Lambda.
Στοχεύστε τα αρχεία καταγραφής Lambda
Το ακόλουθο συμβάν καταγραφής εμφανίζει το εμπλουτισμένο συμβάν που προήλθε από το Πλουτισμός βήμα.
Μερικά σημαντικά σημεία
- Εάν χρησιμοποιείτε το πλήκτρο κρυπτογράφησης AWS KMS (CMK) για να κρυπτογραφήσετε την πηγή, πρέπει να δώσετε ρητά “KMS: αποκρυπτογράφηση” άδεια για σωλήνα’ρόλος εκτέλεσης.
- Εάν συναντήσατε ένα σφάλμα όπως παρακάτω. Διαγράψτε το σωλήνα και επαναλάβετε το “Εφαρμόστε το Terraform”. Αυτό είναι ένα γνωστό ζήτημα με το awscc_pipe πόρος.
nosuchpath στην πηγή, διαδρομή που παρέχεται: // sourceParameters/filtercriteria/filters/0/pattern
βιβλιογραφικές αναφορές
Aws eventbus με terraform
Ένας απλός οδηγός για το πώς να αναπτύξετε ένα cloudwatch eventbus με terraform. Εάν ελέγξετε την επίσημη τεκμηρίωση terraform, θα παρατηρήσετε ότι αυτό’είναι αρκετά ελαφρύς και εσύ’Θα χρειαστεί πιθανώς κάποια καθοδήγηση σε αυτό το σημείο.
Κρατάω επίσης το ιστολόγιό μου ενημερωμένο με νέα άρθρα με την εταιρεία συμβούλων μου, μπορείτε να ελέγξετε στο https: // cdcloudlogix.com/blog για περισσότερες πληροφορίες 🙂
Αυτή η λύση θα απαιτούσε την ανάγκη δημιουργίας ενός ρόλου IAM για να επιτρέψει την εκδήλωση CloudWatch σε Βόμβα στον απομακρυσμένο λογαριασμό σας AWS.
1. Προμηθευτές terraform
Αυτή η λύση χρησιμοποιεί την έκδοση Terraform 0.12.16, μπορείτε να ορίσετε διαφορετικά ψευδώνυμα ως εξής. Στη συνέχεια, η Terraform θα χρησιμοποιούσε αυτούς τους παρόχους όταν θα αρχίσουμε να δημιουργούμε τις ενότητες μας:
Μπορείτε να βρείτε όλη αυτή τη διαμόρφωση στο ακόλουθο αποθετήριο GitHub, οποιεσδήποτε ερωτήσεις, παρακαλώ επιτρέψτε μου να ξέρω ��.