Menggunakan JavaScript SDK di Node.js untuk mengelola direktori dan file di Azure Data Lake Storage Gen2

Artikel ini menunjukkan cara menggunakan Node.js untuk membuat dan mengelola direktori dan file di akun penyimpanan yang memiliki namespace hierarkis.

Untuk mempelajari cara mendapatkan, mengatur, dan memperbarui daftar kontrol akses (ACL) direktori dan file, lihat Gunakan JavaScript SDK di Node.js untuk mengelola ACL di Azure Data Lake Storage Gen2.

Paket (Manajer Paket Node) | Sampel | Beri Umpan Balik

Prasyarat

  • Langganan Azure. Untuk informasi selengkapnya, lihat Dapatkan uji coba gratis Azure.

  • Akun penyimpanan dengan namespace hierarkis aktif. Ikuti petunjuk berikut untuk membuatnya.

  • Jika Anda menggunakan paket ini dalam aplikasi Node.js, Anda memerlukan Node.js 8.0.0 atau yang lebih tinggi.

Menyiapkan proyek Anda

Instal pustaka klien Data Lake untuk JavaScript dengan membuka jendela terminal, lalu ketik perintah berikut.

npm install @azure/storage-file-datalake

Impor storage-file-datalake paket dengan menempatkan pernyataan ini di bagian atas file kode Anda.

const {
AzureStorageDataLake,
DataLakeServiceClient,
StorageSharedKeyCredential
} = require("@azure/storage-file-datalake");

Menyambungkan ke akun

Untuk menggunakan cuplikan dalam artikel ini, Anda harus membuat instans DataLakeServiceClient yang mewakili akun penyimpanan.

Sambungkan dengan menggunakan kunci akun

Ini adalah cara termudah untuk menyambungkan ke akun.

Contoh ini membuat instans DataLakeServiceClient dengan menggunakan kunci akun.


function GetDataLakeServiceClient(accountName, accountKey) {

  const sharedKeyCredential =
     new StorageSharedKeyCredential(accountName, accountKey);

  const datalakeServiceClient = new DataLakeServiceClient(
      `https://${accountName}.dfs.core.windows.net`, sharedKeyCredential);

  return datalakeServiceClient;
}

Catatan

Metode otorisasi ini hanya berfungsi untuk aplikasi Node.js. Jika Anda berencana menjalankan kode di browser, Anda bisa mengotorisasi dengan menggunakan Azure Active Directory (Microsoft Azure AD).

Menyambungkan dengan Azure Active Directory (Microsoft Azure AD)

Anda dapat menggunakan pustaka klien identitas Azure untuk JS untuk mengautentikasi aplikasi Anda dengan Microsoft Azure AD.

Contoh ini membuat instance DataLakeServiceClient menggunakan ID klien, rahasia klien, dan ID penyewa. Untuk mendapatkan nilai ini, lihat Memperoleh token dari Microsoft Azure AD untuk mengotorisasi permintaan dari aplikasi klien.

function GetDataLakeServiceClientAD(accountName, clientID, clientSecret, tenantID) {

  const credential = new ClientSecretCredential(tenantID, clientID, clientSecret);

  const datalakeServiceClient = new DataLakeServiceClient(
      `https://${accountName}.dfs.core.windows.net`, credential);

  return datalakeServiceClient;
}

Catatan

Untuk contoh selengkapnya, lihat dokumentasi Pustaka klien identitas Azure untuk JS.

Membuat kontainer

Kontainer bertindak sebagai sistem file untuk file Anda. Anda dapat membuatnya dengan mendapatkan instance FileSystemClient, lalu memanggil metode FileSystemClient.Create.

Contoh ini membuat kontainer bernama my-file-system.

async function CreateFileSystem(datalakeServiceClient) {

  const fileSystemName = "my-file-system";

  const fileSystemClient = datalakeServiceClient.getFileSystemClient(fileSystemName);

  const createResponse = await fileSystemClient.create();

}

Buat direktori

