[PYTHON] Führen Sie BigQuery von Lambda aus

Einführung

Stellen Sie eine BigQuery-Abfrage von Lambda aus. Es ist das Untersuchungsprotokoll. Grundsätzlich verwende ich AWS, aber ich hatte die Möglichkeit, regelmäßig auf BigQuery von GCP zu verweisen. Ich dachte, es wäre bequem, es einfach auf Lambda laufen zu lassen.

Umweltübersicht

Verwenden Sie das GCP SDK von Lambdas Python. Das GCP SDK wird in der Schicht gehalten. Sie müssen die GCP-Authentifizierung auf der AWS-Seite einrichten.

スクリーンショット 2019-11-16 17.55.25.png

Das SDK ist die Python-Clientbibliothek. https://googleapis.dev/python/bigquery/latest/generated/google.cloud.bigquery.client.Client.html

Verfahren

Voraussetzungen

Sie haben ein AWS-Konto. Ich habe ein GCP-Konto. Sie können BigQuery über die API verwenden. Die BigQuery-Tabelle wurde erstellt. Ich habe einen AWS-Zugriffsschlüssel

Erstellen Sie eine Lambda-Funktion.

Python-Code, der nur BigQuery ausführt. Lassen Sie uns dies zunächst verschieben.

import json
from google.cloud import bigquery

def lambda_handler(event, context):
    client = bigquery.Client()
    sql = """
        SELECT *
        FROM `<my-project>.<my-dataset>.<my-table>`
        LIMIT 10
    """
    
    # Run a Standard SQL query using the environment's default project
    results = client.query(sql).result()
    for row in results:
        print(row)

    return {
        'statusCode': 200,
        'body': json.dumps('Hello from Lambda!')
    }

Erstellen Sie ein GCP-SDK, um sich bei der Lambda-Schicht zu registrieren.

Fügen Sie das SDK der Ebene hinzu, um "import bigquery" in Lambdas Python zu verwenden. Holen Sie es mit Pip und Reißverschluss. Es ist eine Prozedur, um Linux mit einer Spot-Instanz auf EC2 zu booten und auf S3 zu setzen. Schnell.

--Erstellen Sie Amazon Linux 2 mit einer Spot-Instanz von EC2.

Die Ausführungsprozedur wird beschrieben. Legen Sie für <> Ihren eigenen Wert fest.

# ec2-Werden Sie Benutzer
sudo su - ec2-user
#Rohrinstallation
sudo yum install python3 -y
curl -O https://bootstrap.pypa.io/get-pip.py
sudo python3 get-pip.py

export PATH=$PATH:/usr/local/bin
#Installation von sdk&Reißverschluss
pip install google-cloud-bigquery -t ./python/
zip -r google-cloud-bigquery.zip python
#Hinzugefügt, da Protobuf erforderlich ist
pip install protobuf --upgrade -t ./python/
zip -r google-cloud-bigquery.zip ./python/google/protobuf
#aws cli Einstellungen
aws configure
#Stellen Sie Folgendes ein:
  AWS Access Key ID [None]: <my-access-key>
  AWS Secret Access Key [None]: <my-secret-key>
  Default region name [None]: ap-northeast-1
  Default output format [None]: json
#Speichern Sie auf s3
aws s3 mb s3://<my-bucket>
aws s3 cp google-cloud-bigquery.zip s3://<my-bucket>

Nach dem Speichern des SDK in s3 können Sie die Spot-Instanz löschen.

Registrieren Sie die erstellte Bibliothek in der Lambda-Ebene.

Kehre zu Lambda zurück.

--Erstelle eine Ebene. スクリーンショット 2019-11-24 11.18.55.png

Die Laufzeit hat Python 3.7 und Python 3.8 hinzugefügt.

--Wählen Sie eine Ebene und drücken Sie "Ebene hinzufügen".

Wählen Sie den Namen aus "Kundenebene". Wählen Sie die von Ihnen erstellte Version aus. スクリーンショット 2019-11-24 11.22.41.png

Wenn Sie eine Ebene hinzufügen, können Sie die S3-Datei sicher löschen.

Holen Sie sich die GCP-Zertifizierungsdatei.

https://cloud.google.com/docs/authentication/production

--Erstellen Sie einen JSON-Dienstkontoschlüssel.

Klicken Sie im obigen Link auf die Seite "Wechseln Sie zur Seite" Dienstkontoschlüssel erstellen ". Die Rolle hat "BigQuery Administrator" ausgewählt. image.png

Registrieren Sie die GCP-Authentifizierungsdatei in Lambda.

json fügte den Text aus "Neue Datei" durch Kopieren und Einfügen hinzu. Fügen Sie die Umgebungsvariable "GOOGLE_APPLICATION_CREDENTIALS" hinzu.

image.png

Testlauf

Ich konnte den Test von der Lambda-Konsole aus ausführen!

Verstopfte Punkte

Ohne Protobuf habe ich einen Fehler bekommen und war in Schwierigkeiten ... Ich habe in StackOverflow nach einem Fall gesucht und ihn gelöst.

abschließend

Ich frage mich, ob das in Ordnung ist, aber ich habe es gepostet, weil ich es geschafft habe!

――Ist dies der Weg, um das SDK zu erstellen? Wo zum Reißverschluss hinzufügen

――Können Sie die GCP-Authentifizierungsdatei mehr ausblenden? In Umgebungsvariablen, KMS, Parameterspeicher usw.

Recommended Posts

Führen Sie BigQuery von Lambda aus
Führen Sie Python aus Excel aus
Führen Sie mysqlclient auf Lambda aus
Führen Sie das Illustrator-Skript von Python aus
Fragen Sie Athena von Lambda Python ab
Lambda
[Lambda] [Python] Von Lambda auf Twitter posten!
Führen Sie Aprili von Python auf Orange aus
Python-Fehlererkennung von Powershell ausgeführt
Führen Sie Python-Skripte synchron von C # aus
Führen Sie Systems Manager von Lambda aus, um ein Backup von EC2 zu erhalten
Betreiben Sie Dynamodb von Lambda aus wie SQL
Führen Sie Ansible über Python mithilfe der API aus
Führen Sie das Python-Skript in Cisco Memorandum_EEM aus
Das Modul kann nicht in Python auf EC2 importiert werden, das von AWS Lambda ausgeführt wird
Führen Sie Cloud Dataflow (Python) über AppEngine aus
Führen Sie Keras mit CNTK-Backend unter CentOS aus
4 Möglichkeiten zum Aktualisieren von Unterschieden zwischen Tabellenkalkulationen und BigQuery
Verwenden Sie BigQuery von Ihrem lokalen Jupyter Notebook
[Python] Führen Sie Headless Chrome unter AWS Lambda aus