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
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
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.
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 | - |
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
Installez au format nodist + version
.
e:\nodist>nodist + 8.9.0
8.9.0 [===============] 22436/22436 KiB 100% 0.0s
8.9.0
e:\nodist>nodist 8.9.0
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
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
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é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
serverless.yml
généré ci-dessus et le placer dans le même répertoire que pom.xml.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>
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.
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é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
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