So stellen Sie Java mit Serverless Framework für AWS Lambda bereit

Ich habe bisher Java in Eclipse entwickelt. Ich habe IntelliJ Idea jedoch kürzlich einzeln gekauft, daher versuche ich bewusst, es zu verwenden. Das Problem war jedoch, dass IntelliJ Idea kein Plug-In hatte, das dem in Eclipse vorhandenen "AWS Toolkit" entspricht. Das war eigentlich ein Problem. Mit dem Serverless Framework, mit dem mein Nachbar Node.js bereitgestellt hat, kann ich jetzt Java-Anwendungen mit einem einzigen Befehl ohne das AWS Toolkit für AWS Lambda bereitstellen. Mach einen Artikel.

Meine Ausführungsumgebung sieht wie folgt aus, aber da sie sich unter dem internen Authentifizierungs-Proxy befindet, sind die Einstellungen für den Proxy ebenfalls in der Prozedur enthalten. Diejenigen, die Dinge wegen des Authentifizierungs-Proxys aufgegeben haben, können Hoffnung sehen.

Umgebung
OS Windows10 Pro

Installationsvoraussetzungen(Was Java-Entwickler wohl schon haben)
JDK Java8
Apache Maven 3.3.9 * 3 oder höher, jede Version
Java IDE:Es spielt keine Rolle

Installation von Nodist

Sie können Node.js so installieren, wie es ist. Da Node.js jedoch schnell aktualisiert wird und je nach Version ein Kompatibilitätsproblem auftritt, installieren und verwenden Sie nodist, was eine einfache Versionsverwaltung von Node.js ermöglicht. Laden Sie die neueste Version von nodist von den folgenden herunter. https://github.com/marcelklehr/nodist/releases

image.png

Führen Sie die heruntergeladene Exe aus, um sie zu installieren. Standardmäßig ist es "c: \ Programme". Wenn das Verzeichnis jedoch Leerzeichen enthält, kann beim Ausführen von Serverless Framework ein Fehler auftreten. Ändern Sie es daher in einen Speicherort ohne Leerzeichen, z. B. direkt unter dem Laufwerk C, und installieren Sie es. Ich empfehle Ihnen, es zu tun.

Installieren Sie Node.js.

Proxy-Einstellungen festlegen (nur bei Bedarf)

In meinem Fall habe ich einen Authentifizierungs-Proxy in meinem Unternehmen. Legen Sie daher die folgenden Werte in den Umgebungsvariablen fest.

Variablennamen Variabler Wert Bemerkungen
HTTP_PROXY http://[Nutzername]:[Passwort]@Servername:Hafen -
HTTPS_PROXY http://[Nutzername]:[Passwort]@Servername:Hafen -

Überprüfen Sie die Version von Node.js, die installiert werden kann

Starten Sie die Eingabeaufforderung, geben Sie den folgenden Befehl ein und drücken Sie die Eingabetaste

e:\nodist>nodist dist

Die Version von Node.js, die installiert werden kann, wird wie unten gezeigt angezeigt

8.0.0
8.1.0
8.1.1

Geben Sie die zu installierende Version an

Installieren Sie im Format nodist + version.

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

Wählen Sie die Node.js aus, die Sie verwenden möchten

e:\nodist>nodist 8.9.0

Installieren Sie npm, das Ihren Node.js entspricht

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

Installieren Sie Serverless Framework

Nachdem Node.js und npm installiert wurden, installieren Sie das bevorzugte Serverless Framework. Geben Sie "npm install -g serverless" ein, um das Serverless Framework auf Ihrem lokalen PC zu installieren.

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 und Einrichtung der AWS CLI

Das Serverless Framework verwendet die AWS CLI intern. Installieren Sie daher die AWS CLI hier. Laden Sie die Installationsdatei von der folgenden Site herunter und installieren Sie sie. https://aws.amazon.com/jp/powershell/

Starten Sie nach der Installation Powershell als Administrator und führen Sie "aws configure" aus. Definieren Sie die Werte vor, die für den AWS Lambda-Upload verwendet werden sollen. Wenn der Wert bereits festgelegt wurde, wird er wie unten gezeigt als [**** BG4A] geschrieben. Wenn Sie ihn nicht ändern möchten, können Sie die Eingabe des Elements vermeiden, indem Sie die Eingabetaste drücken, ohne ihn einzugeben.

