Aracılığıyla paylaş


Azure Blob Depolama ve JavaScript ile hesap SAS belirteçleri oluşturma ve kullanma

Bu makalede, JavaScript için Azure Blob Depolama istemci kitaplığı v12'yi kullanmak üzere hesap SAS belirteçlerini oluşturma ve kullanma adımları gösterilmektedir. Bağlandıktan sonra kodunuz Blob Depolama hizmetinin kapsayıcıları, blobları ve özellikleri üzerinde çalışabilir.

Örnek kod parçacıkları GitHub'da çalıştırılabilir Node.js dosyaları olarak kullanılabilir.

Paket (npm) | Örnekler | API referansı | Kitaplık kaynak kodu | Geri Bildirim Ver

Hesap SAS belirteçleri

Hesap SAS belirteci, Azure Depolama tarafından sağlanan erişim yetkilendirmesi için bir SAS belirteci türüdür. Azure Depolama'ya erişim sağlamak için bir hesap SAS belirteci kullanılır. Belirteç yalnızca oluştururken tanımladığınız kadar kısıtlayıcıdır. Belirteci olan herkes Depolama hesabınıza erişmek için bunu kullanabileceğinden belirteci, belirtecin gerekli görevleri tamamlamasına izin veren en kısıtlayıcı izinlerle tanımlamanız gerekir.

Belirteç oluşturmaya yönelik en iyi yöntemler , izinleri sınırlamayı içerir:

  • Hizmetler: blob, dosya, kuyruk, tablo
  • Kaynak türleri: hizmet, kapsayıcı veya nesne
  • Oluşturma, okuma, yazma, güncelleştirme ve silme gibi izinler

Uygulamanıza gerekli bağımlılıkları ekleme

SAS hesap belirteci oluşturmak için gerekli bağımlılıkları ekleyin.

const { 
    BlobServiceClient, 
    generateAccountSASQueryParameters, 
    AccountSASPermissions, 
    AccountSASServices,
    AccountSASResourceTypes,
    StorageSharedKeyCredential,
    SASProtocol 
} = require('@azure/storage-blob');
require('dotenv').config()

Paylaşılan anahtar kimlik bilgileri oluşturmak için ortam değişkenlerini alma

StorageSharedKeyCredential oluşturmak için Blob Depolama hesabı adını ve anahtarını kullanın. Sas belirtecini oluşturmak ve SAS belirtecini kullanmak için bu anahtar gereklidir.

Depolama hesabı adını ve hesap anahtarını kullanarak storageSharedKeyCredential oluşturun. Ardından BlobServiceClient başlatmak için StorageSharedKeyCredential komutunu kullanın.

const constants = {
    accountName: process.env.AZURE_STORAGE_ACCOUNT_NAME,
    accountKey: process.env.AZURE_STORAGE_ACCOUNT_KEY
};
const sharedKeyCredential = new StorageSharedKeyCredential(
    constants.accountName,
    constants.accountKey
);

Zaman uyumsuz işlem şablonu

Kalan örnek kod parçacıkları, Node.jsiçin aşağıdaki zaman uyumsuz şablon kodu varsayar.

async function main() {

    const sasToken = await createAccountSas();

    await useSasToken(sasToken);
}

main()
    .then(() => {
        console.log(`done`);
    }).catch((ex) => {
        console.log(`Error: ${ex.message}`)
    });

SAS belirteci oluşturma

Bu belirteç bloblar, kuyruklar, tablolar ve dosyalarla kullanılabildiğinden bazı ayarlar yalnızca blob seçeneklerinden daha geniştir.

  1. Options nesnesini oluşturun.

    SAS belirtecinin yeteneklerinin kapsamı AccountSASSignatureValues tarafından tanımlanır.

    Değerler için doğru değer türlerini oluşturmak için SDK tarafından sağlanan aşağıdaki yardımcı işlevleri kullanın:

  2. SAS belirtecini oluşturmak için nesnesini SharedKeyCredential ile birlikte generateAccountSASQueryParameters işlevine geçirin.

    SAS belirtecini döndürmeden önce, sorgu dizesi sınırlayıcısını, ? ön ek olarak ekleyin.

    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}`;
    }
    
  3. SAS belirtecini, kullanılana kadar koruyun.

Blob hizmetini SAS hesap jetonuyla kullanma

Hesap SAS belirtecini kullanmak için URI'yi oluşturmak için bunu hesap adıyla birleştirmeniz gerekir. blobServiceClient oluşturmak için URI'yi geçirin. BlobServiceClient'ı aldıktan sonra, Blob hizmetinize erişmek için bu istemciyi kullanabilirsiniz.

// 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 , depolama hesabınızın adını bir .env dosyadan okumak için kullanılır. Bu dosya kaynak denetiminde denetlenmemelidir.

Ayrıca bkz.