Bearbeiten von Kintondaten mit dem Python & C Data ODBC-Treiber von AWS Lambda

Einführung

Überblick

Dies ist die Prozedur zum Aufrufen von Python-Code vom AWS Serverless Service Lambda und zum Verarbeiten der Daten in der Kintone-App mithilfe des CData ODBC-Treibers.

Diagramm

image.png

Verwendete Produkte und Dienstleistungen

AWS Lambda ・ "Kintone" (https: //kintone.cybozu.kom/jp/) ・ CData Kintone ODBC-Treiber für Linux

Beispielcode

https://github.com/kuwazzy/pycdatakintonedemo

Referenz

Vorbereiten des Lambda-Funktionspakets

Vorbereiten des CData-Kintone-ODBC-Treibers

Gehen Sie zur Webseite der CData-Software. Die Evaluierungsversion und Produktversion des CData kintone ODBC-Treibers können von [hier] heruntergeladen werden (http://www.cdata.com/jp/drivers/kintone/odbc/). Ab dem 20. August 2017 ist die Linux-Version jedoch als Beta-Version verfügbar. Laden Sie sie daher von [hier] herunter (https://drive.google.com/drive/folders/0BzvIxzhs1P48NlNDU0RCbGlBMTA?usp=sharing). Das Produkthandbuch finden Sie unter hier.

Extrahieren von Bibliotheken aus dem CData Kintone ODBC Driver für Linux Build

Entpacken Sie die Build-Datei setup.x86_64.deb. Wenn Sie es entpacken, wird data.tar erstellt. Entpacken Sie es daher weiter. Anschließend wird ein Datenverzeichnis mit der folgenden Struktur erstellt.

data/ ├ opt/ | └ cdata/ |   └ cdata-odbc-driver-for-kintone/ |     ├ bin/ |     ├ db/ |     ├ demos/ |     ├ etc/ |     ├ help/ |     └ lib/ |       ├ cdata.odbc.kintone.ini |       ├ CData.ODBCm.Kintone.DLL |       ├ libcdatart.x64.so.4 |       └ libkintoneodbc.x64.so └ usr/   └ doc/     └ cdata-odbc-driver-for-kintone/

Extrahieren Sie 4 Dateien unter / data / opt / cdata / cdata-odbc-driver-for-kintone / lib.

Vorbereitung von Pyodbc und abhängigen Bibliotheken

Bereiten Sie die pyodbc.so-Bibliothek vor. In meiner Umgebung habe ich es von /usr/lib64/python2.7/site-packages von RHEL7.3 kopiert.

Bereiten Sie außerdem eine Gruppe abhängiger Pyodbc-Bibliotheken vor. In meiner Umgebung habe ich es aus / usr / lib64 unter RHEL7.3 kopiert.

Liste der hinzugefügten abhängigen Bibliotheken

libodbc.so libodbc.so.2 libodbccr.so libodbccr.so.2 libodbcdrvcfg1S.so libodbcdrvcfg1S.so.2 libodbcdrvcfg2S.so libodbcdrvcfg2S.so.2 libodbcinst.so libodbcinst.so.2 libodbcminiS.so libodbcminiS.so.2 libodbcmyS.so libodbcmyS.so.2 libodbcnnS.so libodbcnnS.so.2 libodbcpsqlS.so libodbcpsqlS.so.2 libodbctxtS.so libodbctxtS.so.2 libomapi.so.0 liboplodbcS.so liboplodbcS.so.2 liboraodbcS.so liboraodbcS.so.2

Python-Code-Vorbereitung

Erhalten Sie es von GitHub hier.

pycdatakintonedemo.py



# -*- coding: utf-8 -*-
import pyodbc
import sys

def Main(event, context):
    print('************************************************')
    print('\t\t Kintone Demo')
    print('This demo uses the CData ODBC for Kintone')
    print('************************************************')
    print('option:1,               - List all the tables in the database')
    print('option:2, table:name    - List all the columns for a specific table')
    print('option:3, table:name    - Select data from table')
    print('option:4, sql:statement - Custom SQL Query')
    print('------------------------------------------------')

    connStr =  'Driver={./cdata/libkintoneodbc.x64.so};' + event['conn_str']
    conn = pyodbc.connect(connStr)

    if event['option'] == '1':
        for table in conn.cursor().tables():
            print(table.table_name)
    elif event['option'] == '2':
        tableName = event['table']
        for column in conn.cursor().columns(tableName):
            print(column.column_name)
    elif event['option'] == '3':
        tableName = event['table']
        c = conn.cursor();
        c.execute('SELECT * FROM ' + tableName)
        for row in c.fetchall():
            print(row)
    elif event['option'] == '4':
        sql = event['sql']
        c = conn.cursor();
        c.execute(sql)
        for row in c.fetchall():
            print(row)
    else:
            print('Invalid option')

    conn.close();

    return {
        'status' : 'finish'
    }

Die Einschränkung besteht darin, dass die ODBC-Bibliothek direkt anstelle des DSN angegeben wird. Ich habe auf die Seite hier verwiesen.

 connStr =  'Driver={./cdata/libkintoneodbc.x64.so};' + event['conn_str']

Funktionspaket erstellen

Bereiten Sie die im obigen Verfahren vorbereiteten Dateien mit der folgenden Verzeichnisstruktur vor. . ├ pycdatakintonedemo.py (Python-Code von Lambda aufgerufen) ├ pyodbc.so (pyodbc-Bibliothek) ├ cdata / (CData-Bibliothek) | ├ cdata.odbc.kintone.ini | ├ CData.ODBCm.Kintone.DLL | ├ libcdatart.x64.so (umbenannt in libcdatart.x64.so.4) | └ libkintoneodbc.x64.so └ lib/ └ libodbc * .so etc (pyodbc-abhängige Bibliotheken)

Diese Dateigruppe ist komprimiert. * Bitte geben Sie das übergeordnete Verzeichnis nicht an

Erstellen einer Lambda-Funktion

Eine Funktion erstellen

Klicken Sie im AWS Lambda-Dashboard auf die Schaltfläche "Funktion erstellen". image.png Klicken Sie in Schritt 1 im Auswahlbildschirm für Konstruktionszeichnungen auf die Schaltfläche "Von Grund auf neu erstellen". image.png Da es diesmal in Schritt 2 nicht auf dem Triggereinstellungsbildschirm eingestellt ist, klicken Sie auf die Schaltfläche "Weiter". image.png Geben Sie den Funktionsnamen (optional) und die Beschreibung (optional) auf dem Funktionseinstellungsbildschirm in Schritt 3 ein und wählen Sie als Laufzeit "Python 2.7" aus. image.png Wählen Sie im Code für die Lambda-Funktion den Codeeintragstyp "ZIP-Datei hochladen" und laden Sie die im Verfahren "Funktionspaket erstellen" erstellte ZIP-Datei hoch. image.png Legen Sie für Lambda-Funktionshandler und -Rollen den Dateinamen (Beispiel: pycdatakintonedemo) fest, ausgenommen die Erweiterung des von GitHub heruntergeladenen Python-Codes und den durch Punkte verbundenen Handlernamen (Beispiel: Main). image.png Stellen Sie in den erweiterten Einstellungen die Zeitüberschreitungszeit auf einen geeigneten Wert ein (Beispiel: 1 Minute). image.png

Klicken Sie nach Abschluss der bisherigen Einstellungen unten auf die Schaltfläche "Weiter". Wenn auf dem Bestätigungsbildschirm keine Probleme auftreten, klicken Sie auf die Schaltfläche "Funktion erstellen". image.png Bestätigen Sie, dass die Funktion erstellt wurde. image.png

Ausführung der Lambda-Funktion

Testereignis erstellen

Wählen Sie unter Aktionen die Option Testereignis festlegen aus. image.png

Die Beispielereignisvorlage bleibt HelloWorld und legt die Werte der vier Parameter fest.

sample.json


{
  "conn_str": "Url=https://***.cybozu.com;User=***;Password=***;",
  "option": "1",
  "table": "table_name",
  "sql": "SELECT * FROM table_name"
}

"Conn_str" ist die Verbindungszeichenfolge zu Kintone. Sie benötigen mindestens drei Elemente: URL, Benutzer und Kennwort. Es gibt vier "Optionen" unten. Geben Sie für einige auch "Tabelle" an. Geben Sie im Fall von 4 auch "sql" an.

・ Option: 1, --Listet alle Tabellen in der Datenbank auf. ' ・ Option: 2, Tabelle: Name - Listet alle Spalten für eine bestimmte Tabelle auf. ' ・ Option: 3, Tabelle: Name - Daten aus Tabelle auswählen ' · Option: 4, sql: Anweisung - Benutzerdefinierte SQL-Abfrage '

image.png

Testlauf

Klicken Sie nun auf die Schaltfläche "Test", um es auszuführen. image.png

Es ist in Ordnung, wenn im Ausführungsergebnis "Erfolg" angezeigt wird. Klicken Sie auf "Details" und dann in der Protokollausgabe auf "Hier klicken", um das Protokoll in CloudWatch anzuzeigen. Wenn ein Fehler auftritt, überprüfen Sie den Inhalt des Protokolls. image.png

Wenn Sie den Protokolldatenstrom auswählen und den Nachrichteninhalt anzeigen, können Sie sehen, dass die Liste der Apps in Kintone ausgegeben wird. image.png

Öffnen Sie als Nächstes ein Testereignis, setzen Sie "3" (Anzeige der Tabellendaten) in "Option", setzen Sie den in kintone vorhandenen Anwendungsnamen (Beispiel: CDataJapanSKU) in "Tabelle" und "Speichern". Klicken Sie auf Test. image.png

Wenn Sie das Protokoll in CloudWatch erneut öffnen, können Sie sehen, dass die Daten in der Kintone-App (z. B. Produktdaten in CDataJapanSKU) angezeigt werden. image.png

Zusammenfassung

Es war ein Verfahren zur Kintone-Integration von Python von AWS Lambda unter Verwendung des CData ODBC-Treibers. Zusätzlich zu Kintone kann der CData ODBC-Treiber eine Verbindung zu über 90 Saas, Anwendungen und Datenbanken herstellen. Bitte laden Sie verschiedene ODBC-Treiber von der Webseite hier herunter und testen Sie sie.

Recommended Posts

Bearbeiten von Kintondaten mit dem Python & C Data ODBC-Treiber von AWS Lambda
Abrufen von Daten aus der Datenbank über ODBC mit Python (Access)
Rufen Sie C von Python mit DragonFFI auf
Benachrichtigen Sie HipChat mit AWS Lambda (Python)
[AWS] Verwenden von INI-Dateien mit Lambda [Python]
Empfangen Sie Textdaten von MySQL mit Python
[Hinweis] Mit Python Daten von PostgreSQL abrufen
Bearbeiten von DynamoDB-Daten mit Lambda (Node & Python)
Stellen Sie mit AWS Lambda Python eine Verbindung zu s3 her
Verwenden von C ++ - Funktionen aus Python mit pybind11
Datenintegration von der Python-App unter Windows zu Amazon Redshift mit ODBC
Wickeln Sie C mit Cython für Python ein
LINE BOT mit Python + AWS Lambda + API Gateway
Serverlose Anwendung mit AWS SAM! (APIGATEWAY + Lambda (Python))
Wrap C ++ mit Cython zur Verwendung von Python
Extrahieren Sie mit Python Daten von einer Webseite
Datenanalyse mit Python 2
Dynamische HTML-Seiten mit AWS Lambda und Python
So kratzen Sie Bilddaten von Flickr mit Python
Stellen Sie die Python 3-Funktion mit Serverless Framework unter AWS Lambda bereit
Erstellen Sie in Docker eine Ebene für AWS Lambda Python
Ich möchte Lambda mit Python auf Mac AWS!
Tweet von AWS Lambda
Machen Sie mit AWS Lambda und Python gewöhnliche Tweets flottenartig
[Grundlagen der Datenwissenschaft] Sammeln von Daten aus RSS mit Python
Datenanalyse mit Python
ODBC-Zugriff auf SQL Server von Linux mit Python
Ein Memo, das mit Python & Spark Daten aus dashDB liest
Hinweise zum Importieren von Daten aus MySQL oder CSV mit Python
Xpath-Zusammenfassung beim Extrahieren von Daten von einer Website mit Python Scrapy
Abrufen von Daten aus der Analyse-API mit Google API Client für Python
Erstellen Sie mit AWS SAM schnell eine API mit Python, Lambda und API Gateway
[Python] Exportieren Sie regelmäßig mit Lambda aus CloudWatch-Protokollen nach S3
Übergeben Sie die OpenCV-Daten der ursprünglichen C ++ - Bibliothek an Python
Site-Überwachung und Alarmbenachrichtigung mit AWS Lambda + Python + Slack
Mit Python erstellte Beispieldaten
Betreiben Sie TwitterBot mit Lambda, Python
[Python] Scraping in AWS Lambda
Holen Sie sich Youtube-Daten mit Python
Fragen Sie Athena von Lambda Python ab
PyTorch mit AWS Lambda [Lambda-Import]
Mit Skype benachrichtigen Sie mit Skype von Python!
Lesen von JSON-Daten mit Python
[AWS] Suchen und Abrufen der erforderlichen Daten aus S3-Dateien mit S3 Select
Vorsichtsmaßnahmen beim Ausführen von Python unter EC2 über AWS Lambda (Befehl ausführen)
Einführung in die Datenanalyse mit Python P17-P26 [ch02 1.usa.gov Daten von bit.ly]
Holen Sie sich Daten von VPS MySQL mit Python 3 und SQL Alchemy
Übergeben Sie die Liste von Python an C ++ als Referenz in pybind11
Datenbanktabellen mit CSV extrahieren [ODBC-Verbindung von R und Python]
Löse ABC163 A ~ C mit Python
Python: Tags von HTML-Daten ausschließen
Erstellen Sie Awaitable mit der Python / C-API
Zusammenfassung bei Verwendung von AWS Lambda (Python)
Hit Schatzdaten von Python Pandas