PS E:\awscli> aws configure
AWS Access Key ID [****************BG4A]:Geben Sie Ihre AWS Access Key ID ein und drücken Sie die Eingabetaste
AWS Secret Access Key [****************BsCe]:Geben Sie Ihren AWS Secret Access Key ein und drücken Sie die Eingabetaste
Default region name [us-west-2]: us-east-1
Default output format [None]: json

Die AWS Access Key ID und der AWS Secret Access Key können über die folgende AWS-URL ausgegeben werden. Es ist nur erforderlich, über die Berechtigung zum Zugriff auf alle Dienste mit Administratorberechtigung zu verfügen. Wenn dies nicht der Fall ist, bitten Sie den Administrator, die Berechtigung ordnungsgemäß zu erteilen. https://console.aws.amazon.com/iam/home?#/users

Erstellung von Java-Anwendungen

Generieren Sie automatisch ein Java-Entwicklungsverzeichnis mit dem Serverless Framework

Erstellen Sie ein geeignetes Verzeichnis, wechseln Sie in dieses Verzeichnis, geben Sie "serverless create --template aws-java-maven" ein und drücken Sie die Eingabetaste.

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

Richten Sie einen Authentifizierungsproxy für den Build ein (nur bei Bedarf).

Wenn unter dem Authentifizierungsproxy ein PC vorhanden ist, tritt während der Erstellung ein Verbindungsfehler auf. Geben Sie daher den Hostnamen, den Port, die ID und das Kennwort im folgenden Format in die Datei maven settings.xml ein. Registrieren Sie sowohl HTTP als auch HTTPS.

settings.xml


<proxies>
 <proxy>
   <id>optional-1</id>
   <active>true</active>
   <protocol>http</protocol>
   <host>Hostname</host>
   <port>Hafen</port>
   <username>ID</username>
   <password>Passwort</password>
   <nonProxyHosts>localhost</nonProxyHosts>
 </proxy>
 <proxy>
   <id>optional-2</id>
   <active>true</active>
   <protocol>https</protocol>
   <host>Hostname</host>
   <port>Hafen</port>
   <username>ID</username>
   <password>Passwort</password>
   <nonProxyHosts>localhost</nonProxyHosts>
 </proxy>
</proxies> 

Jar File Verpackung

Die JAR-Datei, die Sie in AWS Lambda hochladen, muss konsolidiert werden, einschließlich der abhängigen Jars. Beschreiben Sie daher das folgende Plugin in 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>

Wechseln Sie dann an der DOS-Eingabeaufforderung in das Verzeichnis, in dem pom.xml vorhanden ist, und führen Sie "mvn package shadow: shadow" aus.

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

Wenn der Build und das Packen erfolgreich sind, wird eine JAR-Datei unter dem Zielverzeichnis generiert.

Bereitstellung bei AWS Lambda

Ändern Sie serverless.yml

Für die Bereitstellung mit dem serverlosen Framework muss "serverless.yml" teilweise geändert werden. Da die in der AWS-CLI festgelegten Werte für die freizugebende Region und die für die Bereitstellung verwendete ID verwendet werden, muss die Einstellungsdatei nicht geändert werden. Im Fall einer rudimentären Anwendung scheint es mit der folgenden Definition zu funktionieren.

serverless.yml


service: sevice-name  #Entscheiden und beschreiben Sie den Servicenamen selbst

provider:
  name: aws
  runtime: java8
  stage: prod

package:
  artifact: target/alexa-skills-kit-samples-1.0.jar #Definieren Sie das durch das obige Verfahren erzeugte Glas

functions:
  AlexaSkillsRecipe: #Beschreiben Sie den Funktionsnamen
    handler: jp.co.saison.lambda.alexa.recipe.RecipeSpeechletRequestStreamHandler #Beschreiben Sie den Handler einschließlich des Pakets

environment: #Beschreiben Sie den Schlüssel und den Wert der Elemente, die Sie in der Lambda-Umgebungsvariablen festlegen möchten
  ALEXA_APP_ID: ******
  RAKUTEN_APP_ID: *******

Bereitstellung mit Serverless

Starten Sie PowerShell als Administrator und wechseln Sie in das Verzeichnis, in dem sich serverless.yml befindet. Wenn Sie "serverless deploy -v" ausführen, wird das Ziel-JAR für AWS Lambda bereitgestellt.

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

