Jusqu'à INSERT S3 objet dans EC2 DB avec Lambda @ java: Java [Partie 1]

introduction

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.

Préparation préalable

Remarque: qu'est-ce qu'Eclipse?

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.

Créer un projet

Une fois l'installation d'Eclipse terminée, démarrez-la et sélectionnez [Fichier] -> [Nouveau] -> [Projet Maven] pour créer un projet.

01_eclipse_wizard.png

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.

02_eclipse_wizard.png

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. 03_directories.png Remarque) Modifiez le niveau de conformité du compilateur à 1.8.

Modifions-le maintenant.

Modifier pom.xml

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.

Obtenir une liste de noms d'objets

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.

Télécharger un fichier jar et exécuter une fonction 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. 04_Lambda.png 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.

05_Lambda.png 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é. スクリーンショット 2018-09-13 11.45.30.png

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: 06_Lambda_execute.png

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

Jusqu'à ce que l'objet S3 soit INSERT dans EC2 DB avec Lambda @ java: Java [Partie 2]
Jusqu'à INSERT S3 objet dans EC2 DB avec Lambda @ java: Java [Partie 1]
Jusqu'à ce que l'objet S3 soit INSERT dans EC2 DB avec Lambda @ java: Java [Suite]
Insérez les données du dictionnaire d'Eijiro dans une table Oracle
Insérer des données dans la base de données à l'aide du fichier Yaml
Jusqu'à ce que l'objet S3 soit INSERT dans EC2 DB avec Lambda @ java: Java [Partie 2]
Jusqu'à INSERT S3 objet dans EC2 DB avec Lambda @ java: Java [Partie 1]
Essayez de mettre beaucoup de données dans Cosmos DB
Configurer un conteneur DB2 DB et insérer un peu de données
AWS Lambda (Lambda) Partie 1 avec Java pour démarrer maintenant
[Java] Les insertions Batch Insert sont combinées en une seule lorsque vous utilisez MySQL DB dans Doma.
Jusqu'à ce que vous créiez une application Web avec Servlet / JSP (Partie 1)