Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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.
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:
-
AccountSASServices.parse("btqf").toString():
- b: veri kümesi
- t: tablo
- q: sorgu
- f: dosya
-
resourceTypes: AccountSASResourceTypes.parse("sco").toString()
- s: hizmet
- c: konteyner - blob konteyneri, tablo veya kuyruk gibi
- o: object - blob, satır, ileti
-
permissions: AccountSASPermissions.parse("rwdlacupi")
- r: okuma
- w: yaz
- d: sil
- l: liste
- f: filtre
- a: ekle
- c: oluştur
- u: güncelleştirme
- t: etiket erişimi
- p: process - kuyruktaki iletileri işleme gibi
- i: değişmezlik ilkesini ayarlama
-
AccountSASServices.parse("btqf").toString():
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}`; }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.