Comment déployer Java sur AWS Lambda avec Serverless Framework

Jusqu'à présent, j'ai développé Java dans Eclipse. Cependant, j'ai récemment acheté IntelliJ Idea individuellement, donc j'essaye consciemment de l'utiliser. Cependant, le problème était qu'IntelliJ Idea ne dispose pas d'un plug-in équivalent au "AWS Toolkit" qui existe dans Eclipse. C'était en fait un problème. Ainsi, en utilisant le Serverless Framework que mon voisin a utilisé pour déployer Node.js, je peux désormais déployer des applications Java sur AWS Lambda avec une seule commande sans AWS Toolkit. Faites un article.

Mon environnement d'exécution est le suivant, mais comme il se trouve sous le proxy d'authentification interne, les paramètres liés au proxy sont également inclus dans la procédure. Ceux qui ont abandonné les choses à cause du proxy d'authentification peuvent voir de l'espoir.

environnement
OS Windows10 Pro

Prérequis d'installation(Ce que les développeurs Java ont probablement déjà)
JDK Java8
Apache Maven 3.3.9 * 3 ou version ultérieure, toute version
Java IDE:Ça n'a pas d'importance

installation de nodist

Vous pouvez installer Node.js tel quel, mais Node.js est mis à jour rapidement et il y a un problème de compatibilité selon la version, donc installez et utilisez nodist, ce qui vous permet de gérer facilement la version de Node.js. Téléchargez la dernière version de nodist à partir de ce qui suit. https://github.com/marcelklehr/nodist/releases

image.png

Exécutez l'exe téléchargé pour l'installer. Par défaut, il s'agit de c: \ program files, mais si le répertoire contient des espaces, une erreur peut se produire lors de l'exécution de Serverless Framework, alors changez-le en un emplacement qui n'inclut pas d'espaces, comme directement sous le lecteur C, et installez-le. Je vous recommande de le faire.

Installez Node.js

Définir les paramètres du proxy (uniquement si nécessaire)

Dans mon cas, j'ai un proxy d'authentification dans mon entreprise, alors définissez les valeurs suivantes dans les variables d'environnement.

Nom de variable Valeur variable Remarques
HTTP_PROXY http://[Nom d'utilisateur]:[mot de passe]@nom du serveur:Port -
HTTPS_PROXY http://[Nom d'utilisateur]:[mot de passe]@nom du serveur:Port -

Vérifiez la version de Node.js qui peut être installée

Démarrez l'invite de commande, entrez la commande suivante et appuyez sur Entrée

e:\nodist>nodist dist

La version de Node.js qui peut être installée s'affiche comme indiqué ci-dessous

8.0.0
8.1.0
8.1.1

Spécifiez la version à installer

Installez au format nodist + version.

e:\nodist>nodist + 8.9.0
 8.9.0 [===============] 22436/22436 KiB 100% 0.0s
8.9.0

Sélectionnez le Node.js que vous souhaitez utiliser

e:\nodist>nodist 8.9.0

Installez npm qui correspond à votre Node.js

e:\nodist>nodist npm match
npm match
https://codeload.github.com/npm/npm/tar.gz/v5.5.1 [===========    ] 4309/5752 KiB 75% 5.0s

e:\nodist>npm -v
5.5.1

Installer une infrastructure sans serveur

Maintenant que Node.js et npm ont été installés, installez le Framework Serverless préféré. Entrez npm install -g serverless pour installer le Framework sans serveur sur votre PC local.

e:\nodist>npm install -g serverless

e:\Nodist\bin\serverless -> e:\Nodist\bin\node_modules\serverless\bin\serverless
e:\Nodist\bin\sls -> e:\Nodist\bin\node_modules\serverless\bin\serverless
e:\Nodist\bin\slss -> e:\Nodist\bin\node_modules\serverless\bin\serverless
npm WARN lifecycle The node binary used for scripts is e:\Nodist\bin\node.exe but npm is using e:\Nodist\v-x64\8.9.0\node.exe itself. Use the `--scripts-prepend-node-path` option to include the path for the node binary npm was executed with.
> [email protected] postinstall e:\Nodist\bin\node_modules\serverless\node_modules\spawn-sync
> node postinstall
> [email protected] postinstall e:\Nodist\bin\node_modules\serverless
> node ./scripts/postinstall.js
+ [email protected]
added 251 packages in 177.711s

Installation et configuration de l'AWS CLI

Le Serverless Framework utilise l'AWS CLI en interne, donc installez l'AWS CLI ici. Téléchargez le fichier d'installation à partir du site suivant et installez-le. https://aws.amazon.com/jp/powershell/

