Procédure d'installation et utilisation d'outils qui peuvent développer, exécuter et déployer lambda sur des machines distantes. Utilisez le pip [lambda-uploader] de python (https://github.com/rackerlabs/lambda-uploader).
Vois ici python (pyenv + virtualenv) + mémo d'installation CentOS7
$ pip install lambda-uploader
Installer car aws-cli est également utilisé
$ pip install awscli
Enregistrez les informations d'identification AWS avec la commande suivante.
$ aws configure --profile dev
AWS Access Key ID [None]: {Your Access Key Id}
AWS Secret Access Key [None]: {Your Secret Access Key}
Default region name [None]: ap-northeast-1
Default output format [None]: json
Créez un fichier avec la configuration de répertoire ci-dessous.
|- ~/lambda-uploader/
|- bin/
└ lambda-exec
|- sample-api/ #Tout nom peut être utilisé Un répertoire pour chaque fonction lambda
└ requirements.txt
└ lambda.json
└ index.py
└ event.json
Il n'est pas nécessaire que ce soit cette configuration,
Ces quatre fichiers sont toujours requis pour chaque fonction et ces quatre doivent être dans la même hiérarchie.
~/lambda-uploader/bin/lambda-exec
Un script pour exécuter lambda dans un environnement distant. La commande aws étant longue, créez-la avec le contenu suivant afin qu'elle puisse être facilement exécutée.
#!/bin/bash
FUNCTION_NAME=$1
EVENT_JSON=$2
echo ${FUNCTION_NAME}
echo ${EVENT_JSON}
aws lambda invoke \
--invocation-type RequestResponse \
--function-name ${FUNCTION_NAME} \
--payload file://${EVENT_JSON} \
/tmp/lambda_outputfile.txt
echo ''
echo '[result]'
cat /tmp/lambda_outputfile.txt
echo ''
Accorder l'autorisation d'exécution
$ chmod +x ~/lambda-uploader/bin/lambda-exec
Ajoutez ce qui suit à bash_profile pour passer le PATH
$ vi ~/.bash_profile
export PATH=$PATH:"$HOME/lambda-uploader/bin"
Appliquer les modifications
$ source ~/.bash_profile
~/lambda-uploader/sample-api/requirements.txt
Un fichier contenant une liste de modules pip. Générez avec la commande suivante.
$ pip freeze > requirements.txt
~/lambda-uploader/sample-api/lambda.json
fichier de configuration lambda. Décrivez ici le nom de la fonction, etc.
{
"name": "{Nom de la fonction lambda}",
"description": "{Description de la fonction lambda}",
"region": "ap-northeast-1",
"handler": "index.lambda_handler",
"role": "arn:aws:iam::123456789012:role/role-name",
"timeout": 300,
"memory": 128
}
handler signifie que la fonction lambda_handler de index.py est exécutée dans l'exemple ci-dessus.
Pour le rôle, définissez arn du rôle d'exécution de la fonction Lambda. Il est nécessaire de créer un rôle distinct à l'avance.
Pour référence, lorsque j'ai créé Lambda qui fonctionne avec API Gateway, SQS et SNS, j'ai donné les autorisations suivantes au rôle IAM.
~/lambda-uploader/sample-api/index.py
Créez une fonction Lambda. Vous trouverez ci-dessous un exemple qui ne fait que recevoir et renvoyer une demande POST.
# -*- coding:utf-8 -*-
def lambda_handler(event, context):
text = '%s is %s years old.' %(event['name'], event['age'])
return text
~/lambda-uploader/sample-api/event.json
Définit le contenu de la requête POST à effectuer lors du test. (Vide est OK pour tester les requêtes GET)
{
"name" : "Michael",
"age" : "30"
}
Déployez la fonction lambda sur AWS. Accédez au répertoire contenant lambda.json, index.py, etc. et exécutez la commande deploy.
$ cd ~/lambda-uploader/sample-api
Déployer la commande
$ lambda-uploader
Exécutez la fonction lambda dans l'environnement distant. Il doit d'abord être déployé sur AWS pour fonctionner. Encore une fois, allez dans le répertoire où se trouvent lambda.json, index.py, etc. et exécutez-le.
$ cd ~/lambda-uploader/sample-api
Exécutez avec la commande suivante Spécifiez le nom de la fonction Lambda dans le premier argument et le fichier event.json dans le deuxième argument.
$ lambda-exec {Nom de la fonction Lambda} event.json
Si la réponse suivante est renvoyée, elle réussit.
sample-api
event.json
{
"StatusCode": 200
}
[result]
"Michael is 30 years old."
c'est tout
Déployer AWS Lambda Python avec lambda-uploader
Recommended Posts