Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Artikel ini memperlihatkan kepada Anda cara membuat dan menggunakan token SAS akun untuk menggunakan pustaka klien Azure Blob Storage v12 untuk JavaScript. Setelah terhubung, kode Anda dapat beroperasi pada kontainer, blob, dan fitur layanan Blob Storage.
Cuplikan kode sampel tersedia di GitHub sebagai file Node.js yang dapat dijalankan.
Paket (npm) | Contoh | referensi API | Kode sumber pustaka | Berikan Umpan Balik
Token SAS akun
Token SAS akun adalah salah satu jenis token SAS untuk delegasi akses yang disediakan oleh Azure Storage. Token SAS akun menyediakan akses ke Azure Storage. Token tersebut hanya seketat batasan yang Anda tentukan saat membuatnya. Karena siapa pun dengan token dapat menggunakannya untuk mengakses akun Storage Anda, Anda harus menentukan token dengan izin paling ketat yang masih memungkinkan token untuk menyelesaikan tugas yang diperlukan.
Praktik terbaik untuk pembuatan token termasuk membatasi izin:
- Layanan: blob, file, queue, tabel
- Jenis sumber daya: layanan, kontainer, atau objek
- Izin seperti membuat, membaca, menulis, memperbarui, dan menghapus
Menambahkan dependensi yang diperlukan ke aplikasi Anda
Sertakan dependensi yang diperlukan untuk membuat token SAS akun.
const {
BlobServiceClient,
generateAccountSASQueryParameters,
AccountSASPermissions,
AccountSASServices,
AccountSASResourceTypes,
StorageSharedKeyCredential,
SASProtocol
} = require('@azure/storage-blob');
require('dotenv').config()
Mendapatkan variabel lingkungan untuk membuat kredensial kunci bersama
Gunakan nama dan kunci akun Blob Storage untuk membuat StorageSharedKeyCredential. Kunci ini diperlukan untuk membuat token SAS dan menggunakan token SAS.
Buat StorageSharedKeyCredential dengan menggunakan nama akun penyimpanan dan kunci akun. Kemudian gunakan StorageSharedKeyCredential untuk menginisialisasi BlobServiceClient.
const constants = {
accountName: process.env.AZURE_STORAGE_ACCOUNT_NAME,
accountKey: process.env.AZURE_STORAGE_ACCOUNT_KEY
};
const sharedKeyCredential = new StorageSharedKeyCredential(
constants.accountName,
constants.accountKey
);
Kerangka operasi asinkron
Cuplikan kode sampel yang tersisa mengasumsikan kode boilerplate asinkron berikut untuk Node.js.
async function main() {
const sasToken = await createAccountSas();
await useSasToken(sasToken);
}
main()
.then(() => {
console.log(`done`);
}).catch((ex) => {
console.log(`Error: ${ex.message}`)
});
Membuat token SAS
Karena token ini dapat digunakan dengan blob, antrean, tabel, dan file, beberapa pengaturan lebih luas daripada hanya opsi blob.
Buat objek opsi.
Cakupan kemampuan token SAS ditentukan oleh AccountSASSignatureValues.
Gunakan fungsi pembantu berikut yang disediakan oleh SDK untuk membuat jenis nilai yang benar untuk nilai:
-
AccountSASServices.parse("btqf").toString():
- b: blob
- t: tabel
- t: kueri
- f: file
-
resourceTypes: AccountSASResourceTypes.parse("sco").toString()
- s: layanan
- c: kontainer - seperti kontainer blob, tabel atau antrean
- o: objek - blob, baris, pesan
-
izin: AccountSASPermissions.parse("rwdlacupi")
- r: baca
- w: tulis
- d: hapus
- l: daftar
- f: filter
- a: tambahkan
- c: buat
- u: memperbarui
- t: akses ke tag
- p: proses - seperti memproses pesan dalam antrean
- i: menetapkan kebijakan imutabilitas
-
AccountSASServices.parse("btqf").toString():
Teruskan objek ke fungsi generateAccountSASQueryParameters , bersama dengan SharedKeyCredential, untuk membuat token SAS.
Sebelum mengembalikan token SAS, sematkan pembatas string kueri,
?.async function createAccountSas() { const sasOptions = { services: AccountSASServices.parse("btqf").toString(), // blobs, tables, queues, files resourceTypes: AccountSASResourceTypes.parse("sco").toString(), // service, container, object permissions: AccountSASPermissions.parse("rwdlacupi"), // permissions protocol: SASProtocol.Https, startsOn: new Date(), expiresOn: new Date(new Date().valueOf() + (10 * 60 * 1000)), // 10 minutes }; const sasToken = generateAccountSASQueryParameters( sasOptions, sharedKeyCredential ).toString(); console.log(`sasToken = '${sasToken}'\n`); // prepend sasToken with `?` return (sasToken[0] === '?') ? sasToken : `?${sasToken}`; }Amankan token SAS hingga digunakan.
Gunakan layanan Blob dengan token SAS untuk akun
Untuk menggunakan token SAS akun, Anda perlu menggabungkannya dengan nama akun untuk membuat URI. Sediakan URI untuk membuat blobServiceClient. Setelah Anda memiliki blobServiceClient, Anda dapat menggunakan klien tersebut untuk mengakses layanan Blob Anda.
// connect-with-sas-token.js
const { BlobServiceClient } = require('@azure/storage-blob');
require('dotenv').config()
const accountName = process.env.AZURE_STORAGE_ACCOUNT_NAME;
const sasToken = process.env.AZURE_STORAGE_SAS_TOKEN;
if (!accountName) throw Error('Azure Storage accountName not found');
if (!sasToken) throw Error('Azure Storage accountKey not found');
const blobServiceUri = `https://${accountName}.blob.core.windows.net`;
// https://YOUR-RESOURCE-NAME.blob.core.windows.net?YOUR-SAS-TOKEN
const blobServiceClient = new BlobServiceClient(
`${blobServiceUri}?${sasToken}`,
null
);
async function main(){
const containerName = 'REPLACE-WITH-EXISTING-CONTAINER-NAME';
const blobName = 'REPLACE-WITH-EXISTING-BLOB-NAME';
const timestamp = Date.now();
const fileName = `my-new-file-${timestamp}.txt`;
// create container client
const containerClient = await blobServiceClient.getContainerClient(containerName);
// create blob client
const blobClient = await containerClient.getBlockBlobClient(blobName);
// download file
await blobClient.downloadToFile(fileName);
console.log(`${fileName} downloaded`);
}
main()
.then(() => console.log(`done`))
.catch((ex) => console.log(`error: ${ex.message}`));
Paket dotenv digunakan untuk membaca nama akun penyimpanan Anda dari .env file. File ini tidak boleh diperiksa ke kontrol sumber.