Buat referensi direktori dengan mendapatkan instance DirectoryClient, lalu panggil metode DirectoryClient.create.

Contoh ini menambahkan direktori bernama my-directory ke kontainer.

async function CreateDirectory(fileSystemClient) {

  const directoryClient = fileSystemClient.getDirectoryClient("my-directory");

  await directoryClient.create();

}

Ganti nama atau pindahkan direktori

Ganti nama atau pindahkan direktori dengan memanggil metode DirectoryClient.rename. Berikan jalur direktori yang diinginkan sebuah parameter.

Contoh ini mengganti nama sub-direktori menjadi my-directory-renamed.

async function RenameDirectory(fileSystemClient) {

  const directoryClient = fileSystemClient.getDirectoryClient("my-directory");
  await directoryClient.move("my-directory-renamed");

}

Contoh ini memindahkan direktori yang dinamai my-directory-renamed ke sub-direktori bernama my-directory-2.

async function MoveDirectory(fileSystemClient) {

  const directoryClient = fileSystemClient.getDirectoryClient("my-directory-renamed");
  await directoryClient.move("my-directory-2/my-directory-renamed");

}

Menghapus direktori

Hapus direktori dengan memanggil metode DirectoryClient.delete.

Contoh ini menghapus direktori bernama my-directory.

async function DeleteDirectory(fileSystemClient) {

  const directoryClient = fileSystemClient.getDirectoryClient("my-directory");
  await directoryClient.delete();

}

Unggah file ke direktori

Pertama, baca file. Contoh ini menggunakan modul Node.js fs. Kemudian, buat referensi file di direktori target dengan membuat instance FileClient, lalu panggil metode FileClient.create. Unggah file dengan memanggil metode FileClient.append. Pastikan untuk melengkapi unggahan dengan memanggil metode FileClient.flush.

Contoh ini mengunggah file teks ke direktori bernama my-directory.

async function UploadFile(fileSystemClient) {

  const fs = require('fs')

  var content = "";

  fs.readFile('mytestfile.txt', (err, data) => {
      if (err) throw err;

      content = data.toString();

  })

  const fileClient = fileSystemClient.getFileClient("my-directory/uploaded-file.txt");
  await fileClient.create();
  await fileClient.append(content, 0, content.length);
  await fileClient.flush(content.length);

}

Unduh dari direktori

Pertama, buat instance FileSystemClient yang mewakili file yang ingin Anda unduh. Gunakan metode FileSystemClient.read untuk membaca file. Kemudian, tulis file. Contoh ini menggunakan modul Node.js fs untuk melakukan itu.

Catatan

Metode pengunduhan file ini hanya berfungsi untuk aplikasi Node.js. Jika Anda berencana untuk menjalankan kode Anda di browser, lihat pustaka klien Azure Storage File Data Lake untuk readme file JavaScript untuk contoh cara melakukan ini di browser.

async function DownloadFile(fileSystemClient) {

  const fileClient = fileSystemClient.getFileClient("my-directory/uploaded-file.txt");

  const downloadResponse = await fileClient.read();

  const downloaded = await streamToString(downloadResponse.readableStreamBody);

  async function streamToString(readableStream) {
    return new Promise((resolve, reject) => {
      const chunks = [];
      readableStream.on("data", (data) => {
        chunks.push(data.toString());
      });
      readableStream.on("end", () => {
        resolve(chunks.join(""));
      });
      readableStream.on("error", reject);
    });
  }

  const fs = require('fs');

  fs.writeFile('mytestfiledownloaded.txt', downloaded, (err) => {
    if (err) throw err;
  });
}

Daftar isi direktori

Contoh ini, mencetak nama setiap direktori dan file yang terletak di direktori bernama my-directory.

async function ListFilesInDirectory(fileSystemClient) {

  let i = 1;

  let iter = await fileSystemClient.listPaths({path: "my-directory", recursive: true});

  for await (const path of iter) {

    console.log(`Path ${i++}: ${path.name}, is directory: ${path.isDirectory}`);
  }

}

Lihat juga