Après l'installation, démarrez PowerShell en tant qu'administrateur et exécutez ʻaws configure`. Prédéfinissez les valeurs utilisées pour le téléchargement AWS Lambda. Si la valeur a déjà été définie, elle sera écrite comme [**** BG4A] comme indiqué ci-dessous, et si vous ne souhaitez pas la modifier, vous pouvez éviter d'entrer l'élément en appuyant sur la touche Entrée sans le saisir.

PS E:\awscli> aws configure
AWS Access Key ID [****************BG4A]:Saisissez votre ID de clé d'accès AWS et appuyez sur Entrée
AWS Secret Access Key [****************BsCe]:Saisissez votre clé d'accès secrète AWS et appuyez sur Entrée
Default region name [us-west-2]: us-east-1
Default output format [None]: json

L'ID de clé d'accès AWS et la clé d'accès secrète AWS peuvent être émis à partir de l'URL AWS suivante. Il est seulement nécessaire d'avoir l'autorisation d'accéder à tous les services avec l'autorité d'administrateur, mais sinon, demandez à l'administrateur d'accorder correctement l'autorité. https://console.aws.amazon.com/iam/home?#/users

Création d'applications Java

Générez automatiquement un répertoire de développement Java à l'aide de Serverless Framework

Créez un répertoire approprié, accédez à ce répertoire, entrez serverless create --template aws-java-maven, et appuyez sur la touche Entrée.

E:\>cd workspace
E:\workspace>mkdir serverlesssample
E:\workspace>cd serverlesssample
E:\workspace\serverlesssample>serverless create --template aws-java-maven
Serverless: Generating boilerplate...
 _______                             __
|   _   .-----.----.--.--.-----.----|  .-----.-----.-----.
|   |___|  -__|   _|  |  |  -__|   _|  |  -__|__ --|__ --|
|____   |_____|__|  \___/|_____|__| |__|_____|_____|_____|
|   |   |             The Serverless Application Framework
|       |                           serverless.com, v1.23.0
 -------'

Serverless: Successfully generated boilerplate for template: "aws-java-maven"
Serverless: NOTE: Please update the "service" property in serverless.yml with your service name

Configurer un proxy d'authentification pour la construction (uniquement si nécessaire)

Si un PC existe sous le proxy d'authentification, une erreur de connexion se produira lors de la construction, entrez donc le nom d'hôte, le port, l'ID et le mot de passe au format suivant dans maven settings.xml. Enregistrez à la fois HTTP et HTTPS.

settings.xml


<proxies>
 <proxy>
   <id>optional-1</id>
   <active>true</active>
   <protocol>http</protocol>
   <host>nom d'hôte</host>
   <port>Port</port>
   <username>ID</username>
   <password>mot de passe</password>
   <nonProxyHosts>localhost</nonProxyHosts>
 </proxy>
 <proxy>
   <id>optional-2</id>
   <active>true</active>
   <protocol>https</protocol>
   <host>nom d'hôte</host>
   <port>Port</port>
   <username>ID</username>
   <password>mot de passe</password>
   <nonProxyHosts>localhost</nonProxyHosts>
 </proxy>
</proxies> 

Emballage de fichier Jar

Le fichier jar que vous téléchargez sur AWS Lambda doit être consolidé, y compris les fichiers JAR dépendants. Par conséquent, décrivez le plugin suivant dans pom.xml.

pom.xml


       <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-shade-plugin</artifactId>
          <version>2.3</version>
          <configuration>
            <createDependencyReducedPom>false</createDependencyReducedPom>
          </configuration>
          <executions>
            <execution>
              <phase>package</phase>
              <goals>
                <goal>shade</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
      </plugins>

Ensuite, à partir de l'invite DOS, accédez au répertoire où se trouve pom.xml et exécutez mvn package ombre: ombre.

E:\workspace\serverlesssample>mvn package shade:shade

Si la construction et l'empaquetage réussissent, un fichier jar sera généré sous le répertoire cible.

Déployer sur AWS Lambda

Modifier serverless.yml

Afin de déployer en utilisant le framework sans serveur, il est nécessaire de modifier partiellement serverless.yml. Étant donné que les valeurs définies dans l'AWS CLI sont utilisées pour la région à publier et l'ID utilisé pour le déploiement, il n'est pas nécessaire de modifier le fichier de paramètres. Dans le cas d'une application rudimentaire, elle semble fonctionner avec la définition suivante.

serverless.yml


service: sevice-name  #Décidez et décrivez vous-même le nom du service

provider:
  name: aws
  runtime: java8
  stage: prod

package:
  artifact: target/alexa-skills-kit-samples-1.0.jar #Définissez le pot généré par la procédure ci-dessus

functions:
  AlexaSkillsRecipe: #Décrivez le nom de la fonction
    handler: jp.co.saison.lambda.alexa.recipe.RecipeSpeechletRequestStreamHandler #Décrivez le gestionnaire, y compris le package

environment: #Décrivez la clé et la valeur des éléments que vous souhaitez définir dans la variable d'environnement lambda
  ALEXA_APP_ID: ******
  RAKUTEN_APP_ID: *******

Déployer avec Serverless

Démarrez PowerShell en tant qu'administrateur et accédez au répertoire où se trouve serverless.yml. L'exécution de serverless deploy -v déploiera le fichier jar cible sur AWS Lambda.

E:\workspace\serverlesssample>serverless deploy -v
Serverless: Packaging service...
Serverless: Uploading CloudFormation file to S3...
Serverless: Uploading artifacts...
Serverless: Validating template...
Serverless: Updating Stack...
Serverless: Checking Stack update progress...
CloudFormation - UPDATE_IN_PROGRESS - AWS::CloudFormation::Stack - 
CloudFormation - UPDATE_IN_PROGRESS - AWS::Lambda::Function - 
CloudFormation - UPDATE_COMPLETE - AWS::Lambda::Function - 
CloudFormation - UPDATE_COMPLETE_CLEANUP_IN_PROGRESS - AWS::CloudFormation:
CloudFormation - UPDATE_COMPLETE - AWS::CloudFormation::Stack - arima-prod

Vérification de lambda sur AWS

Vous pouvez vérifier si le déploiement a été effectué correctement en recherchant par le nom de la fonction Lambda à partir de l'URL suivante. https://console.aws.amazon.com/lambda/

Voici comment déployer une application Java à l'aide de Serverless Framework. AWS Lambda a déjà de nombreuses utilisations. Les livres suivants sont relativement nouveaux et pratiques, je vous recommande donc de découvrir quel type d'utilisation est efficace. Pratiquez AWS Lambda ~ Nouvelle plate-forme d'application qui réalise "sans serveur" ~

Recommended Posts

Comment déployer Java sur AWS Lambda avec Serverless Framework
Comment utiliser le framework Java avec AWS Lambda! ??
Comment utiliser l'API Java avec des expressions lambda
Comment utiliser les expressions Java lambda
Comment déployer une application kotlin (java) sur AWS Fargate
Comment compiler Java avec VsCode & Ant
[Java] Résumez comment comparer avec la méthode equals
Comment utiliser BootStrap avec Play Framework
AWS Lambda (Lambda) Partie 1 avec Java pour démarrer maintenant
Vous pouvez le faire tout de suite avec Serverless Framework Serverless with AWS (API + Lambda [java] est facile à configurer)
Comment déployer sur AWS à l'aide de NUXTJS S3 et CloudFront officiels? Avec docker-compose
Premiers pas avec Micronaut 2.x ~ Construction native et déploiement sur AWS Lambda ~
[Java] Comment tester s'il est nul dans JUnit
Déployez des applications Web Java sur Azure avec maven
[Java] Résumé de la façon d'omettre les expressions lambda
Déployer des rails sur ECS Fargate avec AWS Copilot
Comment déployer un système réalisé avec Java (démarrage Wicket-Spring) sur le serveur du campus
Comment appeler des fonctions en bloc avec la réflexion Java
Soumettre une tâche à AWS Batch avec Java (Eclipse)
[Java] Comment omettre l'injection de constructeur de ressort avec Lombok
[Java] Comment chiffrer avec le chiffrement AES avec une bibliothèque standard
Comment créer un environnement de développement Java avec VS Code
[Java] Comment rompre une ligne avec StringBuilder
Commencez avec Java sans serveur avec le framework léger Micronaut!
Utiliser des couches Lambda avec Java
Comment abaisser la version java
[Java] Comment utiliser Map
Comment désinstaller Java 8 (Mac)
Java pour jouer avec Function
Java - Comment créer JTable
Comment utiliser java Facultatif
Comment déployer avec heroku
Comment réduire les images Java
Comment rédiger un commentaire java
Comment utiliser la classe Java
[Java] Comment utiliser removeAll ()
[Java] Comment afficher les Wingdings
[Java] Introduction à l'expression lambda
Comment numéroter (nombre) avec html.erb
Comment utiliser Java Map
Comment mettre à jour avec activerecord-import
Comment définir des constantes Java
Connectez-vous à DB avec Java
Connectez-vous à MySQL 8 avec Java
Comment utiliser les variables Java
Créez AWS Lambda avec Quarkus
Comment convertir la base Java
[Java] Comment implémenter le multithreading
Comment initialiser un tableau Java
Comment inverser la compilation du fichier apk en code source Java avec MAC
Modèle de framework sans serveur pour planifier le démarrage / l'arrêt d'EC2 dans Lambda
Comment utiliser le modèle entraîné Tensorflow 2.0 avec Kotlin / Java
Publiez régulièrement des images de tweets sur Twitter avec AWS Lambda + Java