Importer / télécharger / supprimer en bloc des données sur S3 à l'aide d'Amazon S3 Client Builder avec AWS SDK pour Java

L'utilisation de la classe AmazonS3Client fournie dans l'ancien SDK est traitée comme obsolète, et il est écrit dans la référence qu'AmazonS3ClientBuilder peut être utilisé, mais il semble qu'il y ait peu de documents japonais, je vais donc le laisser comme un rappel.

Exemple de code

S3Access.java


package s3test;

import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

import com.amazonaws.ClientConfiguration;
import com.amazonaws.Protocol;
import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.AWSStaticCredentialsProvider;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.client.builder.AwsClientBuilder.EndpointConfiguration;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.DeleteObjectsRequest;
import com.amazonaws.services.s3.model.DeleteObjectsRequest.KeyVersion;
import com.amazonaws.services.s3.model.DeleteObjectsResult;
import com.amazonaws.services.s3.model.ObjectMetadata;
import com.amazonaws.services.s3.model.S3Object;
import com.amazonaws.services.s3.model.S3ObjectInputStream;

public class S3Access {

    private static final String ENDPOINT_URL = "https://s3-ap-northeast-1.amazonaws.com";
    private static final String REGION       = "ap-northeast-1";
    private static final String ACCESS_KEY   = "【clé d'accès】";
    private static final String SECRET_KEY   = "[Clef secrète]";

    //--------------------------------------------------
    //télécharger
    //--------------------------------------------------
    public void putObject(String bucketName, String objectKey, int objectSize, InputStream is) throws Exception {

        //Génération de clients
        AmazonS3 client = getClient(bucketName);

        ObjectMetadata metadata = new ObjectMetadata();
        //Définissez uniquement la taille au cas où (Exception si incohérente)
        metadata.setContentLength(objectSize);

        //télécharger
        client.putObject(bucketName, objectKey, is, metadata);
    }

    //--------------------------------------------------
    //Télécharger
    //--------------------------------------------------
    public S3ObjectInputStream getObject(String bucketName, String objectKey) throws Exception {

        //Génération de clients
    	AmazonS3 client = getClient(bucketName);

    	//Télécharger
    	S3Object s3Object = client.getObject(bucketName, objectKey);

	return s3Object.getObjectContent();
    }

    //--------------------------------------------------
    //Suppression groupée
    //--------------------------------------------------
    public List<String> deleteObjects(String bucketName, List<String> objectKeys) throws Exception {

        //Génération de clients
        AmazonS3 client = getClient(bucketName);

        List<KeyVersion> keys = new ArrayList<KeyVersion>();
        objectKeys.forEach(obj -> keys.add(new KeyVersion(obj)));

        //Supprimer le fichier
        DeleteObjectsRequest request = new DeleteObjectsRequest(bucketName).withKeys(keys);
        DeleteObjectsResult  result  = client.deleteObjects(request);

        //Récupère la clé de l'objet supprimé
        List<String>         deleted = new ArrayList<String>();
        result.getDeletedObjects().forEach(obj -> deleted.add(obj.getKey()));

        return deleted;
    }

    //--------------------------------------------------
    //Génération de clients
    //--------------------------------------------------
    private AmazonS3 getClient(String bucketName) throws Exception {

        //Informations d'authentification
    	AWSCredentials credentials = new BasicAWSCredentials(ACCESS_KEY, SECRET_KEY);

    	//Paramètres du client
        ClientConfiguration clientConfig = new ClientConfiguration();
        clientConfig.setProtocol(Protocol.HTTPS);  //protocole
        clientConfig.setConnectionTimeout(10000);   //Délai de connection dépassé(ms)	

        //Réglage du point final
        EndpointConfiguration endpointConfiguration = new EndpointConfiguration(ENDPOINT_URL, REGION);

        //Génération de clients
        AmazonS3 client = AmazonS3ClientBuilder.standard()
                        .withCredentials(new AWSStaticCredentialsProvider(credentials))
                        .withClientConfiguration(clientConfig)
                        .withEndpointConfiguration(endpointConfiguration).build();

        if(!client.doesBucketExist(bucketName)) {
        //Exception s'il n'y a pas de seau
            throw new Exception("Seau S3[" + bucketName + "]il n'y a pas");
        }

        return client;
    }
}

Supplément

Recommended Posts

Importer / télécharger / supprimer en bloc des données sur S3 à l'aide d'Amazon S3 Client Builder avec AWS SDK pour Java
Crypter les données téléchargées vers S3 à l'aide du kit AWS SDK pour Java / SSE-KMS
Essayez Spark Submit to EMR à l'aide du kit AWS SDK pour Java
[Java] Tester le chargement / téléchargement de S3 avec "S3 ninja"
Obtenir une liste de fichiers S3 avec ListObjectsV2Request (AWS SDK for Java)
[AWS SDK for Java] Définir la stratégie de nouvelle tentative pour le client S3
J'ai essayé de faire fonctionner SQS en utilisant AWS Java SDK
Configurer des cookies signés (pour CloudFront) avec des stratégies personnalisées à l'aide du kit AWS SDK pour Java
Obtenir la taille de l'objet S3 avec AWS SDK pour Ruby
A étudié comment appeler des services avec Watson SDK pour Java
Accéder au compartiment S3 à l'aide du chiffrement SSE-KMS dans l'environnement de rôle IAM EC2 (AWS SDK pour Java)
Télécharger des fichiers sur Aspera fournis avec IBM Cloud Object Storage (ICOS) à l'aide du SDK (version Java)
Exemple d'utilisation de l'API Bulk de Salesforce à partir d'un client Java avec PK-chunking
[Rails] Comment télécharger des images sur AWS S3 à l'aide de Carrierwave et de fog-aws
[Rails] Comment télécharger des images sur AWS S3 à l'aide de refile et refile-s3
[Note] Télécharger depuis S3, télécharger vers S3
SDK AWS pour Java 1.11.x et 2.x
Utilisation de Java avec AWS Lambda-Eclipse Préparation
Comment déployer sur AWS à l'aide de NUXTJS S3 et CloudFront officiels? Avec docker-compose
Utilisation de Java avec des arguments CloudWatch AWS Lambda-Implementation-Check
Utilisation de Java avec AWS Lambda-Implementation-Stop / Launch EC2
Comment supprimer des données avec une clé externe
Jusqu'à ce que vous exécutiez un programme Java avec le SDK AWS local sur Windows