Il y a quelque temps, lorsque j'ai créé une API dans un environnement AWS au travail. Possibilité de former un serveur sans serveur qui vous intéressait! J'étais heureux de penser que Il y a eu une période avant le début du développement, alors j'aimerais essayer quelque chose chez moi ... Mais j'ai peur si je charge accidentellement beaucoup lorsque je mets en place un test de charge ... Existe-t-il un moyen de le construire localement? Quand je l'ai cherché, il semblait être là.
Il semble que vous puissiez créer un environnement d'application sans serveur dans un environnement local avec l'AWS SAM CLI. Interface de ligne de commande AWS Serverless Application Model (SAM). Créer, tester et déboguer des applications sans serveur localement](https://aws.amazon.com/jp/blogs/news/aws-serverless-application-model-sam-command-line-interface-build-test- et-debug-serverless-apps-localement /)
Jouons à Hello World localement!
・ Windows10 Famille ・ Docker Toolbox OU Docker pour Windows ・ Python ・ CLI AWS SAM Surface.
Navigateur → API GATEWAY → Lambda (Python)
https://www.python.org/downloads/ Téléchargé depuis python-3.8.1.exe Installez autour. Vérifiez le cercle rouge et mettez-le dans votre PATH.
Vous avez besoin de Docker pour l'exécuter, alors mettez-le dans la boîte à outils Docker! (* Si le système d'exploitation n'est pas à la maison, vous devez installer Docker pour Windows dans cet élément! C'est également facile car je pense que vous pouvez utiliser uniquement le programme d'installation!)
https://github.com/docker/toolbox/releases De DockerToolbox-19.03.1.exe Déposez et installez! (La version de l'exe change en fonction de l'heure.)
Une fois installé
Je pense qu'il y a une telle icône, Si vous l'exécutez et ouvrez un terminal comme celui-ci, l'installation est OK!
Vous pouvez l'installer en appuyant sur une commande, donc Entrons depuis la commande! Ouvrez PowerShell et tapez:
pip install aws-sam-cli
Ensuite, le téléchargement démarre et l'installation est terminée! Ensuite, appuyez sur la commande suivante pour vérifier.
PS C:\> sam --version
SAM CLI, version 0.40.0
Ce n'est pas grave si une version sort comme ça!
Mettons l'exemple d'application dans un dossier approprié.
mkdir C:\Users\Nom d'utilisateur\samtest
cd C:\Users\Nom d'utilisateur\samtest
Créez un dossier comme celui-ci et déplacez-le. (Le nom d'utilisateur est le nom d'utilisateur de connexion) Puis
sam init --runtime python3.7
Exécuter.
Si vous voyez cet affichage, Appuyez sur 1
Project name [sam-app]:
Entrez tel quel
Le suivant est encore 1 L'installation est maintenant terminée!
Dans le dossier précédent sam-app Un dossier a été créé et un exemple de fichier a été créé à l'intérieur. ↓ Affichage de l'arborescence
└─sam-app
│ .gitignore
│ README.md
│ template.yaml
│
├─events
│ event.json
│
├─hello_world
│ app.py
│ requirements.txt
│ __init__.py
│
└─tests
└─unit
test_handler.py
__init__.py
Après avoir confirmé que l'installation est terminée, exécutons un test.
cd sam-app
python -m pip install --upgrade pip
pip install pytest pytest-mock --user
python -m pytest tests/ -v
Mettre à jour pip sur la deuxième ligne, Installer le test sur la ligne 3 Le test est exécuté sur la 4ème ligne. Je pense que le test passera comme ça!
Construisons et exécutons le programme!
sam build --use-container
Une fois construit, HelloWorldFunction sera défini et prêt à fonctionner!
Exécutez l'API localement afin qu'elle soit accessible depuis votre navigateur pour exécuter votre programme!
sam local start-api
Parce qu'un affichage comme celui-ci apparaît
http://127.0.0.1:3000/hello
Vous pouvez voir que vous pouvez accéder!
http://127.0.0.1:3000/hello
Accédons. Le premier peut prendre un certain temps.
Si vous voyez cet affichage, c'est OK!
À ce rythme, il suffit d'exécuter l'exemple de programme Je ne sais pas ce qui se passe, alors je vais juste jouer avec et réessayer!
Arrêtez l'API une fois!
Touche Ctrl+Touche C
Appuyez dessus avec le clavier pour arrêter.
Puis Dans le dossier hello_world Modifiez app.py! (Veuillez modifier avec un éditeur de texte, etc.) Ce fichier est la partie de traitement proprement dite.
import json
# import requests
def lambda_handler(event, context):
"""Sample pure Lambda function
Parameters
----------
event: dict, required
API Gateway Lambda Proxy Input Format
Event doc: https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-lambda-proxy-integrations.html#api-gateway-simple-proxy-for-lambda-input-format
context: object, required
Lambda Context runtime methods and attributes
Context doc: https://docs.aws.amazon.com/lambda/latest/dg/python-context-object.html
Returns
------
API Gateway Lambda Proxy Output Format: dict
Return doc: https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-lambda-proxy-integrations.html
"""
# try:
# ip = requests.get("http://checkip.amazonaws.com/")
# except requests.RequestException as e:
# # Send some context about this error to Lambda Logs
# print(e)
# raise e
#Postscript
Dataout = [{'Données 1': 'Bonjour','Données 2': 'Bonne nuit' , 'cd':'Z01'}]
return {
"statusCode": 200,
"body": json.dumps({
#Récrire"message": "hello world",
"message": Dataout,
# "location": ip.text.replace("\n", "")
}),
}
Ajout de variables Dataout Remplacement de la sortie du message. Merci de sauvegarder!
Reconstruisez et exécutez l'API.
sam build --use-container
sam local start-api
Si vous pouvez le faire, essayez à nouveau d'y accéder.
http://127.0.0.1:3000/hello
Je pense qu'un tel résultat est renvoyé.
{"message": [{"\u30c7\u30fc\u30bf1": "\u306f\u308d\u30fc", "\u30c7\u30fc\u30bf2": "\u304a\u3084\u3059\u307f", "\uff43\uff44": "Z01"}]}
Décodons la chaîne de caractères retournée avec un service comme celui ci-dessous. http://dev.digitra.net/tools/jsonfairing.php Si vous obtenez un tel résultat, vous réussissez!
Vous pouvez maintenant exécuter Hello World et apporter des modifications! Ensuite, j'aimerais connecter DynamoDB à celui que j'ai créé cette fois!
Recommended Posts