Direkt zum Inhalt

So erstellen Sie Ihren eigenen REST-API-basierten AWS-Connector

So erstellen Sie Ihren eigenen REST-API-basierten AWS-Connector

Amazon Web Services (AWS) ist eine der bekanntesten Cloud-Computing-Plattformen der Welt und bietet Unternehmen jeder Größe eine breite Palette an Tools und Diensten. Viele Unternehmen, vom kleinen Startup bis zum Großkonzern, verlassen sich bei der Verwaltung ihrer Infrastruktur, Anwendungen und Daten auf AWS.

Die Integration von AWS in andere Systeme kann jedoch ein mühsamer Prozess sein, der Fachwissen und technologische Kompetenz erfordert. Hier Mendix kommt in.

Entwickler können problemlos vorhandene Konnektoren nutzen oder neue erstellen, die AWS-Dienste mit anderen Anwendungen und Systemen integrieren, indem sie Mendix's effiziente Low-Code-Entwicklungsplattform.

„AWS erkennt die transformative Kraft der Mendix Plattform und wir erkennen die transformative Kraft der AWS-Dienste an“, sagte Tim Srock, ehemaliger CEO von MendixAufgrund der erfolgreichen siebenjährigen strategischen Beziehung zwischen Mendix und AWS haben sich die beiden Unternehmen auf eine Erweiterte Go-to-Market-Beziehung.

Um mehr über unsere Partnerschaft mit AWS zu erfahren, lesen Sie unsere Pressemitteilung hier

Die Verwendung von AWS ermöglicht Mendix Benutzer können die Leistungsfähigkeit der automatisierten Verfahren und Dienste von AWS nutzen, ohne diese selbst entwickeln zu müssen, was Zeit und Aufwand spart. Mit einem AWS-Konnektor für Mendixkönnen Sie die große Anzahl an Diensten, die in AWS verfügbar sind, ganz einfach und mit wenig Code und Aufwand nutzen. Durch die Erstellung eines AWS-Connectors in Mendix kann Ihnen helfen, Ihre Abläufe zu optimieren und die Gesamtproduktivität Ihres Unternehmens zu steigern, egal ob Sie eine benutzerdefinierte App entwickeln, die auf AWS-Ressourcen zugreifen muss, oder versuchen, Geschäftsprozesse mit AWS-Tools wie Lambda und S3 zu automatisieren. Damit Sie sofort mit der Integration von AWS-Diensten in Ihre Anwendungen beginnen können, werde ich Sie durch die Schritte zum Erstellen eines REST-API-basierten AWS-Connectors führen in Mendix.

Erste Schritte

Wenn jemand feststellt, dass der AWS-Dienst, den er verwenden möchte, keinen vorhandenen Connector im Mendix Marketplace, ist ihre erste Reaktion normalerweise so etwas wie: „Okay, dann bedeutet das, dass diese Lösung derzeit nicht mit Mendix“ oder „Ich muss mir eine Lösung dafür überlegen.“

Ich bin Teil des AWS-Teams in Mendix jetzt, aber bevor ich angefangen habe, war das auch meine erste Reaktion. Sogar nachdem ich angefangen hatte, als ich bereits wusste, dass das Erstellen von AWS-Konnektoren das Ziel meines Teams war, fühlte ich mich immer noch überfordert. Ich erinnere mich, dass ich dachte: „Es gibt zu viele AWS-Dienste und zu viele Aktionen für jeden von ihnen. Wie werden wir mit der Nachfrage Schritt halten?“ Wohlgemerkt, das war mein Gedanke, als ich gerade erst im Team angefangen hatte und als ich noch dachte, dass das Erstellen eines Konnektors so etwas wie die Rettung der Welt wäre – das heißt, dass es extrem schwer war! Aber so ist es überhaupt nicht – das Erstellen eines AWS-Konnektors ist etwas, das alle unsere Mendix Entwickler können ein wenig Hilfe von unseren Anleitungen gebrauchen!

Wenn Sie sich entschieden haben, so schnell wie möglich einen neuen AWS-Connector zu erstellen, haben Sie möglicherweise eine Suche durchgeführt, um herauszufinden, wie Sie Ihre Reise beginnen können. Dort haben Sie möglicherweise gesehen, dass es zwei Integrationsmethoden gibt, um einen AWS-Connector zu erstellen in Mendix, also eine REST-API (Representational State Transfer) oder ein SDK (Software Development Kit). Wenn Sie keine Programmierkenntnisse haben, kann Ihnen allein das Wort SDK einen Schauer über den Rücken laufen lassen. In Wahrheit ist der Prozess nicht so kompliziert, wie sich die Leute (mich eingeschlossen) ihn vorstellen, und er ist durchaus machbar. Aber da wir Mendix Entwickler, warum nutzen wir nicht etwas, mit dem wir bereits vertraut sind, und erstellen einen REST-API-basierten AWS-Connector? Sind Sie bereit dafür?

