J'écrirai les meilleures pratiques de développement AWS Lambda que je pense avec le développement d'applications Web Java (JavaEE) comme compétence principale, et des conseils sur la création d'un environnement de développement.
J'ai une qualification JavaEE, donc je pense avoir des compétences en programmation, mais je travaille sur AWS Lambda depuis environ un mois. Pour les langages autres que java, le niveau est "Si vous lisez la référence, vous pouvez l'écrire comme ça".
J'ai choisi l'architecture sans serveur d'API Gateway + Lambda + DynamoDB, en fonction de l'application à réaliser. J'ai essayé de me tenter de ne pas m'occuper du serveur.
Pour la gestion du code source, utilisez CodeCommit (git) et résumez-le sur AWS.
Depuis mai 2017, les langages disponibles pour AWS Lambda sont C #, Node.js (JavaScript), Java et Python. De plus, la différence de version n'est pas incluse dans les options car il est reconnu que la différence de spécifications linguistiques n'est pas si grande.
Les critères de sélection sont basés sur la productivité du développement et la facilité de déploiement. (À mon avis)
--Premier de l'histoire du déploiement
Pour C # et Java, téléchargez le fichier binaire avec Zip (il existe également un fichier jar pour Java) ou placez-le dans S3. En plus de ce qui précède, Node.js et Python peuvent être modifiés directement à partir de la console de gestion. (Cela peut être fait parce que la langue est un interprète) Cependant, si Node.js et Python sont modulaires (division de fichiers), ils seront consolidés et téléchargés avec Zip.
Je pense que Node.js et Python sont supérieurs car il est facile de vérifier immédiatement le fonctionnement du codé.
Pour moi en tant que boutique Java, le traitement asynchrone de Node.js coûte beaucoup d'apprentissage. Dès que j'ai commencé à coder, je suis resté coincé dans l'enfer des rappels et je ne pouvais pas écrire de logique métier. C'était très stressant car je ne pouvais pas simplement écrire le processus simple consistant à renvoyer le résultat du traitement dans la fonction en tant que valeur de retour et à poursuivre le traitement de l'appelant.
Ainsi, après l'avoir utilisé pendant un mois, Python est un bon langage en termes de productivité et de déploiement.
Eclipse est le choix pour moi en tant que boutique Java
Il y a un package qui introduit Plugin for Python sur le site Pleiades auquel je suis toujours redevable, donc je vais l'utiliser. Si vous utilisez l'IDE, il est pratique que vous puissiez vérifier la syntaxe même dans le langage d'interprétation et exécuter le programme depuis l'IDE.
Vous pouvez également utiliser AWS Toolkit for Eclipse avec Eclipse. CodeCommit peut également être utilisé à partir de EGit d'Eclipse, vous évitant ainsi d'avoir à préparer d'autres outils.
Si vous l'utilisez dans le cadre libre d'AWS, vous n'avez pas à vous en soucier, je pense que vous pouvez également créer un environnement d'exécution local et le développer sans hésitation.
Les travaux suivants sont nécessaires pour créer l'environnement.
~~ -Pleiades (pour Python) installation ~~ ~~ ⇒ Installer à partir d'ici (http://mergedoc.osdn.jp/) ~~
~~ -Introduction d'AWS Toolkit for Eclipse ~~ ~~ ⇒ Référence (http://docs.aws.amazon.com/ja_jp/toolkit-for-eclipse/v1/user-guide/setup-install.html) ~~
Corrigez la procédure d'installation ci-dessus pour Eclipse et AWS Toolkit for Eclipse. Si vous utilisez Pleiades personnalisé pour Python, vous ne pouvez pas installer le plug-in principal d'AWS Toolkit for Eclipse car il n'y a pas de JDT (outils de développement Java Eclipse).
Voici les étapes que j'ai réellement suivies:
--Introduction d'AWS Toolkit for Eclipse ⇒Référence (http://docs.aws.amazon.com/ja_jp/toolkit-for-eclipse/v1/user-guide/setup-install.html)
Installation de Pydev ⇒ Installez Pydev depuis Eclipse Marketplace --Installez Python 3.6 pour Windows ⇒ Installer à partir d'ici (https://www.python.org/) --Installez boto3 avec pip ⇒Utilisez pip.exe dans le répertoire d'installation de Python. Exécutez la commande suivante à partir de l'invite DOS
>pip install boto3
Placez le boto3 installé via Path afin qu'il puisse être référencé au moment de l'exécution.
--Introduction de DynamoDB Local Sélectionnez "Fenêtre" -> "Paramètres" dans Eclipse avec AWS Toolkit for Eclipse installé Installer à partir de l'outil de test local DynamoDB
En guise de mise en garde, Dynamo DB Local semble avoir une région fixe de us-east-1, il est donc nécessaire de faire correspondre la destination de connexion dynamodb côté programme.
Vous pouvez comprendre que us-east-1 est fixe car Region est ajouté au nom de fichier lorsque vous créez une table.
Donc ~~, modifiez le code source de l'environnement local. ~~ ~~ * C'est un problème lorsqu'il est placé dans un environnement AWS, j'aimerais donc faire quelque chose à ce sujet. ~~ Ce problème a été résolu en utilisant des variables d'environnement. (Merci pour votre commentaire, wukann)
env.py
#Fichier décrivant les paramètres dépendants de l'environnement
import os
import boto3
if os.environ.get('EXEC_ENV') == 'TEST':
#Changer le port de la connexion pour DynamoDB Local
print('Environment is TEST')
dynamodb = boto3.resource('dynamodb', region_name='us-east-1', endpoint_url="http://localhost:8001")
else:
#Connexion lors de l'exécution sur AWS
dynamodb = boto3.resource('dynamodb')
Après cela, nous allons créer un pilote pour exécuter la fonction AWS Lambda, mais comme l'entrée d'API Gateway sera au format JSON, écrivez un pilote qui transmet les paramètres d'entrée au format JSON.
conducteur de gestionnaire
#Dans la variable d'environnement pour renvoyer la connexion DynamoDB'TEST'L'ensemble
import os
os.environ['EXEC_ENV'] = 'TEST'
#Fonction testée
from xxx_function import xxx_function_handler
if __name__ == '__main__':
event = {
"body": "{\"param1\":\"aaaa\",\"param2\":\"bbbb\",\"param3\":\"cccc\"}"
}
result = xxx_function_handler(event ,None)
logger.debug('result{}'.format(result))
Ceci complète l'environnement de développement et l'environnement d'exécution où le test unitaire peut être exécuté localement.
Recommended Posts