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.
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.
Cette fois, nous supposerons que vous l'avez créé avec le nom ** storage-account **.
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 **.
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
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.
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.
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