Bearbeiten des Azure Blob-Speichers in Java (SAS-Token, Dateimanipulation)

Über diesen Artikel

In diesem Artikel habe ich untersucht, was Sie tun müssen, wenn Sie mit Azure Blob Storage unter Verwendung von Java-Bibliotheken arbeiten. Ich werde es weiterhin tun.

Die verwendeten Bibliotheken sind die folgenden Versionen.

Dinge vorzubereiten

Azure-Konto

Natürlich ist es wichtig.

Azure Storage Account

Wählen Sie im Azure-Portal Dashboard> Speicherkonten> Speicherkonto erstellen aus Geben Sie den Namen des Speicherkontos usw. ein und wählen Sie als Kontotyp "Blob Storage" aus.

Andere Parameter können je nach Anwendung frei bestimmt werden.

image.png

Dieses Mal gehen wir davon aus, dass Sie es mit dem Namen ** Speicherkonto ** erstellt haben.

Container erstellen

In Blob Storage werden Ressourcen in den folgenden Einheiten verwaltet.

Weitere Informationen finden Sie hier (https://docs.microsoft.com/en-us/azure/storage/blobs/storage-blobs-introduction#blob-storage-resources).

Dieses Mal gehen wir davon aus, dass Sie es mit dem Namen ** log ** erstellt haben.

Verbindungszeichenfolge abrufen

Sobald Sie ein Speicherkonto haben, können Sie einen Zugriffsschlüssel erhalten.

Sie können den Zugriffsschlüssel erhalten, indem Sie auf Speicherkonto> Name des Speicherkontos> Zugriffsschlüssel zugreifen.

Die Verbindungszeichenfolge scheint das folgende Format zu haben. Bitte holen Sie sie sich oder bauen Sie sie selbst zusammen.

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

Holen Sie sich ein SAS-Token

Jetzt, da Sie bereit sind, können Sie mit dem Blob-Speicher beginnen.

Ich werde versuchen, das SAS-Token zu bekommen.

Siehe unten für SAS-Token https://docs.microsoft.com/ja-jp/azure/storage/common/storage-sas-overview

//Verwenden Sie die erhaltene Verbindungszeichenfolge, um den BlobClient abzurufen
// BLOB_CONNECTION_Verwenden Sie zum EINSTELLEN die Verbindungszeichenfolge aus dem Azure-Portal..
var blobClient = new BlobServiceClientBuilder().connectionString(BLOB_CONNECTION_STRING).buildClient();

//Legen Sie die Berechtigungen fest, die SAS zugewiesen werden sollen.
var permission = AccountSasPermission.parse("rwacd"); // read + write + add + create +Löschen zuweisen
var service = AccountSasService.parse("b"); //Geben Sie den Typ des Speicherdienstes an, den Sie verwenden möchten. Diesmal Blob(b)ist
var resourceType = AccountSasResourceType.parse("oc"); //Wählen Sie die Ressourcen aus, die Sie für den Vorgang zulassen möchten. Objekt, weil ich Blob und Container bedienen möchte(o≒blob)Und Container(c)Konkretisieren
var expireTime = OffsetDateTime.now().plusSeconds(10 * 60); //Gibt das Ablaufdatum des generierten SAS-Tokens an. Aktuelle Zeit, da sie in OffsetDateTime angegeben werden muss+Lassen Sie uns 10 Minuten zuweisen.

Rufen Sie anschließend generateAccountSas auf blobClient auf, um ein SAS-Token zu generieren.

//Account Sas, an dessen Generierung ich hart gearbeitet habe~Holen Sie sich AccountSasSignatureValues mit etc.
var sig = new AccountSasSignatureValues(expireTime, permission, service, resourceType);
//Sie können SAS-Token erhalten.
var sasToken = blobClient.generateAccountSas(sig);

Infolgedessen haben die erworbenen Token das folgende Format.

?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

Da es nicht wie es ist als Verbindungszeichenfolge verwendet werden kann, verbinden Sie es mit dem folgenden Format.

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

Sie können das SAS-Token jetzt als Verbindungszeichenfolge mit einem Zeitlimit usw. verwenden.

Führen Sie Dateioperationen durch

Führen wir eine Speicheroperation mit der SAS-Token-Version der Verbindungszeichenfolge durch!

Die Methode zum Abrufen des Clients ist dieselbe, aber der an die Methode "BlobServiceClientBuilder # connectionString" übergebene Parameter verwendet die SAS-Token-Version der Verbindungszeichenfolge.


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();

Laden Sie nun die Datei in den Protokollcontainer hoch.


//Holen Sie sich den Protokollcontainer.
var logContainer = blobClient.getBlobContainerClient("log");

//Zugriff im Protokollcontainer.Als Objekt namens log hochladen.
var accesslog = logContainer.getBlobClient("access.log");

// access.Im Protokoll "Hallo, World!".
try {
  var helloWorld = "Hello, World!".getBytes();
  accesslog.upload(new ByteArrayInputStream(helloWorld), helloWorld.length);
} catch (Exception e) {
  //So etwas wie Fehlerbehandlung
}

Außerdem scheinen die folgenden Methoden zu existieren.

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

Vorerst wurde es so weit zusammengefasst, dass Dateivorgänge bis zu einem gewissen Grad ausgeführt werden können.

Übrigens, wenn Sie den Dateinamen angeben, der zum Zeitpunkt von "getBlobClient" durch "/" getrennt ist, wird er als virtuelles Verzeichnis behandelt.

Impressionen

Es gibt die V8-Version und die V12-Version der Java-Bibliothek, aber unterscheidet sie sich je nach Java-Version? Ich dachte, aber es scheint, dass die Version der Bibliothek einfach anders ist. Ich habe den gleichen Prozess mit der V8-Version versucht, aber er ist mit URISyntaxException gestorben. Es war ein einfacher Gewinn, wenn ich die Bibliothek ersetzte.

Recommended Posts

Bearbeiten des Azure Blob-Speichers in Java (SAS-Token, Dateimanipulation)
Android-Laden Sie Bilddateien in den Azure Blob-Speicher in Java hoch
Erstellen wir eine vielseitige Dateispeicher (?) - Operationsbibliothek, indem wir die Dateispeicherung / -erfassung mit Java abstrahieren
[Java] Dateisystembetrieb
Azure funktioniert in Java
Erstellen Sie Azure-Funktionen in Java
Lesen Sie die Java-Eigenschaftendatei in C #
Führen Sie Java-Anwendungen in Azure Batch aus
Entpacken Sie die Zip-Datei in Java
Protokollausgabe in Datei in Java
Informationen zur Dateikopierverarbeitung in Java
Lesen Sie die xlsx-Datei in Java mit Selenium
Beispiel zum Entpacken einer gz-Datei in Java
Elementoperationsmethode in Appium TIPS (Java)