[PYTHON] Protokollausgabe der Google Cloud-Funktionen (und süchtig)
Was du machen willst
- Sprache: Python
- Ich möchte Protokolle für die Stapeltreiberprotokollierung mit Google Cloud-Funktionen ausgeben.
- Wenn Sie sich das Dokument ansehen, heißt es, dass Sie es mit "Drucken" machen können
- https://cloud.google.com/functions/docs/monitoring/logging?hl=ja#functions-log-helloworld-python
--Aber ich möchte die Protokollstufe einstellen
Was ich getan habe
--Verwenden Sie die Google Cloud-Protokollierung
google-cloud-logging == 1.14.0
zur Anforderung.txt hinzugefügt
# Imports the Google Cloud client library
import logging
from google.cloud import logging as glogging
client = glogging.Client(project=os.environ['PROJECT_ID'])
handler = client.get_default_handler()
cloud_logger = logging.getLogger('cloudLogger')
cloud_logger.setLevel(logging.INFO)
cloud_logger.addHandler(handler)
def test_method(request):
print('== start ==')
try:
cloud_logger.info('Info Message')
cloud_logger.warn('Warn Message')
raise Exception
except Exception:
cloud_logger.error('Error Message')
raise Exception
print('== finish ==')
Ausführen, aber kein Protokoll
»Es kommt nichts heraus.
Ursache (Einbildung)
――Selbst wenn Sie "drucken", ändert sich das Ergebnis nicht ...
- Anscheinend gibt Google Cloud Functions das Protokoll erst dann aus, wenn es abstürzt (= abnormale Beendigung).
- Gibt es irgendwo im Dokument eine Beschreibung ...
- Wenn Sie also eine Ausnahme erhalten, fangen Sie sie ab und ändern Sie sie schließlich in "sys.exit ()"
import sys
#Unterlassung
try:
cloud_logger.info('Info Message')
cloud_logger.warn('Warn Message')
raise Exception
except Exception:
cloud_logger.error('Error Message')
sys.exit()
print('== finish ==')
Wiederholen und Fehler
Failed to submit 3 logs.
google.api_core.exceptions.PermissionDenied: 403 The caller does not have permission
Tona
Dienstkonto für Google Cloud-Funktionen
- In der Dokumentation wird angegeben, dass das Standarddienstkonto für Google Cloud-Funktionen "PROJECT_ID @ appspot.gserviceaccount.com" (App Engine-Standarddienstkonto) lautet. Anscheinend hat er die Rolle des Projekteditors.
- https://cloud.google.com/functions/docs/concepts/iam?hl=ja#runtime_service_account
»Wenn Sie sich SA ansehen, ist so etwas mit Sicherheit geboren.
――Wenn Sie sich Ihre Umgebung ansehen ... Nein!
»Es scheint, dass es aus irgendeinem Grund weg war
Lösung
--Erstellen Sie eine dedizierte SA und verknüpfen Sie sie mit Google Cloud-Funktionen.
――Logs werden jetzt korrekt angezeigt
- Warum sind die Fehlerstufen nur Infos und Fehler ...
Zurückblicken
- Lesen Sie das Dokument richtig
――Ich habe es vielleicht nicht geschrieben
――Erstellen und verwenden Sie eine SA mit den erforderlichen Berechtigungen, ohne die Standard-SA zu verwenden, indem Sie sie seitlich tragen.
--Cloud-Funktionen ** Nicht fallen lassen **. Normal beenden
- Wenn Sie den Betriebsstatus überwachen möchten, überprüfen Sie die Anzahl der Fehlermeldungen im Protokoll anstelle der Anzahl der Fehler (Gibt es nur ...?)