Hinweis:
- Für dieses Tutorial ist Zugriff auf Oracle Cloud erforderlich. Informationen zum Registrieren für einen kostenlosen Account finden Sie unter Erste Schritte mit Oracle Cloud Infrastructure Free Tier.
- Es verwendet Beispielwerte für Oracle Cloud Infrastructure-Zugangsdaten, -Mandanten und -Compartments. Wenn Sie Ihre Übung abgeschlossen haben, ersetzen Sie diese Werte durch Werte, die speziell für Ihre Cloud-Umgebung gelten.
Dateien mit Oracle Functions in autonome Datenbank laden
Einführung
In diesem Tutorial erstellen Sie Object Storage-Buckets, Oracle-Funktion und Oracle Autonomous Data Warehouse und lösen die Funktion aus, wenn eine Datei in Object Storage hochgeladen wird. Die Funktion nimmt die Datei und schreibt sie in die Datenbank.
Ziele
- Anwendung erstellen
- Dynamische Gruppe erstellen
- Object Storage-Bucket erstellen
- Autonome Datenbank erstellen
- Funktion bereitstellen
- Ereignisregel erstellen
- Erstellte Funktion testen
Voraussetzungen für Funktionen
Compartment erstellen
Ignorieren Sie diesen Schritt, wenn Sie einen kostenlosen von Oracle bereitgestellten Mandanten verwenden.
Wenn Sie ein vorhandenes Compartment verwenden möchten, fahren Sie mit dem nächsten Schritt fort. Klicken Sie andernfalls auf Compartments und dann auf Compartment erstellen, um ein neues Compartment zu erstellen.
VCN und Netzwerke erstellen
Wenn noch kein geeignetes VCN vorhanden ist, in dem Netzwerkressourcen erstellt werden sollen, melden Sie sich als Mandantenadministrator bei der Konsole an, und gehen Sie unter "Core Infrastructure" zu Networking, und führen Sie dann folgende Schritte aus:
- Klicken Sie auf Virtuelle Cloud-Netzwerke, und wählen Sie im vorherigen Schritt ein Compartment aus.
- Klicken Sie auf VCN-Assistenten starten, VCN mit Internetverbindung und anschließend VCN-Assistenten starten.
- Geben Sie einen Namen für das neue VCN ein (Beispiel:
fn-vcn
), klicken Sie auf Weiter, und klicken Sie dann auf Erstellen, um das VCN zusammen mit den zugehörigen Netzwerkressourcen zu erstellen.
Policy für Oracle Functions erstellen
Melden Sie sich als Mandantenadministrator bei der Konsole an, gehen Sie unter "Governance und Administration" zu Identität, klicken Sie auf Policys, und führen Sie die folgenden Schritte aus:
-
Wählen Sie das Root-Compartment des Mandanten aus.
-
Klicken Sie auf Policy erstellen.
-
Geben Sie als Namen
faas-policy
ein. -
Geben Sie zur Beschreibung
Policy for Functions
ein. -
Klicken Sie auf den Link Anpassen (erweitert), und fügen Sie die Policy-Anweisungen in das Feld "Policy Builder" ein:
Allow group <group-name> to read metrics in tenancy Allow group <group-name> to read objectstorage-namespaces in tenancy Allow group <group-name> to use virtual-network-family in tenancy Allow group <group-name> to manage functions-family in tenancy Allow group <group-name> to use cloud-shell in tenancy
-
Klicken Sie auf Erstellen.
Stellen Sie sicher, dass der Benutzer zu der Gruppe gehört, die in den obigen Policy-Anweisungen referenziert wird. Informationen zum Erstellen von Gruppen und Hinzufügen von Benutzern zu Gruppen finden Sie unter Gruppe erstellen.
Anwendung erstellen
In diesem Schritt erstellen Sie eine Anwendung und richten Fn-CLI auf Cloud Shell ein.
-
Wählen Sie unter "Lösungen und Plattform" die Option Entwicklerservices aus, und klicken Sie auf Functions.
-
Wählen Sie Ihr Entwicklungs-Compartment in der Liste Compartment aus.
-
Klicken Sie auf Anwendung erstellen.
-
Geben Sie als Namen
etl-app
ein. -
Wählen Sie den VNC aus, den Sie zuvor erstellt haben (e.g.
fn-vcn
). -
Wählen Sie das öffentliche Subnetz aus.
-
Klicken Sie auf Erstellen.
-
Klicken Sie auf die erstellte Anwendung, um die Anwendungsdetails zu öffnen.
-
Klicken Sie auf den Link Erste Schritte, und befolgen Sie die Abschnitte Cloud Shell-Session starten und Fn-CLI auf Cloud Shell einrichten in Cloud Shell-Setup.
Dazu müssen Sie Cloud Shell starten, den Fn-Kontext aktualisieren, ein Authentifizierungstoken für die Registry generieren und sich bei Oracle Cloud Infrastructure Registry anmelden.
Dynamische Gruppe erstellen
Um andere OCI-Services verwenden zu können, muss Ihre Funktion Teil einer dynamischen Gruppe sein. Informationen zum Erstellen dynamischer Gruppen finden Sie in der Dokumentation.
Bevor Sie eine dynamische Gruppe erstellen, müssen Sie die OCID des Entwicklungs-Compartments abrufen. Sie verwenden die Compartment-OCID in der Übereinstimmungsregel für dynamische Gruppen.
- Öffnen Sie das Navigationsmenü, wählen Sie Identität, Compartments aus.
- Suchen Sie das Entwicklungs-Compartment in der Liste, bewegen Sie den Mauszeiger über die Zelle in der Spalte "OCID", und klicken Sie auf Kopieren, um die Compartment-OCID in die Zwischenablage zu kopieren.
- Speichern Sie die Compartment-OCID in Kürze.
Jetzt können Sie eine dynamische Gruppe erstellen.
-
Um eine dynamische Gruppe zu erstellen, öffnen Sie das Navigationsmenü, wählen Sie Identität, Dynamische Gruppen aus.
-
Klicken Sie auf Dynamische Gruppe erstellen.
-
Geben Sie als Namen
functions-dynamic-group
ein. -
Geben Sie zur Beschreibung
Group with all functions in a compartment
ein. -
Um die Funktionen auszuwählen, die zur dynamischen Gruppe gehören, [Übereinstimmungsregeln schreiben] (https://docs.cloud.oracle.com/en-us/iaas/Content/Identity/Tasks/managingdynamicgroups.htm#Writing).) Schreiben Sie die folgende Übereinstimmungsregel, die alle Funktionen in einem Compartment enthält, in dem Sie die Anwendung erstellt haben:
All {resource.type = 'fnfunc', resource.compartment.id = 'ocid1.compartment.oc1..example'}
Hinweis: Stellen Sie sicher, dass Sie den obigen Wert durch die zuvor gespeicherte Compartment-OCID ersetzen.
Object Storage-Bucket erstellen
Sie benötigen einen input-bucket
-Bucket in Object Storage. Mit input-bucket
können Sie die CSV-Dateien ablegen. Die Funktion verarbeitet die Datei und importiert sie in Oracle Autonomous Data Warehouse.
Erstellen Sie zuerst input-bucket
:
-
Öffnen Sie das Navigationsmenü, wählen Sie Objektspeicher und dann Objektspeicher aus.
-
Wählen Sie Ihr Entwicklungs-Compartment in der Liste Compartment aus.
-
Klicken Sie auf Bucket erstellen.
-
Benennen Sie den Bucket input-bucket.
-
Wählen Sie die Standard-Storage Tier aus.
-
Aktivieren Sie das Kontrollkästchen Objektereignisse ausgeben.
-
Klicken Sie auf Bucket erstellen.
IAM-Policys erstellen
Erstellen Sie eine neue Policy, mit der die dynamische Gruppe (functions-dynamic-group
) Objekte im Bucket verwalten kann.
-
Öffnen Sie das Navigationsmenü, wählen Sie Identität, Policys aus.
-
Klicken Sie auf Policy erstellen.
-
Geben Sie als Namen
functions-buckets-policy
ein. -
Geben Sie zur Beschreibung
Policy that allows functions dynamic group to manage objects in the bucket
ein. -
Klicken Sie auf den Link Anpassen (erweitert), und fügen Sie die Policy-Anweisungen in das Feld "Policy Builder" ein:
Allow dynamic-group functions-dynamic-group to manage objects in compartment [compartment-name] where target.bucket.name='input-bucket'
Hinweis: Ersetzen Sie
compartment-name
durch den Namen des Entwicklungs-Compartments (das Compartment, in dem Sie das VCN und die Funktionsanwendung erstellt haben). -
Klicken Sie auf Erstellen.
Autonomous Database erstellen
Die Funktion greift aus Gründen der Einfachheit mit SODA (Simple Oracle Document Access) auf die autonome Datenbank zu. Sie können den anderen Zugriffstyp verwenden, indem Sie die Funktion ändern.
-
Öffnen Sie das Navigationsmenü, und wählen Sie Autonomous Data Warehouse aus.
-
Klicken Sie auf Autonome Datenbank erstellen.
-
Wählen Sie in der Liste Ihr Entwicklungs-Compartment aus.
-
Geben Sie für den Anzeigenamen und den Datenbanknamen
funcdb
ein. -
Wählen Sie als Workload-Typ Transaktionsverarbeitung aus.
-
Wählen Sie als Deployment-Typ Shared Infrastructure aus.
-
Geben Sie das Admin-Kennwort ein.
-
Klicken Sie auf Autonome Datenbank erstellen.
Warten Sie, bis OCI die autonome Datenbank durch Provisioning bereitstellt, und klicken Sie dann auf die Schaltfläche Servicekonsole.
-
Klicken Sie in der Randleiste auf Development.
-
Klicken Sie unter RESTful Services und SODA auf URL kopieren.
-
Erstellen Sie in Ihrem Terminal (oder Cloud Shell) die Collection mit dem Namen
regionsnumbers
, indem Sie den folgenden Befehl ausführen. Stellen Sie sicher, dass Sie<ORDS_BASE_URL>
durch den Wert ersetzen, den Sie im vorherigen Schritt kopiert haben, und<DB-PASSWORD>
durch das Admin-Kennwort, das Sie beim Erstellen der autonomen Datenbank festgelegt haben.export ORDS_BASE_URL=<ORDS_BASE_URL> curl -X PUT -u 'ADMIN:<DB-PASSWORD>' -H "Content-Type: application/json" $ORDS_BASE_URL/admin/soda/latest/regionsnumbers
-
Um eine doppelte Prüfdatenerfassung zu erstellen, können Sie alle Sammlungen auflisten. Die Ausgabe sollte wie folgt aussehen:
bash $ curl -u 'ADMIN:<DB-password>' -H "Content-Type: application/json" $ORDS_BASE_URL/admin/soda/latest/ {"items":[{"name":"regionsnumbers","properties":{"schemaName":"ADMIN","tableName":"REGIONSNUMBERS","keyColumn":{"name":"ID","sqlType":"VARCHAR2","maxLength":255,"assignmentMethod":"UUID"},"contentColumn":{"name":"JSON_DOCUMENT","sqlType":"BLOB","jsonFormat":"OSON"},"versionColumn":{"name":"VERSION","type":"String","method":"UUID"},"lastModifiedColumn":{"name":"LAST_MODIFIED"},"creationTimeColumn":{"name":"CREATED_ON"},"readOnly":false},"links":[{"rel":"canonical","href":"https://.../ords/admin/soda/latest/regionsnumbers"}]}],"hasMore":false}
Funktion bereitstellen
In diesem Schritt klonen Sie das Quellcode-Repository der Funktionen und verwenden den Befehl fn deploy
, um das Docker-Image zu erstellen, das Image an OCIR zu übergeben und die Funktion in Oracle Functions in Ihrer Anwendung bereitzustellen.
-
Öffnen Sie in der Konsolen-UI die Cloud Shell.
-
Klonen Sie das Functions-Quellcode-Repository:
git clone https://github.com/oracle/oracle-functions-samples.git
-
Gehen Sie zum Ordner
samples/oci-load-file-into-adw-python
:cd oracle-functions-samples/samples/oci-load-file-into-adw-python
-
Stellen Sie die Funktion in
etl-app
bereit:fn -v deploy --app etl-app
Nachdem Sie die Funktion bereitgestellt haben, müssen Sie Funktionskonfigurationswerte festlegen, damit die Funktion weiß, wie eine Verbindung zu Autonomous Database hergestellt werden soll.
-
Legen Sie mit der Fn-CLI die folgenden Konfigurationswerte fest. Stellen Sie sicher, dass Sie
[ORDS_BASE_URL]
und[DB_PASSWORD]
durch Ihre Werte ersetzen:fn config function etl-app oci-load-file-into-adw-python ords-base-url [ORDS_BASE_URL] fn config function etl-app oci-load-file-into-adw-python db-schema admin fn config function etl-app oci-load-file-into-adw-python db-user admin fn config function etl-app oci-load-file-into-adw-python dbpwd-cipher [DB-PASSWORD] fn config function etl-app oci-load-file-into-adw-python input-bucket input-bucket fn config function etl-app oci-load-file-into-adw-python processed-bucket processed-bucket
Ereignisregel erstellen
In diesem Schritt konfigurieren Sie ein Cloud-Ereignis, um die Funktion auszulösen, wenn Sie die Dateien in input-bucket
ablegen.
-
Öffnen Sie in der Konsolen-UI die Navigation, wählen Sie Anwendungsintegration aus, und klicken Sie auf Events-Service.
-
Wählen Sie Ihr Entwicklungs-Compartment in der Liste Compartment aus.
-
Klicken Sie auf Regel erstellen.
-
Geben Sie als Anzeigename
load_CSV_into_ADW
ein. -
Geben Sie zur Beschreibung
Load CSV file into ADW
ein. -
Erstellen Sie drei Regeln. Sie können auf Weitere Bedingung klicken, um weitere Bedingungen hinzuzufügen:
Bedingung Service-/Attributname Ereignistyp/Attributwerte Ereignistyp Objektspeicher Objekt - Erstellen Attribut compartmentName Attribut bucketName Eingabe-Bucket -
Wählen Sie unter "Aktionen" die Option Funktionen aus:
- Wählen Sie für das Funktions-Compartment Ihr Entwicklungs-Compartment aus.
- Wählen Sie für die Funktionsanwendung
etl-app
aus. - Wählen Sie für die Funktion
oci-load-file-into-adw-python
aus.
-
Klicken Sie auf Regel erstellen.
Funktion testen
Um die Funktion zu testen, können Sie eine .csv
-Datei in die Datei input-bucket
hochladen. Dazu können Sie die Konsolen-UI oder Cloud Shell mit der OCI-CLI verwenden.
-
Öffnen Sie Cloud Shell.
-
Gehen Sie zum Funktionsordner:
cd ~/oracle-functions-samples/samples/oci-load-file-into-adw-python
-
Verwenden Sie die OCI-CLI, um
file1.csv
ininput-bucket
hochzuladen:$ oci os object put --bucket-name input-bucket --file file1.csv Uploading object [####################################] 100% { "etag": "607fd72d-a041-484c-9ee0-93b9f5488084", "last-modified": "Tue, 20 Oct 2020 18:03:50 GMT", "opc-content-md5": "O8mZv0X2gLagQGT5CutWsQ==" }
So zeigen Sie die Daten in der Datenbank an:
-
Navigieren Sie über die OCI-Konsole zu Autonomous Data Warehouse.
-
Wählen Sie Ihr Entwicklungs-Compartment in der Liste Compartment aus.
-
Wählen Sie Transaktionsverarbeitung aus der Liste Workload-Typ.
-
Klicken Sie auf den Datenbanknamen (
funcdb
). -
Klicken Sie auf Servicekonsole.
-
Klicken Sie in der Randleiste auf den Link Entwicklung.
-
Klicken Sie auf "SQL Developer Web".
-
Verwenden Sie ADMIN und das Admin-Kennwort für die Authentifizierung.
-
Geben Sie im Arbeitsblatt die folgende Abfrage ein:
select UTL_RAW.CAST_TO_VARCHAR2( DBMS_LOB.SUBSTR( JSON_DOCUMENT, 4000, 1 )) AS json from regionsnumbers
-
Klicken Sie auf die grüne Schaltfläche "Wiedergeben", um die Abfrage auszuführen.
-
Die Daten aus der CSV-Datei befinden sich auf der Registerkarte Abfrageergebnis.
-
Glückwunsch. Sie haben das Tutorial erfolgreich abgeschlossen.
Danksagungen
- Autor - Greg Verstraeten
- Mitwirkende - Peter Jausovec, Prasenjit Sarkar, Adao Junior
Weitere Lernressourcen
Sehen Sie sich weitere Übungen unter docs.oracle.com/learn an, oder greifen Sie auf weitere kostenlose Lerninhalte im Oracle Learning-Kanal YouTube zu. Besuchen Sie außerdem education.oracle.com/learning-explorer, um Oracle Learning Explorer zu werden.
Die Produktdokumentation finden Sie im Oracle Help Center.
Use Oracle Functions to load files into autonomous database
F40586-03
October 2022
Copyright © 2022, Oracle and/or its affiliates.