Hier ist eine Schritt-für-Schritt-Anleitung von mir.

Erstellen eines REST-API-basierten AWS-Connectors

Als Erstes müssen Sie wissen, dass nicht alle AWS-Dienste und -Aktionen über APIs verfügen. Das bedeutet, dass Sie, bevor Sie mit einem REST-API-basierten AWS-Connector beginnen, prüfen müssen, ob für die benötigten Dienste und Aktionen APIs verfügbar sind, und den erforderlichen HTTP-Header (deren x-amz-ziel Wert). Wenn sie keine API für den von Ihnen benötigten Dienst und die Aktionen haben, besteht die einzige Möglichkeit, fortzufahren, leider darin, mit dem Erstellen eines Connectors mithilfe des SDK zu beginnen.

Für einige Dienste und Aktionen finden Sie die APIs im Entwicklerhandbuch des jeweiligen AWS-Dienstes (z. B. Verwenden der Signaturversion 4 mit Amazon Translate – Amazon Translate). Für andere ist die Suche jedoch schwieriger. Eine Website, die ich nützlich fand, ist AnyAPI (any-api.com). Du kannst zu dem ... gehen Such-APIs Suchen Sie im Bereich nach dem Namen des AWS-Dienstes, an dem Sie arbeiten möchten, klicken Sie darauf und finden Sie eine Liste der Aktionen des Dienstes, die über APIs verfügen, zusammen mit ihren x-amz-ziel -Wert, falls dieser existiert.

AnyAPI-Suchergebnis

Was wir umsetzen werden, kommt aus unserer Erstellen eines AWS-Connectors Artikel und die zugehörigen Links. Ausführlichere Erläuterungen zu einigen Themen finden Sie auch im Artikel.

In diesem Szenario gehen wir davon aus, dass der Amazon Translate Connector nicht im Marketplace vorhanden ist, wir ihn aber für ein Kundenprojekt benötigen. Wir haben uns entschieden, einen AWS-Connector zu erstellen, um einige seiner Aktionen (die über APIs verfügen) zu nutzen, und implementieren den TranslateText Maßnahmen.

Das Projekt initiieren

Um mit der Arbeit an einem Connector zu beginnen, müssen wir zunächst die richtige Umgebung vorbereiten.

In Mendix Studio Pro erstellen wir ein neues Modul namens AmazonTranslateConnector.

Installieren und konfigurieren Sie anschließend die AWS-Authentifizierungsconnector (Version 3.0.0 oder höher) da es für die Authentifizierung bei Amazon Web Services erforderlich ist.

Im AmazonTranslateConnector Modul, legen Sie eine Ordnerstruktur wie unten gezeigt fest.

Ordnerstruktur für das AmazonTranslateConnector-Modul
Erforderliche Entitäten im Domänenmodell hinzufügen und mit dem Erstellen beginnen

Nachdem die Arbeitsumgebung bereit ist, ist es Zeit, mehr über die Aktion zu erfahren, die wir implementieren möchten, insbesondere darüber, was die REST-API als Anforderung benötigt und was wir als Antwort erhalten würden.

Um mehr über die Aktion zu erfahren, die wir umsetzen möchten, können wir auf die AWS-Dokumentation (amazon.com).

AWS-Dokumentationssuche

Dort finden wir die Dokumentation des AWS-Dienstes, an dem wir gerade arbeiten, in unserem Fall wäre das der Amazon Translate-Dokumentation.

Amazon Translate-Dokumentation von AWS

Hier sind zwei Anleitungen, die bei der Entwicklung eines AWS-Connectors hilfreich sind. Da wir einen REST-API-basierten Connector erstellen, wählen wir Amazon Translate API-Referenz – Amazon Translate API-Referenz, und dann öffnen TranslateText – Amazon Translate API-Referenz.

TranslateText Amazon Translate API-Referenz

Auf dieser Seite finden wir viele wertvolle Informationen zu der Aktion, die wir implementieren möchten, beispielsweise die Anforderungs- und Antwortsyntax, die Details ihrer Parameter sowie häufige Fehler, die auftreten können.

Nachdem wir mehr über die Aktion gelesen haben, die wir implementieren werden, verwenden wir zunächst die Anfrage- und Antwortsyntax des TranslateText Aktion zum Modellieren der entsprechenden Entitäten.

