Recherche de site Web

Comment utiliser AWS Java SDK avec Spaces


Introduction

Linux-Console.net Spaces est un service de stockage d'objets avec une API compatible S3, vous permettant d'utiliser les SDK S3 d'Amazon pour interagir avec Spaces. Bien que la documentation du SDK Spaces de Linux-Console.net fournisse des exemples pour JavaScript, Python, Go, PHP, Ruby et C#, Java n'est pas encore officiellement documenté. Mais ne vous inquiétez pas, si vous êtes développeur Java, ce guide vous couvre.

Ce guide vous expliquera chaque étape nécessaire pour configurer un projet Java simple dans VS Code en utilisant le AWS SDK for Java pour interagir avec Spaces.

Points clés

Avant de commencer, voici un bref résumé de ce que vous apprendrez dans ce tutoriel :

  • Comment configurer un environnement de développement Java avec Java 17 et Maven sur macOS, Ubuntu et Windows.
  • Comment créer un projet Maven standard en utilisant le modèle maven-archetype-quickstart
  • Nous vous montrerons comment utiliser le SDK Java AWS pour interagir avec les Spaces de Linux-Console.net, qui fonctionnent exactement comme Amazon S3.
  • Comment utiliser les clés d'accès Spaces de Linux-Console.net pour l'authentification programmatique.
  • Comment écrire et exécuter du code Java qui se connecte à votre bucket Spaces et téléverse un fichier en utilisant les API compatibles S3.
  • Tout se fait en utilisant la ligne de commande et VS Code, donc vous n’avez pas besoin d’un IDE lourd.

Prérequis

Assurez-vous d'avoir les éléments suivants :

  • Un compte Linux-Console.net
  • Un seau Spaces
  • Clés d'accès et clés secrètes pour vos Spaces
  • Familiarité avec Java et Maven
  • Visual Studio Code (ou votre IDE préféré)

Étape 1 - Installer Java et configurer l'environnement

Sur Ubuntu/Debian

sudo apt update
sudo apt install openjdk-17-jdk -y

Sur macOS (avec Homebrew)

brew install openjdk@17
sudo ln -sfn /opt/homebrew/opt/openjdk@17/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-17.jdk

Sur Windows

  • Téléchargez le JDK depuis https://adoptium.net/ ou le site d’Oracle
  • Installez et définissez JAVA_HOME dans les variables d'environnement système.

Pour vérifier l'installation, exécutez :

java -version

Étape 2 - Installer Maven

Installez via APT. Ouvrez le Terminal et exécutez :

sudo apt update
sudo apt install maven

Sur macOS (avec Homebrew), vous pouvez installer via Homebrew (Recommandé).

Ouvrez le Terminal et exécutez :

brew update
brew install maven

Ou vous pouvez essayer l'installation manuelle. Téléchargez et extrayez Maven depuis le site officiel.

Déplacez le dossier à l'emplacement de votre choix (par exemple, /Users/yourname/apache-maven).

Définissez les variables d'environnement. Ajoutez Maven à votre PATH dans .zshrc ou .bash_profile.

export M2_HOME=/Users/yourname/apache-maven
export PATH=$PATH:$M2_HOME/bin

Enregistrez et sourcez le fichier : source ~/.zshrc

Sur Windows

Télécharger Maven :

  • Visitez la page officielle de téléchargement de Maven.
  • Décompressez le fichier dans un dossier, par exemple C:\Program Files\Apache\maven.

Définir les variables d'environnement :

  • Nom de la variable : MAVEN_HOME
  • Valeur : C:\Program Files\Apache\maven
  • Ajoutez %MAVEN_HOME%\bin à votre variable PATH système.

Pour vérifier l'installation, exécutez :

mvn -version

Vous devriez voir la sortie de la version de Maven.

Structure du dossier

Voici à quoi le dossier du projet ressemblera éventuellement :

dospaces-demo/  
│  
├── pom.xml  
├── .env  
└── src/  
    ├── main/  
    │   └── java/  
    │       └── com/  
    │           └── example/  
    │               └── App.java  
    └── test/  
        └── java/  
            └── com/  
                └── example/  
                    └── AppTest.java

Principaux composants expliqués

  • dospaces-demo/ : Le dossier racine du projet.
  • pom.xml : fichier descripteur de projet Maven ; où vous ajoutez des dépendances comme le SDK Java AWS.
  • src/main/java/com/example/App.java : Votre fichier source principal pour le code Java. C'est ici que vous mettez votre logique de Spaces Linux-Console.net.
  • src/test/java/com/example/AppTest.java : Test unitaire par défaut inclus par l’archétype quickstart de Maven.

Remarque : Vous pouvez également ajouter des fichiers comme .env ou des fichiers de configuration à la racine (à côté de pom.xml) pour stocker des informations d'identification. Si vous suivez les meilleures pratiques, ne placez pas de secrets dans vos fichiers source Java.
Cette structure conventionnelle est reconnue par Maven, les IDE et les outils de construction Java, et elle facilite les meilleures pratiques en matière de modularité et de séparation entre le code source et le code de test.

