Cet article est un rappel de ce que j'ai fait avant d'insérer un objet S3 dans une base de données EC2 (SQL Server) avec Lambda @ java. Veuillez indiquer toute autre solution.
1: Édition AWS 2: partie Java [Partie 1] <-Partie principale 3: Java [Partie 2] 3.5: Édition Java [suite] Ce sera.
Ce qui suit est une continuation de la précédente, après la création de l'instance EC2.
eclipse fait partie de l'environnement de développement intégré (IDE) développé par IBM. Il est hautement fonctionnel mais open source et prend en charge plusieurs langages, dont Java. eclipse lui-même est écrit en Java.
Note) Comme il a déjà été installé à des fins professionnelles, la version d'Eclipse dans cet article est supposée être Oxygen.3a Release (4.7.3a). Si vous souhaitez utiliser une autre version, veuillez la télécharger depuis https://www.eclipse.org/downloads/. Personnalisez également l'installation d'Eclipse en fonction de l'assistant.
Une fois l'installation d'Eclipse terminée, démarrez-la et sélectionnez [Fichier] -> [Nouveau] -> [Projet Maven] pour créer un projet.
Sélectionnez [Suivant] pour afficher un nouvel assistant. Entrez le "Artifact ID" et "Group ID". L'image suivante montre les détails de l'ID d'artefact et de l'ID de groupe.
ID de groupe: attribuez au projet un nom identifiable de manière unique. Artifact Id: le nom de l'emballage du projet. Une image du nom donné au fichier jar, etc.
Laissez les autres éléments à leurs valeurs par défaut et cliquez sur Terminer pour créer le projet.
Immédiatement après la création du projet, je pense que la structure des répertoires est la suivante. Remarque) Modifiez le niveau de conformité du compilateur à 1.8.
Modifions-le maintenant.
Si vous double-cliquez sur le pom.xml par défaut, il devrait ressembler à celui ci-dessous. Si jUnit n'est pas inclus, la description sera un peu plus courte.
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>
Ajoutons une description à l'intérieur du bloc de dépendances pour ajouter des bibliothèques liées à AWS. Enregistrez avec Ctrl + s.
Après l'édition ↓
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>
Cela ajoutera plusieurs fichiers JAR liés à AWS dans la dépendance Maven et vous permettra de travailler avec eux.
Ensuite, éditons la classe App.java créée par défaut.
La valeur par défaut est la suivante.
App.java
package S3test.S3toLambda;
/**
* Hello world!
*
*/
public class App
{
public static void main( String[] args )
{
System.out.println( "Hello World!" );
}
}
Supprimez les commentaires inutiles et nommez la classe ReadS3Object. En outre, définissez le nom de la méthode sur listingNames.
Après l'édition ↓
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);
//Obtenir la liste des objets
List<S3ObjectSummary> objects = list.getObjectSummaries();
System.out.println("objectList:");
objects.forEach(object -> System.out.println(object.getKey()));
}
}
Pour \ <accessKey > et \ <secretKey >, spécifiez respectivement la clé d'accès et la clé d'accès secrète de l'utilisateur IAM créé dans l'édition AWS. Pour \ <bucketName >, entrez le nom du compartiment S3 que vous avez créé.
Dans cet état, générez le projet une fois et créez un fichier jar.
Cliquez avec le bouton droit sur le nom du projet -> [Exécuter] -> [Maven Build] pour afficher une fenêtre contextuelle pour modifier la configuration d'exécution. Entrez "package ombre: ombre" dans la partie objectif à package comprenant les bibliothèques dépendantes.
Une fois exécuté, le nom du projet / la cible / \ <ProjectName > -0.0.1-SNAPSHOT.jar sera créé dans, alors téléchargez-le sur Lambda.
Connectez-vous à la console de gestion de Lambda. Cliquez sur [Créer une fonction] en haut de l'écran pour passer à l'écran de création.
Assurez-vous que Créer à partir de zéro est sélectionné et remplissez le formulaire central. Ici, le nom de la fonction est "test-function" et le runtime est défini sur Java 8. Sélectionnez un rôle existant et sélectionnez le rôle que vous avez créé la dernière fois (la capture a changé de nom depuis la dernière fois).
Lorsque vous exécutez [Create Function], l'environnement d'exécution de Java 8 sera créé, nous allons donc télécharger le fichier jar ici.
Dans le [Handler] de la partie flèche, écrivez "Nom du package. Nom de la classe :: Nom de la méthode d'exécution".Une fois le téléchargement terminé, cliquez sur Enregistrer-> Test en haut de l'écran.
Vous serez invité à créer des données de test uniquement pour la première fois, mais cette fois, vous n'avez pas besoin d'en être conscient, alors laissez les données telles quelles et donnez-leur un nom d'événement approprié.
Cliquez sur Créer pour exécuter la fonction Lambda et afficher le résultat. Si vous voyez le nom du fichier de test que vous avez téléchargé dans votre compartiment S3, vous êtes prêt à partir:
La prochaine fois, j'aimerais créer un programme qui détecte qu'un fichier a été téléchargé dans le compartiment S3 et le notifie par e-mail, ainsi qu'un programme qui l'insère dans la base de données.
Recommended Posts