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
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
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.
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 | - |
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
Installieren Sie im 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
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
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
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
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>
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.
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: *******
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
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