Étape 3 - Créez votre projet Java

Ouvrez le terminal dans VS Code pour créer le projet Java.

mvn archetype:generate -DgroupId=com.example -DartifactId=dospaces-demo -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

Cette commande utilise le plugin archetype de Maven pour générer un nouveau projet Java standard à partir d'un modèle prédéfini.

Voici une répartition de chaque partie :

  • mvn archetype:generate : Cela indique à Maven de créer un nouveau projet en utilisant un archétype (un modèle).
  • -DgroupId=com.example : Définit l’ID de groupe de votre projet (généralement le domaine de votre organisation à l’envers). Cela forme la structure de package de votre code. Nécessaire pour identifier de manière unique le package de votre projet
  • -DartifactId=dospaces-demo : Requis pour nommer le dossier de votre projet et le fichier JAR compilé (par exemple, dospaces-demo-1.0-SNAPSHOT.jar).
  • -DarchetypeArtifactId=maven-archetype-quickstart : Spécifie le type de modèle de projet à utiliser.
    maven-archetype-quickstart est une configuration de projet Java de base que nous utilisons ici.
  • -DinteractiveMode=false : Exécute la commande de manière non interactive, donc vous n’avez pas à répondre manuellement aux invites.

Une fois terminé, ouvrez le nouveau répertoire de projet (dospaces-demo) dans VS Code.

Étape 4 - Ajouter le SDK AWS pour Java à votre projet

Ici, nous configurons notre projet Java pour inclure le SDK AWS pour Java. Cela se fait en modifiant le fichier pom.xml pour ajouter le SDK AWS S3 et la dépendance Maven.
Partage du fichier de référence ci-dessous :

<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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.example</groupId>
  <artifactId>dospaces-demo</artifactId>
  <packaging>jar</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>dospaces-demo</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>11</maven.compiler.source>   <!--Change Java version if needed -->
    <maven.compiler.target>11</maven.compiler.target>   <!-- Change Java version if needed -->
  </properties>

  <dependencies>
    <dependency>
      <groupId>software.amazon.awssdk</groupId>
      <artifactId>s3</artifactId>
      <version>2.23.0</version>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>exec-maven-plugin</artifactId>
        <version>3.1.0</version>
      </plugin>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.10.1</version>
        <configuration>
          <release>11</release>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>

Étape 5 - Identifiants d'accès aux espaces

  1. Allez dans la section Stockage d'Objets Spaces sur votre tableau de bord Linux-Console.net et allez à Clés d'accès
  2. Vous pouvez soit utiliser l'une des clés existantes, soit cliquer sur Créer une clé d'accès.
  3. Copiez et stockez en toute sécurité la clé d'accès et la clé secrète.

Ceci est nécessaire pour communiquer et s'authentifier auprès de Linux-Console.net Spaces. Sans ces informations d'identification, votre application ne pourra pas effectuer des actions comme lister les compartiments ou téléverser des fichiers.

Étape 6 - Écrire du code Java pour télécharger un fichier

Dans le src/main/java/com/example/App.java de votre projet, utilisez le code suivant comme point de départ :

package com.example;

import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.s3.S3Client;
import software.amazon.awssdk.services.s3.model.*;
import software.amazon.awssdk.core.sync.RequestBody;
import java.net.URI;

public class App {
    public static void main(String[] args) {
        // Replace with your actual keys, region, and endpoint
        String accessKey = "YOUR_DO_SPACES_KEY";
        String secretKey = "YOUR_DO_SPACES_SECRET";
        String region = "blr1"; //use your specific region
        String endpoint = "https://blr1.digitaloceanspaces.com"; //change region

        S3Client s3 = S3Client.builder()
            .region(Region.of(region)) // Use the region variable
            .credentialsProvider(StaticCredentialsProvider.create(
                AwsBasicCredentials.create(accessKey, secretKey)))
            .endpointOverride(URI.create(endpoint))
            .build();

        // Example: List buckets
        ListBucketsResponse buckets = s3.listBuckets();
        System.out.println("Buckets: " + buckets.buckets());
        
        // Example: Upload object
        s3.putObject(PutObjectRequest.builder()
            .bucket("your-bucket") //add your bucket name
            .key("test.txt")
            .acl("public-read") // optional: set file visibility
            .build(), 
            RequestBody.fromString("Hello, Linux-Console.net Spaces!")
        );
    }
}

Remplacez accessKey, secretKey, region, endpoint et your-bucket par les valeurs correspondant à votre infrastructure.

Lorsque vous exécutez le code :
Le S3Client est initialisé en utilisant vos identifiants et point de terminaison.
La méthode listBuckets() récupère tous les buckets accessibles avec vos identifiants et les affiche.
La méthode putObject() téléverse un fichier texte simple (Hello, Linux-Console.net Spaces !) dans votre bucket Spaces sous le nom test.txt.

Étape 7 : Exécutez et Testez Votre Application

Nous sommes prêts à exécuter l'application. Nous allons compiler et exécuter l'application Java directement en utilisant Maven.

