Parce que je devais créer un environnement de développement local pour AWS Lambda sous Windows Je décrirai ma propre procédure de construction sous forme de mémorandum. ** Je voudrais continuer en faisant référence au merveilleux article ** qui peut être facilement construit simplement en le faisant.
Windows10 Pro(1909)
WSL(Ubuntu 18.* LTS)
bash
Docker
Python3.6
Au fait, le contenu de l'article est écrit en supposant bash. Puisque mon environnement est constitué de poissons, l'affichage peut être incorrect. S'il y a quelque chose qui ne va pas, Désolé de vous déranger, mais je vous serais reconnaissant si vous pouviez me le faire savoir dans les commentaires.
Sauf pour "bonus" et "désinstaller" en se référant au merveilleux article ci-dessous
Comment installer / désinstaller WSL
Sauf pour "bonus" et "désinstaller" en se référant au merveilleux article ci-dessous ** Lorsque le bureau docker pour le démon docker Windows est rendu disponible à partir de WSL ** Dans ** Shared Drives **, vérifiez le lecteur contenant votre répertoire de travail local.
Bureau Docker pour Windows + environnement Docker avec WSL
Nous avons préparé un modèle pour la source utilisée dans cet article sur GitHub. Il est publié sous la licence MIT à partir du lien ci-dessous. Sentez-vous libre de l'utiliser.
Télécharger le modèle de code source
Étant donné que la nouvelle fonction Lambda est créée en fonction de la source du modèle, On suppose que les commandes lors de l'exécution de Docker seront toujours constantes. Il est difficile de le saisir à chaque fois, donc enregistrez l'alias dans WSL à l'avance.
Ouvrez .bash_aliases avec vim (créez-en un si non)
~$ sudo vim ~/.bash_aliases && source ~/.bash_aliases
Ajoutez la commande suivante à .bash_aliases
.bash_aliases
alias docrun='docker run -v $(wslpath -m $PWD):/var/task --env-file .env lambci/lambda:python3.6 lambda_function.lambda_handler $(printf "%s" $(cat event.json))'
C'est facile, mais j'expliquerai le contenu de «docrun».
docker run
Créer et exécuter un conteneur à partir d'une image Docker
-v $(wslpath -m $PWD):/var/task
:
** Répertoire du système d'exploitation hôte: le volume est alloué dans le répertoire du conteneur **.
/ var / task
sur le conteneur, vous pouvez voir le répertoire du système d'exploitation hôte spécifié sur la gauche.
Cependant, lorsque vous êtes dans un répertoire local sur WSL/mnt/d/Program/Python/AWS/docker-lambda $ echo $PWD
/mnt/d/Program/Python/AWS/docker-lambda
Donc, pour convertir cela en chemin de l'environnement local
/mnt/d/Program/Python/AWS/docker-lambda $ echo $(wslpath -m $PWD)
D:/Program/Python/AWS/docker-lambda
C'est dit.
--env-file .env
Lisez le fichier de variables d'environnement.
lambci/lambda:python3.6
Une image Docker est spécifiée.
lambda_function.lambda_handler
J'essaye d'exécuter lambda_handler dans lambda_function.py.
$(printf "%s" $(cat event.json))
Nous transmettons le contenu de event.json à l'argument event de lambda_handler.
Windows
Copiez le fichier source du modèle dans votre répertoire de travail. (Ici, il s'agit de D: \ Program \ Python \ AWS \ docker-lambda
.)
WSL
Déplacer vers le répertoire de travail
~$ cd /mnt/d/Program/Python/AWS/docker-lambda/
Exécuter la fonction Lambda
/mnt/d/Program/Python/AWS/docker-lambda $ docrun
START RequestId: c02ba91d-7783-1719-3b5e-269dfb11c807 Version: $LATEST
event:{'Hello': 'World'}
ENV:LOCAL
END RequestId: c02ba91d-7783-1719-3b5e-269dfb11c807
REPORT RequestId: c02ba91d-7783-1719-3b5e-269dfb11c807 Init Duration: 439.63 ms Duration: 4.32 ms Billed Duration: 100 ms Memory Size: 1536 MB Max Memory Used: 39 MB
"{\"message\": \"success\"}"
La première fois que vous l'exécutez, il commence par Pull de l'image Docker. La fonction est exécutée une fois l'extraction terminée, et si l'affichage ci-dessus est affiché, la construction de l'environnement est terminée.
Comment installer / désinstaller WSL Bureau Docker pour Windows + environnement Docker avec WSL Environnement AWS Lambda facile à exécuter avec docker-lambda Je viens de démarrer Docker, je l'ai donc résumé de manière facile à comprendre
Je vais l'expliquer pour que même les débutants puissent le comprendre le plus possible. S'il y a quelque chose qui est difficile à comprendre ou quelque chose ne va pas Je vous serais reconnaissant si vous pouviez commenter.
Recommended Posts