Dieser Artikel erinnert mich daran, was ich vor dem Einfügen des S3-Objekts in die EC2-Datenbank (SQL Server) mit Lambda @ java getan habe. Bitte weisen Sie auf andere Lösungen hin.
1: AWS Edition 2: Java-Teil [Teil 1] <Hauptteil 3: Java [Teil 2] 3.5: Java Edition [Fortsetzung] Es wird sein.
Das Folgende ist eine Fortsetzung der vorherigen, nachdem die EC2-Instanz erstellt wurde.
Eclipse ist eine der von IBM entwickelten integrierten Entwicklungsumgebungen (IDE). Es ist hochfunktional und dennoch Open Source und unterstützt mehrere Sprachen, einschließlich Java. Eclipse selbst ist in Java geschrieben.
Hinweis) Da es bereits für geschäftliche Zwecke installiert wurde, wird angenommen, dass die Version von Eclipse in diesem Artikel Oxygen.3a Release (4.7.3a) ist. Wenn Sie eine andere Version verwenden möchten, laden Sie diese bitte von https://www.eclipse.org/downloads/ herunter. Folgen Sie auch dem Assistenten, um die Eclipse-Installation entsprechend anzupassen.
Nachdem die Installation von Eclipse abgeschlossen ist, starten Sie sie und wählen Sie [Datei] -> [Neu] -> [Maven-Projekt], um ein Projekt zu erstellen.
Wählen Sie [Weiter], um einen neuen Assistenten anzuzeigen. Geben Sie die "Artefakt-ID" und "Gruppen-ID" ein. Das folgende Bild zeigt die Details der Artefakt-ID und der Gruppen-ID.
Gruppen-ID: Geben Sie dem Projekt einen eindeutig identifizierbaren Namen. Artefakt-ID: Der Verpackungsname des Projekts. Ein Bild des Namens, der der JAR-Datei usw. gegeben wurde.
Belassen Sie die Standardeinstellungen für die anderen Elemente und klicken Sie auf Fertig stellen, um das Projekt zu erstellen.
Unmittelbar nach dem Erstellen des Projekts denke ich, dass die Verzeichnisstruktur wie folgt ist. Hinweis) Ändern Sie die Compiler-Konformitätsstufe auf 1,8.
Lassen Sie es uns jetzt bearbeiten.
Wenn Sie auf die Standard-Datei pom.xml doppelklicken, sollte sie wie folgt aussehen. Wenn jUnit nicht enthalten ist, ist die Beschreibung etwas kürzer.
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>S3test</groupId>
<artifactId>S3toLambda</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>S3toLambda</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
Fügen wir eine Beschreibung in den Abhängigkeitsblock ein, um AWS-bezogene Bibliotheken hinzuzufügen. Speichern Sie mit Strg + s.
Nach dem Bearbeiten ↓
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>S3test</groupId>
<artifactId>S3toLambda</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>S3toLambda</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/com.amazonaws/aws-lambda-java-core -->
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-lambda-java-core</artifactId>
<version>1.0.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.amazonaws/aws-lambda-java-events -->
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-lambda-java-events</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
<build>
<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>
</build>
</project>
Dadurch werden mehrere AWS-bezogene Jars innerhalb der Maven-Abhängigkeit hinzugefügt, und Sie können mit ihnen arbeiten.
Als Nächstes bearbeiten wir die standardmäßig erstellte App.java-Klasse.
Der Standardwert lautet wie folgt.
App.java
package S3test.S3toLambda;
/**
* Hello world!
*
*/
public class App
{
public static void main( String[] args )
{
System.out.println( "Hello World!" );
}
}
Entfernen Sie unnötige Kommentare und benennen Sie die Klasse ReadS3Object. Setzen Sie den Methodennamen außerdem auf listennamen.
Nach dem Bearbeiten ↓
ReadS3Object.java
package S3test.S3toLambda;
import java.util.List;
import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3Client;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.ListObjectsRequest;
import com.amazonaws.services.s3.model.ObjectListing;
import com.amazonaws.services.s3.model.S3ObjectSummary;
public class ReadS3Object
{
public static void listingNames( String[] args )
{
@SuppressWarnings("deprecation")
AmazonS3 client = new AmazonS3Client(
new BasicAWSCredentials(
"<accessKey>",
"<secertKey>"));
ListObjectsRequest request = new ListObjectsRequest()
.withBucketName("<bucketName>");
ObjectListing objectList = client.listObjects(request);
//Liste der Objekte abrufen
List<S3ObjectSummary> objects = list.getObjectSummaries();
System.out.println("objectList:");
objects.forEach(object -> System.out.println(object.getKey()));
}
}
Geben Sie für \ <accessKey > und \ <secretKey > den Zugriffsschlüssel und den geheimen Zugriffsschlüssel des in der AWS Edition erstellten IAM-Benutzers an. Geben Sie unter \ <BucketName > den Namen des von Ihnen erstellten S3-Buckets ein.
Erstellen Sie in diesem Zustand das Projekt einmal und erstellen Sie eine JAR-Datei.
Klicken Sie mit der rechten Maustaste auf den Projektnamen-> [Ausführen] -> [Maven Build], um ein Popup zum Bearbeiten der Ausführungskonfiguration anzuzeigen. Geben Sie im Zielteil "Paketschatten: Schatten" ein, um das Paket einschließlich der abhängigen Bibliotheken zu verpacken.
Bei der Ausführung wird der Projektname / target / \ <ProjectName > -0.0.1-SNAPSHOT.jar wird in erstellt, laden Sie es also auf Lambda hoch.
Stellen Sie eine Verbindung zur Lambda-Verwaltungskonsole her. Klicken Sie oben auf dem Bildschirm auf [Funktion erstellen], um zum Erstellungsbildschirm zu gelangen.
Stellen Sie sicher, dass Von Grund auf neu erstellen ausgewählt ist, und füllen Sie das zentrale Formular aus. Hier lautet der Funktionsname "Testfunktion" und die Laufzeit ist auf Java 8 eingestellt. Wählen Sie eine vorhandene Rolle aus und wählen Sie die Rolle aus, die Sie zuletzt erstellt haben (der Capture hat den Namen gegenüber dem letzten Mal geändert).
Wenn Sie [Funktion erstellen] ausführen, wird die Java 8-Ausführungsumgebung erstellt. Laden Sie also das JAR hier hoch.
Schreiben Sie im [Handler] des Pfeilteils "Paketname. Klassenname :: Name der Ausführungsmethode".Wenn der Upload abgeschlossen ist, klicken Sie oben auf dem Bildschirm auf Speichern-> Testen.
Sie werden aufgefordert, Testdaten nur zum ersten Mal zu erstellen. Diesmal müssen Sie sich dessen jedoch nicht bewusst sein. Lassen Sie die Daten unverändert und geben Sie einen geeigneten Ereignisnamen ein.
Klicken Sie auf Erstellen, um die Lambda-Funktion auszuführen und das Ergebnis auszugeben. Wenn Sie den Namen der Testdatei sehen, die Sie in Ihren S3-Bucket hochgeladen haben, können Sie loslegen:
Beim nächsten Mal möchte ich ein Programm erstellen, das erkennt, dass eine Datei in den S3-Bucket hochgeladen wurde, und sie per E-Mail benachrichtigt, sowie ein Programm, das sie in die Datenbank einfügt.
Recommended Posts