Backgroud J'ai eu plus d'occasions d'entendre parler des applications sans serveur utilisant AWS Lambda, alors j'ai essayé de le créer.
Preparetion
↓ ↓import json
def lambda_handler(event, context):
request = "[inner_test]"
num = 30
doc = {
"message":'Hello from Lambda!',
"request":process(num)
}
# TODO implement
return {
'statusCode': 200,
'body': json.dumps(doc)
}
def process(src):
if src % 15 == 0:
return "FizzBuzz"
elif src % 5 == 0:
return "Buzz"
elif src % 3 == 0:
return "Fizz"
else :
return src
Après avoir écrit, appuyez sur "Déployer" -> "Test".
Ensuite ... Le résultat de l'exécution est sorti sous forme de journal.
Development (with API Gateway) La configuration précédente n'était que lambda, mais ici je vais faire une demande de l'extérieur en utilisant API Gateway.
Tout d'abord, sélectionnez API Gateway à partir du déclencheur. La sécurité est votre choix.
Sélectionnez "Stage" -> "POST" pour obtenir l'URL.
La structure de l'URL elle-même est https: // {restapi_id} .execute-api. {Region} .amazonaws.com / {stage_name} /
Alors, récupérez la valeur demandée par lambda et FizzBuzz. Parlant en base de code, event [" body "]
est analysé avec json pour obtenir la valeur d'entrée.
import json
def lambda_handler(event, context):
request = "[inner_test]"
num = 30
#Prend en charge la passerelle API
#Obtenez la valeur de la demande ici
if "body" in event.keys():
request = json.loads(event["body"])
num = request["num"]
doc = {
"message":'Hello from Lambda!',
"request":process(num)
}
# TODO implement
return {
'statusCode': 200,
'body': json.dumps(doc)
}
def process(src):
if src % 15 == 0:
return "FizzBuzz"
elif src % 5 == 0:
return "Buzz"
elif src % 3 == 0:
return "Fizz"
else :
return src
Essayez de frapper l'API en utilisant Postman pour voir si la valeur fizzbuzz est réellement renvoyée.
Si vous modifiez la valeur de num
, soit Fizz``Buzz`` FizzBuzz
, soit un nombre sera renvoyé.
C'est fait.
Future J'ai pensé qu'il serait bon d'utiliser le VPS minimum et de supprimer les paquets nécessaires sans dire sans serveur, mais j'ai pu le faire en un rien de temps. Si vous créez un lien avec S3 après le traitement lambda, il semble que vous puissiez laisser les données.