Lambda auf AWS prüfen

Sie können überprüfen, ob die Bereitstellung korrekt durchgeführt wurde, indem Sie anhand der folgenden URL nach dem Namen der Lambda-Funktion suchen. https://console.aws.amazon.com/lambda/

Im Folgenden wird beschrieben, wie Sie eine Java-Anwendung mit dem Serverless Framework bereitstellen. AWS Lambda hat bereits viele Verwendungsmöglichkeiten. Die folgenden Bücher sind relativ neu und praktisch. Ich empfehle Ihnen daher, herauszufinden, welche Art der Verwendung effektiv ist. AWS Lambda üben ~ Neue Anwendungsplattform, die "serverlos" realisiert ~

Recommended Posts

So stellen Sie Java mit Serverless Framework für AWS Lambda bereit
Verwendung des Java-Frameworks mit AWS Lambda! ??
Verwendung der Java-API mit Lambda-Ausdrücken
Verwendung von Java-Lambda-Ausdrücken
So stellen Sie eine Kotlin (Java) -App auf AWS fargate bereit
So kompilieren Sie Java mit VsCode & Ant
[Java] Fassen Sie zusammen, wie Sie mit der Methode equals vergleichen können
Verwendung von BootStrap mit Play Framework
AWS Lambda (Lambda) Teil 1 mit Java startet jetzt
Sie können dies sofort mit Serverless Framework Serverless mit AWS tun (API + Lambda [Java] ist einfach einzurichten).
Wie kann ich mit NUXTJS Official S3 und CloudFront für AWS bereitstellen? Mit Docker-Compose
Erste Schritte mit Micronaut 2.x ~ Native Build und Bereitstellung für AWS Lambda ~
[Java] So testen Sie, ob es in JUnit null ist
Stellen Sie Java-Webanwendungen mit maven in Azure bereit
[Java] Zusammenfassung, wie Lambda-Ausdrücke weggelassen werden
Stellen Sie Rails mit AWS Copilot für ECS Fargate bereit
So stellen Sie ein mit Java erstelltes System (Wicket-Spring-Boot) auf dem Campus-Server bereit
Aufrufen von Funktionen in großen Mengen mit Java Reflection
Senden Sie einen Job an AWS Batch mit Java (Eclipse)
[Java] So lassen Sie die Federkonstruktorinjektion mit Lombok weg
[Java] Verschlüsselung mit AES-Verschlüsselung mit Standardbibliothek
So erstellen Sie eine Java-Entwicklungsumgebung mit VS Code
[Java] So unterbrechen Sie eine Zeile mit StringBuilder
Beginnen Sie mit serverlosem Java mit dem leichtgewichtigen Framework Micronaut!
Verwenden Sie Lambda-Ebenen mit Java
So senken Sie die Java-Version
[Java] Verwendung von Map
So deinstallieren Sie Java 8 (Mac)
Java zum Spielen mit Function
Java - So erstellen Sie JTable
Verwendung von Java Optional
Wie man mit Heroku einsetzt
So minimieren Sie Java-Images
Wie schreibe ich einen Java-Kommentar
Verwendung der Java-Klasse
[Java] Verwendung von removeAll ()
[Java] So zeigen Sie Wingdings an
[Java] Einführung in den Lambda-Ausdruck
Wie man mit html.erb nummeriert (nummeriert)
Verwendung von Java Map
So aktualisieren Sie mit activerecord-import
So legen Sie Java-Konstanten fest
Stellen Sie mit Java eine Verbindung zur Datenbank her
Stellen Sie mit Java eine Verbindung zu MySQL 8 her
Verwendung von Java-Variablen
Erstellen Sie AWS Lambda mit Quarkus
So konvertieren Sie Java Base
[Java] So implementieren Sie Multithreading
So initialisieren Sie ein Java-Array
So kehren Sie die Kompilierung der Apk-Datei in Java-Quellcode mit MAC um
Serverless Framework-Vorlage zum Planen des EC2-Starts / Stopps in Lambda
Verwendung des mit Tensorflow 2.0 trainierten Modells mit Kotlin / Java
Veröffentlichen Sie regelmäßig Bild-Tweets auf Twitter mit AWS Lambda + Java