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.
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.
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.
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.
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].
$ chalice local --stage local
Wenn Sie "chalice local" ausführen, geben Sie die definierte Stufe mit der Option "--stage" an.
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