Seit dem Upgrade des AWS Authentication-Connectors auf Version 3.0.0 ist es eine bewährte Methode, dass die Anforderungsentitäten aller anderen AWS-Connectors von der Entität AWSAuthentication.AbstractRequest erben. Außerdem sollten die Timeout-Einstellungen in einem zugehörigen BasicClientConfig-Objekt angegeben werden. Dies ist insbesondere dann relevant, wenn Sie Ihren Connector auf dem Marktplatz veröffentlichen möchten.

In diesem Beispiel wollen wir allerdings den einfachsten Weg gehen. Wir werden daher weder die Vererbung verwenden, noch ein BasicClientConfig-Objekt erstellen, um die Timeout-Einstellungen festzulegen.
Lassen Sie uns zunächst die Anforderungsentität erstellen und uns den Anforderungstext in der AWS-Dokumentation ansehen. Wir können die Anforderungsentität bequem auf Grundlage der Syntax der TranslateText-Aktion generieren.

Im JSON-Ausschnitte Ordner erstellen wir ein JSON-Strukturdokument, das nach dem AWS-Dienst benannt ist, in diesem Fall JSON_TranslateText.

Erstellen eines JSON-Strukturdokuments

Wir öffnen das Dokument und fügen die Quest-Syntax ein, die in TranslateText – Amazon Translate API-Referenz.

Wir klicken dann Format. Da uns die verwendeten Einstellungen und Terminologien in unserem Fall nicht interessieren, werden wir diese Teile löschen und einfach belassen SourceLanguageCode, ZielspracheCode und Übersetzter Text vor dem Klicken Inspiration und OK.

Formatierung des JSON-Strukturdokuments

Im Import-Zuordnungen Ordner erstellen wir ein Import Mapping-Dokument, nennen es IMM_TranslateText und klicken auf OK.

Erstellen eines Import-Mapping-Dokuments

Wir öffnen die IMM_TranslateText Dokument. Im Schemaquelle Abschnitt, wählen wir aus JSON-Strukturund wählen Sie dann die Option JSON_TranslateText  Dokument.

Auswählen des Dokuments „JSON_ListLanguages“

Dann klicken wir ErweiternWählen Alle überprüfen, und dann OK.

Schema für Import-Mapping in IMM_TranslateText auswählen

Mendix Studio Pro zeigt nun eine visuelle Darstellung der Zuordnung des AWS-Dienstes zu Ihrem Mendix Anwendung. In einigen Fällen werden möglicherweise Entitäten generiert, die keinen Zweck erfüllen. Entfernen Sie diese, indem Sie das Importzuordnungsdokument erneut öffnen und die unnötigen deaktivieren. In diesem Fall fahren wir fort, da keine unnötigen Entitäten erstellt wurden.

Nachdem dies erledigt ist, klicken wir auf Automatisch zuordnen. Mendix Studio Pro erstellt die Entitäten, in die die AWS-Serviceantwort im Domänenmodell abgebildet wird. In unserem Fall sieht die Importzuordnung folgendermaßen aus:

Ergebnisse der automatischen Zuordnung

Nun gehen wir zu unserem Domänenmodell und ändern die Namen der erstellten Entitäten so, dass sie zur TranslateText-Aktion passen. Praktischerweise können wir der API-Dokumentation entnehmen, dass die Attribute innerhalb der Antwort, die uns interessieren, dieselben sind wie für die Anfrage. Wir können also einfach die neu erstellte TranslateTextRequest kopieren und umbenennen. So sollten die beiden Entitäten jetzt aussehen:

 

Wir müssen später auch TranslateTextRequest-Objekte exportieren. Zur Vorbereitung erstellen wir ein Export-Mapping EXM_TranslateText auf die gleiche Weise wie das Import-Mapping IMM_TranslateText. Nachdem unser Domänenmodell fertig ist, können wir mit der Erstellung unserer Microflow-Aktion fortfahren. Bevor wir jedoch damit beginnen, fügen wir schnell die Konstanten hinzu, die wir für die Authentifizierung benötigen.
In den Anwendungseinstellungen ändern wir die Konstantenwerte für den AWS Authentication Connector. Die benötigten Konstanten für die beiden Typen, statisch und temporär, sind im Abschnitt ConnectionDetails des Connectors aufgelistet, wie Sie im Bild unten sehen können.

 

Jetzt können wir mit der Arbeit an unserem Mikrofluss beginnen.

Im Einkauf & Prozesse Ordner erstellen wir einen Microflow namens POST_v1_TranslateText, Nach der Mendix Namenskonventionen.

Laut TranslateText – Amazon Translate API-Referenz, die Anforderung für diese Aktion verfügt über drei erforderliche Parameter: SourceLanguageCode, ZielspracheCode und Text, das ist der Text, den wir übersetzen möchten. Also fügen wir dem Microflow drei Eingabeparameter für diese Parameter hinzu und erstellen eine Zeichenfolgenvariable namens Anforderungstext um die Aktionsanforderung vorzubereiten.

