Come caricare file in Azure Data Manager per l'energia usando il servizio file

In questo articolo si sa come caricare file di grandi dimensioni (~5 GB) usando l'API del servizio file in Microsoft Azure Data Manager for Energy. Il processo di caricamento comporta il recupero di un URL firmato dall'API File e quindi l'uso dell'URL firmato per archiviare il file in Archiviazione BLOB di Azure

Generare un URL firmato

Eseguire il comando curl seguente in Azure Cloud Bash per ottenere un URL firmato dal servizio file per una determinata partizione di dati della risorsa Azure Data Manager for Energy.

    curl --location 'https://<URI>/api/file/v2/files/uploadURL' \
    --header 'data-partition-id: <data-partition-id>' \
    --header 'Authorization: Bearer <access_token>' \
    --header 'Content-Type: text/plain'

Esempio di richiesta

Si consideri una risorsa di Azure Data Manager per l'energia denominata "medstest" con una partizione di dati denominata "dp1"

    curl --location --request POST 'https://medstest.energy.azure.com/api/file/v2/files/uploadURL' \
    --header 'data-partition-id: medstest-dp1' \
    --header 'Authorization: Bearer  eyxxxxxxx.........................' \
    --header 'Content-Type: text/plain'

Risposta di esempio

{
    "FileID": "2c5e7ac738a64eaeb7c0bc8bd47f90b6",
    "Location": {
        "SignedURL": "https://dummy.bloburl.com",
        "FileSource": "/osdu-user/1686647303778-2023-06-13-09-08-23-778/2c5e7ac738a64eaeb7c0bc8bd47f90b6"
    }
}

La chiave SignedURL nell'oggetto risposta può quindi essere usata per caricare i file in Archiviazione BLOB di Azure

Caricare file con dimensioni inferiori a 5 GB

Per caricare dimensioni di file inferiori a 5 GB, è possibile usare direttamente la chiamata ALL'API BLOB PUT per caricare i file in Archiviazione BLOB di Azure

Richiesta Curl di esempio

    curl --location --request PUT '<SIGNED_URL>' \
    --header 'x-ms-blob-type: BlockBlob' \
    --header 'Content-Type: <file_type>' \ # for instance application/zip or application/csv or application/json depending on file type
    --data '@/<path_to_file>'

Se il caricamento ha esito positivo, viene visualizzato un 201 Created codice di stato in risposta

Caricare file con dimensioni maggiori o uguali a 5 GB

Per caricare file con dimensioni >= 5 GB, è necessaria l'utilità azcopycome singola chiamata BLOB PUT non può essere maggiore di 5 GB di collegamento alla documentazione

Passaggi

  1. Scaricare azcopy con questo collegamento

  2. Eseguire questo comando per caricare il file

    azcopy copy "<path_to_file>" "signed_url"
  1. Risposta di esempio
    INFO: Could not read destination length. If the destination is write-only, use --check-length=false on the command line.
    100.0 %, 1 Done, 0 Failed, 0 Pending, 0 Skipped, 1 Total
    
    Job 624c59e8-9d5c-894a-582f-ef9d3fb3091d summary
    Elapsed Time (Minutes): 0.1002
    Number of File Transfers: 1
    Number of Folder Property Transfers: 0
    Number of Symlink Transfers: 0
    Total Number of Transfers: 1
    Number of File Transfers Completed: 1
    Number of Folder Transfers Completed: 0
    Number of File Transfers Failed: 0
    Number of Folder Transfers Failed: 0
    Number of File Transfers Skipped: 0
    Number of Folder Transfers Skipped: 0
    TotalBytesTransferred: 1367301
    Final Job Status: Completed

Passaggi successivi

Iniziare il percorso inserendo i dati in Azure Data Manager per la risorsa Energia.