Article
· Oct 9 4m de lecture

Accès au stockage d'objets blob Azure

L'accès à un stockage cloud Azure pour charger/télécharger des blobs est assez simple à l'aide des méthodes API de classe %Net.Cloud.Storage.Client désignées ou des adaptateurs entrants/sortants EnsLib.CloudStorage.*.

Notez que vous devez avoir le serveur de %JavaServer External Language opérationnel pour utiliser l'API ou les adaptateurs de stockage cloud, car ils utilisent tous deux le framework PEX à l'aide du serveur Java.

Voici un bref résumé :

L'accès à Azure Blob Storage s'effectue à l'aide d'une chaîne de connexion qui ressemble à celle-ci :

DefaultEndpointsProtocol=https;AccountName=abcdefscleanisr;AccountKey=n3mWskdjgfhklsghdfjaskhgkjdfizqMWJ5X2L4JpqeEJk/FuEnw0rPI6E/rULPn0V5BWgFw+AStRJZlYQ==;EndpointSuffix=core.windows.net

Divisez-le en lignes avec « ;» comme délimiteur et enregistrez-le sous forme de fichier texte :

DefaultEndpointsProtocol=https;
AccountName=abcdefscleanisr;
AccountKey=n3mWskdjgfhklsghdfjaskhgkjdfizqMWJ5X2L4JpqeEJk/FuEnw0rPI6E/rULPn0V5BWgFw+AStRJZlYQ==;
EndpointSuffix=core.windows.net

Pour cet exemple, je nommerai ce fichier « MyAzureStorage.txt ».

Activons maintenant l'API :

set file="C:\Storage\MyAzureStorage.txt"
set endpoint="abcdefscleanisr.privatelink.blob.core.windows.net"
set tStatus=""

Dans la méthode API CreateClient, le deuxième paramètre est le fournisseur de cloud :

  • 0 - Amazon S3
  • 1 - Azure Blob
  • 2 - Google Cloud Storage
SET myClient = ##CLASS(%Net.Cloud.Storage.Client).CreateClient(,1,file,0,.tStatus,endpoint)

Une fois le client établi (tStatus=1), vous pouvez exécuter n’importe laquelle des méthodes du client :

 

Dans Azure Blob Storage, un bucket est un conteneur.

Par exemple, pour obtenir la liste des conteneurs Azure, exécutez la méthode ListBuckets :

set list=myClient.ListBuckets()

for i=1:1:list.Count() {write list.GetAt(i).name,!}

clean
dirty

Une fois que vous avez un nom de conteneur (prenons le conteneur « clean » comme exemple), vous pouvez obtenir la liste des blobs qu'il contient :

set list=myClient.ListBlobs("clean")

for i=1:1:list.Count() {write list.GetAt(i).name,!}

4caa6f29-e9e6-4cde-9112-65ec28d4eded.jpeg
2374233-e9e6-4cde-9112-65ec28d4eded.jpeg
3klfd3lld-e9e6-4cde-9112-65ec28d4eded.jpeg
4caa6f29-e9e6-87ry-9112-65ec28d4eded.jpeg

L'adaptateur sortant CloudStorage dispose de moins d'options : ses méthodes incluent uniquement les éléments suivants :

  • UploadBlobFromString(bucketName,blobName,content)
  • UploadBlobFromStream(bucketName,blobName,content)
  • UploadBlobFromFile(bucketName,blobName,filePath)
  • DeleteBlob(bucketName,blobName)

Voici les paramètres permettant de configurer une opération commerciale à l'aide de EnsLib.CloudStorage.OutboundAdapter avec Azure Blob Storage. Le paramètre Storage Région n'est pas pertinent pour Azure Blob Storage.

Tous les autres paramètres sont pertinents de la même manière que lorsque nous utilisions la méthode CreateClient :

Le paramètre ContainerName ne fait pas partie des paramètres de l'adaptateur : il n'est pas nécessaire pour créer le client (la méthode CreateClient ne l'utilise pas).

Toutefois, toutes les autres méthodes d'adaptateur répertoriées ci-dessus doivent spécifier dans quel bucket/conteneur le blob doit être chargé, il est donc logique de l'ajouter en tant que paramètre dans le cadre des paramètres :

Class Sasa.BO.Storage Extends Ens.BusinessOperation
{ 
Parameter ADAPTER = "EnsLib.CloudStorage.OutboundAdapter"; 
Property Adapter As EnsLib.CloudStorage.OutboundAdapter; 
Parameter INVOCATION = "Queue"; 
/// Bucket name(Amazon) = Container name(Azure)
Property ContainerName As %String(MAXLEN = 1000); 
Parameter SETTINGS = "ContainerName:Cloud Storage"; 
Method CreateFile(pRequest As Cloud.RES.REST, Output pResponse As Cloud.RES.REST) As %Status
{
    #dim tException As %Exception.SystemException
    Set tStatus = $$$OK
    set pResponse=##class(Cloud.RES.REST).%New() 
    Try {
        Set tStatus = ..Adapter.DeleteBlob(..ContainerName, pRequest.FileName)
        Set tStatus = ..Adapter.UploadBlobFromStream(..ContainerName, pRequest.FileName, pRequest.FileData)   
        if $$$ISERR(tStatus) {
            set pResponse.Success = 0
            set pResponse.ErrorMessage = $system.Status.GetErrorText(tStatus)
        }
    } 
    Catch tException {
        Set tStatus = tException.AsStatus()
        set pResponse.Success=0
        set pResponse.ErrorMessage=$system.Status.GetErrorText(tStatus)
    }
    Quit $$$OK
}

J'espère que cela vous aidera à commencer à utiliser l'adaptateur cloud avec Azure.

Discussion (0)1
Connectez-vous ou inscrivez-vous pour continuer