Da wir eine Anforderungsentität erstellt haben, können wir sie als einzigen Eingabeparameter verwenden.

Wir fügen dann entweder die GetTemporaryCredentials oder unter der GetStaticCredentials Mikroströme aus dem AWS-Authentifizierungsmodul um unsere Anmeldeinformationen abzurufen. In dieser Implementierung verwenden wir statische Anmeldeinformationen, daher fügen wir den Mikroflow GetStaticCredentials hinzu. Alle erforderlichen Informationen zum Erstellen des Credentials-Objekts werden aus den Konstanten gefüllt, die wir im AWS-Authentifizierungs-Connector eingegeben haben.

Wir haben jetzt sowohl unsere Anfrage als auch unsere AWS-Anmeldeinformationen. Bevor wir jedoch den REST-Dienst aufrufen können, müssen wir Signature Version 4 verwenden, um die Authentifizierungsinformationen zu unserem Anfrageaufruf hinzuzufügen. Wir müssen den Mikrofluss so konfigurieren, dass er ein SigV4Header-Objekt erhält, indem wir den SigV4-Header abrufen Betrieb von der AWS-Authentifizierung Modul. Dazu erstellen wir zunächst ein neues SigV4Builder-Objekt namens NewSigV4Builder und füllen Sie seine Mitglieder aus. Bitte wählen Sie eine Region gemäß den Best Practices aus: die Region, die Ihrem Standort am nächsten liegt und in der der Übersetzungsdienst verfügbar ist.

Als nächstes erstellen wir eine Liste von SigV4Parameter Objekte aufgerufen Kopfzeilenliste weil es zwei wichtige Header gibt, die als Eingabeparameter der SigV4-Header abrufen Java-Aktion.

Für den ersten Header erstellen wir eine SigV4Parameter Objekt Inhaltstypheader mit folgenden Parametern:

  • Wesentliche - Inhaltstyp
  • Wert - Anwendung/x-amz-json-1.1

Erstellen einer Liste von SigV4Parameter-Objekten

Für den zweiten Header erstellen wir einen SigV4Parameter Objekt TranslateTextActionHeader hinzufügen x-amz-ziel für die TranslateText Aktion, die wir gefunden hatten, bevor wir mit der Arbeit am Connector begannen.

  • Wesentliche - x-amz-ziel
  • Wert - AWSShineFrontendService_20170701.TranslateText

 

Wir fügen diese beiden Header dem Kopfzeilenliste die wir geschaffen haben.

Nun können wir hinzufügen: SigV4-Header abrufen Operation zu unserem Mikrofluss und verwenden Sie unsere Anmeldeinformationen, die NewSigV4Builder Objekt und die Liste der SigV4Parameter Objekte Kopfzeilenliste als Eingabeparameter. Es gibt einen SigV4Headers Objekt.

Nachdem wir das SigV4Headers-Objekt in den Gültigkeitsbereich gebracht haben, möchten wir TranslateTextRequest exportieren, um RequestBody als JSON zu erhalten. Fügen Sie dazu dem Microflow eine Aktion „Exportieren mit Mapping“ hinzu. Wählen Sie dann das EXM_TranslateText-Mapping sowie das TranslateTextRequest-Objekt aus und verwenden Sie eine Rückgabevariable namens „RequestBody“.

Wir können jetzt den REST-Dienst aufrufen, da wir über alle erforderlichen Informationen verfügen. Daher fügen wir dem Mikroflow eine REST-Aufrufaktion hinzu. Ort ist das Endpunkt-URL Attribut des zurückgegebenen SigV4Headers; Timeout ist standardmäßig auf 300 ms eingestellt und kann auf jeden beliebigen ganzzahligen Wert geändert werden. PREISANFRAGE (Request) ist das Anforderungstext Stringvariable des Microflows. Wir fügen die ContentTypeHeader, TranslateTextActionHeaderund die Header in den zurückgegebenen SigV4Headers Objekt als Benutzerdefinierte HTTP-Header auch zum REST-Aufruf.

Hinzufügen einer REST-Aufrufaktion zum Microflow

Wir kartieren die Antwort Verwendung der IMM_TranslateText Dokument, das ein TranslateTextResponse Objekt.

Unser fertiger Microflow sieht wie folgt aus (die Generierung des SigV4Headers wurde zur besseren Übersichtlichkeit in einem Subflow zusammengefasst):

Bild des fertigen Mikroflusses

Und wir sind fertig! Sie haben einen neuen Amazon Translate Connector erstellt, der Text in eine andere Sprache übersetzen kann! Vergessen Sie nicht, diesen Mikrofluss freizugeben, damit er problemlos wiederverwendet werden kann.

Wählen Sie Ihre Sprache