Dans le terminal de VS Code :

mvn compile
mvn exec:java -Dexec.mainClass="com.example.App"

Cela devrait télécharger le fichier sur les espaces de Linux-Console.net.

Vérifiez le bucket Linux-Console.net Spaces et un fichier nommé test.txt devrait être téléchargé.

Notes

  • Linux-Console.net Spaces nécessite que vous utilisiez le point de terminaison spécifique à la région comme nyc3.digitaloceanspaces.com, sgp1.digitaloceanspaces.com, etc.
  • Le Region.of("us-east-1") est requis par le SDK AWS même s’il n’est pas réellement utilisé par DO.

Questions fréquemment posées

1. Puis-je utiliser le SDK Java AWS pour accéder aux espaces Linux-Console.net de la même manière qu'AWS S3 ?

Oui ! Linux-Console.net Spaces est compatible avec S3, vous pouvez donc utiliser le SDK Java AWS (v2) pour interagir avec Spaces pour la plupart des opérations courantes comme le téléchargement, la récupération, la liste et la suppression d'objets. Assurez-vous simplement de définir le point de terminaison et la région corrects comme décrit dans ce guide.

2. Quel point de terminaison et quelle région devrais-je utiliser pour Linux-Console.net Spaces ?

Vous devez utiliser le point de terminaison spécifique à la région pour votre Space, tel que nyc3.digitaloceanspaces.com, sgp1.digitaloceanspaces.com, etc. La région dans le SDK (par exemple, Region.of("us-east-1")) est requise par le SDK AWS mais n'est en réalité pas utilisée par les Spaces de Linux-Console.net — toute chaîne de région AWS valide fonctionnera.

3. Comment gérer en toute sécurité mes clés d'accès Spaces dans un projet Java ?

Ne codez jamais en dur vos clés d'accès dans votre code source. Utilisez plutôt des variables d'environnement, un fichier .env (avec une bibliothèque comme dotenv-java), ou le gestionnaire d'identifiants de votre système. Vous pouvez également utiliser des profils Maven ou des secrets CI/CD pour les déploiements automatisés.

4. Y a-t-il des limitations lors de l'utilisation du SDK AWS avec les Spaces Linux-Console.net ?

Bien que la plupart des opérations S3 fonctionnent, certaines fonctionnalités avancées d'AWS S3 (comme la gestion des versions de buckets, le verrouillage d'objets ou certaines ACL) peuvent ne pas être prises en charge par Spaces. Consultez toujours la documentation de Spaces sur Linux-Console.net pour les fonctionnalités prises en charge.

5. Comment puis-je rendre les fichiers téléchargés publics ou privés dans Spaces en utilisant le SDK ?

Vous pouvez contrôler la visibilité des fichiers en utilisant le paramètre acl dans votre PutObjectRequest. Par exemple, définissez .acl("public-read") pour rendre un fichier public. Si vous omettez l'ACL ou la définissez sur private, le fichier ne sera accessible qu'avec des identifiants valides.

Conclusion

Félicitations ! Vous venez de créer une application Java entièrement fonctionnelle qui se connecte aux Spaces de Linux-Console.net en utilisant le SDK AWS pour Java. Cette base vous permet de tirer parti des Spaces pour une large gamme de cas d'utilisation—comme le stockage des fichiers téléchargés par les utilisateurs, la diffusion d'éléments statiques ou l'archivage de données—dans n'importe quel backend, microservice ou application cloud-native basée sur Java.

Avec cette configuration, vous pouvez facilement étendre votre application pour prendre en charge des opérations supplémentaires compatibles avec S3, l'intégrer à des frameworks comme Spring Boot, ou automatiser la gestion des fichiers dans le cadre de vos pipelines CI/CD. Vous êtes maintenant équipé des outils essentiels, de la structure de projet et des connaissances nécessaires pour créer en toute confiance des solutions de stockage évolutives sur Linux-Console.net Spaces.

À l'avenir, vous pourriez :

  • Essayez de lister ou de télécharger des fichiers depuis Spaces
  • Intégrez cette logique dans une application web plus grande
  • Ajouter la gestion des erreurs, une configuration basée sur l'environnement ou CI/CD pour l'automatisation

Le noyau est maintenant en place — vous avez les outils, la structure du projet et une compréhension solide de la façon dont tout s'assemble.

Bon codage

Vous voulez en savoir plus sur les espaces Linux-Console.net ? Découvrez ces tutoriels utiles :

  • 12 Jours de Linux-Console.net (Jour 10) - Sauvegarder des pièces jointes dans les espaces de Linux-Console.net

  • Comment créer un bucket Spaces | Documentation Linux-Console.net

  • Comment utiliser le Bucket Spaces de Linux-Console.net comme stockage en niveaux dans ClickHouse

Documentation Connexe

  • Docs de Linux-Console.net - Espaces avec les SDK AWS
  • Documentation AWS SDK pour Java (v2)
  • Référence de l'API Spaces

Merci d'apprendre avec la communauté Linux-Console.net.