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.
・ AWS Lambda ・ "Kintone" (https: //kintone.cybozu.kom/jp/) ・ CData Kintone ODBC-Treiber für Linux
https://github.com/kuwazzy/pycdatakintonedemo
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.
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.
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
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']
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
Klicken Sie im AWS Lambda-Dashboard auf die Schaltfläche "Funktion erstellen". Klicken Sie in Schritt 1 im Auswahlbildschirm für Konstruktionszeichnungen auf die Schaltfläche "Von Grund auf neu erstellen". Da es diesmal in Schritt 2 nicht auf dem Triggereinstellungsbildschirm eingestellt ist, klicken Sie auf die Schaltfläche "Weiter". 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. 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. 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). Stellen Sie in den erweiterten Einstellungen die Zeitüberschreitungszeit auf einen geeigneten Wert ein (Beispiel: 1 Minute).
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". Bestätigen Sie, dass die Funktion erstellt wurde.
Wählen Sie unter Aktionen die Option Testereignis festlegen aus.
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 '
Klicken Sie nun auf die Schaltfläche "Test", um es auszuführen.
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.
Wenn Sie den Protokolldatenstrom auswählen und den Nachrichteninhalt anzeigen, können Sie sehen, dass die Liste der Apps in Kintone ausgegeben wird.
Ö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.
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.
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