Manipuler le stockage Blob Azure en Java (jeton SAS, manipulation de fichiers)

À propos de cet article

Dans cet article, j'ai étudié ce que vous devez faire lorsque vous travaillez avec Azure Blob Storage à l'aide de bibliothèques Java. Je vais continuer à le faire.

Les bibliothèques utilisées sont les versions suivantes.

Choses à préparer

Compte Azure

Bien entendu, c'est essentiel.

Azure Storage Account

Depuis le portail Azure, sélectionnez Tableau de bord> Comptes de stockage> Créer un compte de stockage Entrez le nom du compte de stockage, etc., et sélectionnez "Stockage Blob" comme type de compte.

D'autres paramètres peuvent être déterminés librement en fonction de l'application.

image.png

Cette fois, nous supposerons que vous l'avez créé avec le nom ** storage-account **.

Créer un conteneur

Dans le stockage Blob, les ressources sont gérées dans les unités suivantes.

Pour plus d'informations, voir ici (https://docs.microsoft.com/en-us/azure/storage/blobs/storage-blobs-introduction#blob-storage-resources).

Cette fois, nous supposerons que vous l'avez créé avec le nom ** log **.

Obtenir la chaîne de connexion

Une fois que vous avez un compte de stockage, vous pouvez obtenir une clé d'accès.

Vous pouvez obtenir la clé d'accès en accédant à Compte de stockage> Nom du compte de stockage> Clé d'accès.

La chaîne de connexion semble avoir le format suivant, veuillez donc l'obtenir ou l'assembler vous-même.

DefaultEndpointsProtocol=${DefaultEndpointsProtocol};AccountName=${AccountName};AccountKey=${AccountKey};EndpointSuffix=core.windows.net

Obtenez un jeton SAS

Maintenant que vous êtes prêt, commençons avec le stockage Blob.

Je vais essayer d'obtenir le jeton SAS.

Voir ci-dessous pour les jetons SAS https://docs.microsoft.com/ja-jp/azure/storage/common/storage-sas-overview

//Utilisez la chaîne de connexion obtenue pour obtenir le BlobClient
// BLOB_CONNECTION_Pour SETING, utilisez la chaîne de connexion obtenue à partir du portail Azure..
var blobClient = new BlobServiceClientBuilder().connectionString(BLOB_CONNECTION_STRING).buildClient();

//Définissez les autorisations à attribuer à SAS.
var permission = AccountSasPermission.parse("rwacd"); // read + write + add + create +Attribuer la suppression
var service = AccountSasService.parse("b"); //Spécifiez le type de service de stockage que vous souhaitez utiliser. Cette fois Blob(b)est
var resourceType = AccountSasResourceType.parse("oc"); //Sélectionnez les ressources pour lesquelles vous souhaitez autoriser l'opération. Objet parce que je veux utiliser Blob et conteneur(o≒blob)Et conteneur(c)Spécifier
var expireTime = OffsetDateTime.now().plusSeconds(10 * 60); //Spécifie la date d'expiration du jeton SAS généré. Heure actuelle car elle doit être spécifiée dans OffsetDateTime+Allouons 10 minutes.

Une fois que cela est fait, appelez generateAccountSas sur blobClient pour générer un jeton SAS.

//Compte Sas que j'ai travaillé dur pour générer~Obtenez AccountSasSignatureValues avec etc.
var sig = new AccountSasSignatureValues(expireTime, permission, service, resourceType);
//Vous pouvez obtenir des jetons SAS.
var sasToken = blobClient.generateAccountSas(sig);

En conséquence, les jetons acquis ont le format suivant.

?sv=2019-02-02&ss=b&srt=sco&sp=rwdlac&se=2020-03-21T13:30:24Z&st=2020-03-21T05:30:24Z&spr=https&sig=60eYuGBBTSRAbQ3%2BjNGcpdu63ohWKbPCpCkC%2FSrWuqw%3D

Puisqu'elle ne peut pas être utilisée comme chaîne de connexion telle quelle, connectez-la au format suivant.

BlobEndpoint=${ストレージアカウント}.blob.core.windows.net/;TableEndpoint=${ストレージアカウント}.blob.core.windows.net/;SharedAccessSignature=${sasToken}

Vous pouvez maintenant utiliser le jeton SAS comme chaîne de connexion avec une limite de temps, etc.

Effectuer des opérations sur les fichiers

Effectuons une opération de stockage en utilisant la version de jeton SAS de la chaîne de connexion!

La méthode d'obtention du client est la même, mais le paramètre passé à la méthode BlobServiceClientBuilder # connectionString utilise la version de jeton SAS de la chaîne de connexion.


var SAS_CONNECTION_STRING = "BlobEndpoint=storage-account.blob.core.windows.net/;TableEndpoint=storage-account.blob.core.windows.net/;SharedAccessSignature=?sv=2019-02-02&ss=b&srt=sco&sp=rwdlac&se=2020-03-21T13:30:24Z&st=2020-03-21T05:30:24Z&spr=https&sig=60eYuGBBTSRAbQ3%2BjNGcpdu63ohWKbPCpCkC%2FSrWuqw%3D";

var blobClient = new BlobServiceClientBuilder().connectionString(SAS_CONNECTION_STRING ).buildClient();

Maintenant, téléchargeons le fichier dans le conteneur de journaux.


//Obtenir le conteneur de journaux.
var logContainer = blobClient.getBlobContainerClient("log");

//Dans le conteneur de journaux, accédez.Télécharger en tant qu'objet appelé journal.
var accesslog = logContainer.getBlobClient("access.log");

// access.Dans le journal, "Bonjour, World!".
try {
  var helloWorld = "Hello, World!".getBytes();
  accesslog.upload(new ByteArrayInputStream(helloWorld), helloWorld.length);
} catch (Exception e) {
  //Quelque chose comme la gestion des erreurs
}

En outre, il semble que les méthodes suivantes existent.

accesslog.download(outputStream);
accesslog.delete();

Pour le moment, il a été résumé au point où les opérations sur les fichiers peuvent être effectuées dans une certaine mesure.

Au fait, si vous spécifiez le nom du fichier séparé par / au moment de getBlobClient, il sera traité comme un répertoire virtuel.

Impressions

Il existe une version V8 et une version V12 de la bibliothèque Java, mais est-ce différent selon la version Java? J'ai pensé, mais il semble que la version de la bibliothèque soit simplement différente. J'ai essayé le même processus en utilisant la version V8, mais il est mort avec URISyntaxException. Ce fut une victoire facile si je remplaçais la bibliothèque.

Recommended Posts

Manipuler le stockage Blob Azure en Java (jeton SAS, manipulation de fichiers)
Android-Télécharger des fichiers image vers Azure Blob Storage en Java
Créons une bibliothèque d'opérations de stockage de fichiers polyvalente (?) En faisant abstraction du stockage / acquisition de fichiers avec Java
[Java] Fonctionnement du système de fichiers
Fonctions Azure en Java
Créer des fonctions Azure en Java
Lire le fichier de propriétés Java en C #
Exécuter des applications Java dans Azure Batch
Décompressez le fichier zip en Java
Enregistrer la sortie dans un fichier en Java
A propos du traitement de la copie de fichiers en Java
Lire le fichier xlsx en Java avec Selenium
Exemple pour décompresser le fichier gz en Java
Méthode d'opération d'élément dans Appium TIPS (Java)