[PYTHON] Stellen Sie fest, ob AWS Chalice ein lokaler Kelch ist

Einführung

WEB-Dienst unter Verwendung von API Gateway und Lambda unter AWS AWS Chalice, ein Python-Framework, das beim Erstellen hilfreich ist. Einer der praktischen Punkte ist, dass mit einem einzigen Befehl "chalice local" ein WEB-Server auf Ihrem PC (lokal) gestartet wird und dasselbe, das unter AWS ausgeführt wird, ausgeführt wird [^ 1]. Testen und Debuggen ist wahnsinnig schnell.

Aufgabe

Es ist ein praktischer "Kelch lokal", aber es schien keinen direkten Weg zu geben, um festzustellen, dass er lokal mit Code ausgeführt wurde, also dachte ich darüber nach.

Lösungen

Sie können es tun mit: Nutzen Sie Umgebungsvariablen [^ 3].

Auf diese Weise kann der Code feststellen, ob es sich um einen "Kelch lokal" handelt (der lokal ausgeführt wird), indem überprüft wird, ob Umgebungsvariablen vorhanden sind.

Beispiel

Einstellungsdatei

config.json


{
  "version": "2.0",
  "app_name": "testapp",
  "environment_variables": {
  },
  "stages": {
    "dev": {
      "api_gateway_stage": "api"
    },
    "local": {
      "environment_variables": {
        "IS_LOCAL": "true"
      }
    }
  }
}

Eine Umgebungsvariable namens "IS_LOCAL" wird in der Stufe "local" gesetzt.

Code body

app.Ein Teil von py


import logging
import os

# setup logger
logger = logging.getLogger()
logger.setLevel(logging.INFO)
logformat = (
    '[%(levelname)s] %(asctime)s.%(msecs)dZ (%(aws_request_id)s) '
    '%(filename)s:%(funcName)s[%(lineno)d] %(message)s'
)
if os.environ.get('IS_LOCAL'):
    logformat = (
        '[%(levelname)s] %(asctime)s.%(msecs)dZ '
        '%(filename)s:%(funcName)s[%(lineno)d] %(message)s'
    )
formatter = logging.Formatter(logformat, '%Y-%m-%dT%H:%M:%S')
for handler in logger.handlers:
    handler.setFormatter(formatter)

Ich ändere das Protokollformat, wenn ich unter AWS und lokal ausgeführt werde [^ 2].

Ausführungsmethode

$ chalice local --stage local

Wenn Sie "chalice local" ausführen, geben Sie die definierte Stufe mit der Option "--stage" an.

abschließend

Bei dieser Methode ist es nicht gut, dass Sie immer die Option "--stage" zu "chalice local" hinzufügen müssen, aber ich verwende sie, da das Problem sicherlich gelöst wurde.

Recommended Posts

Stellen Sie fest, ob AWS Chalice ein lokaler Kelch ist
Stellen Sie fest, ob die Zeichenfolge formatierbar ist
Stellen Sie fest, ob die Bibliothek installiert ist.
Stellen Sie fest, ob die Goldmünze echt ist
Bestimmen Sie, ob im Objekt ein Attribut definiert ist
Ich habe AWS Chalice berührt
Bestimmen Sie, ob die Zeichenfolge Zeit mit einem regulären Python-Ausdruck ist
Ich habe versucht, AWS Chalice zu verwenden
Stellen Sie fest, ob beim Ausführen eines Python-Skripts eine Standardausgabe weitergeleitet wird