Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Első lépések az Azure Blob Storage ügyfélkódtárával Node.js a TypeScripttel a blobok és tárolók kezeléséhez.
Ebben a cikkben lépéseket követve telepítheti a csomagot, és kipróbálhatja az alapműveletek példakódját.
API-referencia kódtár forráskódcsomagja |
Előfeltételek
- Azure-fiók aktív előfizetéssel – fiók létrehozása ingyenesen
- Azure Storage-fiók – Tárfiók létrehozása
- Node.js LTS
- TypeScript
Beállítás
Ez a szakasz végigvezeti egy projekt előkészítésén az Azure Blob Storage-ügyfélkódtár Node.js való használatához.
A Node.js projekt létrehozása
Hozzon létre egy Blob-Quickstart nevű TypeScript-alkalmazást.
Egy konzolablakban (például parancsmag, PowerShell vagy Bash) hozzon létre egy új könyvtárat a projekthez:
mkdir blob-quickstartVáltson az újonnan létrehozott blob-rövid útmutató könyvtárra:
cd blob-quickstartHozzon létre egy package.json fájlt:
npm init -yNyissa meg a projektet a Visual Studio Code-ban:
code .Szerkessze a package.json fájlt, és adja hozzá a következő tulajdonságokat az ESM TypeScripttel való támogatásához:
"type": "module",
A csomagok telepítése
A projektkönyvtárból telepítse a következő csomagokat a npm install paranccsal.
Telepítse az Azure Storage npm-csomagot:
npm install @azure/storage-blobTelepítse az ebben a rövid útmutatóban használt egyéb függőségeket:
npm install uuid dotenv @types/node @types/uuidHozzon létre egy
tsconfig.jsonfájlt a projektkönyvtárban az alábbi tartalommal.{ "compilerOptions": { "target": "es2022", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ "module": "ESNext", /* Specify what module code is generated. */ "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */ "outDir": "dist", /* Specify an output folder for all emitted files. */ "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */ "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ "strict": true, /* Enable all strict type-checking options. */ "skipLibCheck": true /* Skip type checking all .d.ts files. */ } }
Objektummodell
Az Azure Blob Storage nagy mennyiségű strukturálatlan adat tárolására van optimalizálva. A strukturálatlan adatok olyan adatok, amelyek nem követnek egy adott adatmodellt vagy -definíciót, például szöveges vagy bináris adatok. A Blob Storage háromféle erőforrást kínál:
- A tárfiók
- Tároló a tárfiókban
- Blob a tárolóban
Az alábbi ábra az ezen erőforrások közötti kapcsolatot mutatja be.
Az alábbi JavaScript-osztályokkal kezelheti ezeket az erőforrásokat:
-
BlobServiceClient: Az
BlobServiceClientosztály lehetővé teszi az Azure Storage-erőforrások és blobtárolók manipulálására. -
ContainerClient: Az
ContainerClientosztály lehetővé teszi az Azure Storage-tárolók és a blobok manipulálására. -
BlobClient: Az
BlobClientosztály lehetővé teszi az Azure Storage-blobok manipulálására.
Kódpéldák
Ezek a példakódrészletek bemutatják, hogyan végezheti el a következő feladatokat a JavaScripthez készült Azure Blob Storage ügyfélkódtárral:
- Hitelesítés az Azure-ban és a blobadatokhoz való hozzáférés engedélyezése
- Tároló létrehozása
- Blobok feltöltése tárolóba
- A tárolóban lévő blobok listázása
- Blobok letöltése
- Tároló törlése
A mintakód a GitHubon is elérhető.
Hitelesítés az Azure-ban és a blobadatokhoz való hozzáférés engedélyezése
Az Azure Blob Storage-ba irányuló alkalmazáskéréseket engedélyezni kell.
DefaultAzureCredential Az Azure Identity-ügyfélkódtár által biztosított osztály használata ajánlott módszer az Azure-szolgáltatásokhoz való jelszó nélküli kapcsolatok implementálásához a kódban, beleértve a Blob Storage-t is.
Az Azure Blob Storage-ra irányuló kéréseket a fiók hozzáférési kulcsával is engedélyezheti. Ezt a megközelítést azonban körültekintően kell alkalmazni. A fejlesztőknek szorgalmasnak kell lenniük, hogy soha ne tegyék elérhetővé a hozzáférési kulcsot nem biztonságos helyen. Bárki, aki rendelkezik a hozzáférési kulccsal, engedélyezheti a tárfiókra irányuló kérelmeket, és hatékonyan hozzáférhet az összes adathoz.
DefaultAzureCredential továbbfejlesztett felügyeleti és biztonsági előnyöket kínál a fiókkulcson keresztül a jelszó nélküli hitelesítés engedélyezéséhez. Az alábbi példában mindkét lehetőség látható.
DefaultAzureCredential több hitelesítési módszert támogat, és meghatározza, hogy melyik metódust kell használni futásidőben. Ez a megközelítés lehetővé teszi, hogy az alkalmazás különböző hitelesítési módszereket használjon különböző környezetekben (helyi és éles környezetben) környezetspecifikus kód implementálása nélkül.
A hitelesítő adatokat kereső sorrend és helyek DefaultAzureCredential az Azure Identity-kódtár áttekintésében találhatók.
Az alkalmazás például hitelesítheti az Azure CLI bejelentkezési hitelesítő adataival a helyi fejlesztés során. Az alkalmazás ezután használhat felügyelt identitást az Azure-ban való üzembe helyezés után. Ehhez az áttűnéshez nincs szükség kódmódosításra.
Szerepkörök hozzárendelése a Microsoft Entra felhasználói fiókjához
Helyi fejlesztéskor győződjön meg arról, hogy a blobadatokhoz hozzáférő felhasználói fiók rendelkezik a megfelelő engedélyekkel. A blobadatok olvasásához és írásához tárolóblobadatok közreműködője szükséges. A szerepkör hozzárendeléséhez hozzá kell rendelnie a Felhasználói hozzáférés rendszergazdája szerepkört, vagy egy másik szerepkört, amely tartalmazza a Microsoft.Authorization/roleAssignments/write műveletet. Azure RBAC-szerepköröket rendelhet egy felhasználóhoz az Azure Portal, az Azure CLI vagy az Azure PowerShell használatával. A Storage Blob Data Közreműködő szerepkörével kapcsolatos további információkért lásd: Storage Blob Data Közreműködő. A szerepkör-hozzárendelésekhez elérhető hatókörökről további információt az Azure RBAC hatókörének ismertetése című témakörben talál.
Ebben a forgatókönyvben engedélyeket rendel hozzá a felhasználói fiókjához, amely a tárfiókra terjed ki, hogy kövesse a minimális jogosultság elvét. Ez a gyakorlat csak a minimálisan szükséges engedélyeket biztosítja a felhasználóknak, és biztonságosabb éles környezeteket hoz létre.
Az alábbi példa a Storage Blob Data Contributor szerepkört rendeli hozzá a felhasználói fiókjához, amely olvasási és írási hozzáférést biztosít a tárfiók blobadataihoz.
Fontos
A szerepkör-hozzárendelés propagálása a legtöbb esetben egy-két percet vesz igénybe az Azure-ban, de ritkán akár nyolc percet is igénybe vehet. Ha hitelesítési hibákat kap a kód első futtatásakor, várjon néhány percet, és próbálkozzon újra.
Az Azure Portalon keresse meg a tárfiókot a fő keresősávon vagy a bal oldali navigációs sávon.
A tárfiók áttekintési lapján válassza a Hozzáférés-vezérlés (IAM) lehetőséget a bal oldali menüben.
A Hozzáférés-vezérlés (IAM) lapon válassza a Szerepkör-hozzárendelések lapot.
Válassza a +Hozzáadás lehetőséget a felső menüből, majd a szerepkör-hozzárendelés hozzáadása lehetőséget az eredményül kapott legördülő menüből.
A keresőmezővel szűrheti az eredményeket a kívánt szerepkörre. Ebben a példában keresse meg a Storage Blob-adatszolgáltatót, és válassza ki a megfelelő eredményt, majd válassza a Tovább gombot.
A Hozzáférés hozzárendelése területen válassza a Felhasználó, csoport vagy szolgáltatásnév lehetőséget, majd válassza a + Tagok kijelölése lehetőséget.
A párbeszédpanelen keresse meg a Microsoft Entra-felhasználónevet (általában a user@domain e-mail-címét), majd válassza a Párbeszédpanel alján található Kiválasztás lehetőséget.
Válassza a Véleményezés + hozzárendelés lehetőséget a végső lapra való ugráshoz, majd a folyamat befejezéséhez a Véleményezés + hozzárendelés lehetőséget.
Jelentkezzen be, és csatlakoztassa az alkalmazáskódot az Azure-hoz a DefaultAzureCredential használatával
A tárfiókban lévő adatokhoz való hozzáférést az alábbi lépések végrehajtásával engedélyezheti:
Győződjön meg arról, hogy ugyanazzal a Microsoft Entra-fiókkal van hitelesítve, amelyhez a szerepkört hozzárendelte a tárfiókban. Hitelesítést az Azure CLI, a Visual Studio Code vagy az Azure PowerShell használatával végezhet.
Jelentkezzen be az Azure-ba az Azure CLI-vel a következő paranccsal:
az loginA használathoz
DefaultAzureCredentialgyőződjön meg arról, hogy a @azure\identity csomag telepítve van, és az osztály importálva van:import { DefaultAzureCredential } from '@azure/identity';Adja hozzá ezt a kódot a blokkba
try. Amikor a kód a helyi munkaállomáson fut,DefaultAzureCredentiala kiemelt eszköz fejlesztői hitelesítő adatait használja az Azure-beli hitelesítéshez. Ilyen eszközök például az Azure CLI vagy a Visual Studio Code.const accountName = process.env.AZURE_STORAGE_ACCOUNT_NAME as string; if (!accountName) throw Error('Azure Storage accountName not found'); // Add `Storage Blob Data Contributor` role assignment to the identity const blobServiceClient = new BlobServiceClient( `https://${accountName}.blob.core.windows.net`, new DefaultAzureCredential() );Frissítse a tárfiók nevét
AZURE_STORAGE_ACCOUNT_NAMEa.envfájlban vagy a környezet változóiban. A tárfiók neve az Azure Portal áttekintési oldalán található.
Feljegyzés
Az Azure-ban való üzembe helyezéskor ugyanezzel a kóddal engedélyezheti az Azure Storage-ra irányuló kéréseket egy Azure-ban futó alkalmazásból. Azonban engedélyeznie kell a felügyelt identitást az alkalmazásban az Azure-ban. Ezután konfigurálja a tárfiókot úgy, hogy lehetővé tegye a felügyelt identitás csatlakozását. Az Azure-szolgáltatások közötti kapcsolat konfigurálásával kapcsolatos részletes utasításokért tekintse meg az Azure által üzemeltetett alkalmazások hitelesítési útmutatójában.
Tároló létrehozása
Hozzon létre egy új tárolót a tárfiókban. Az alábbi példakód egy BlobServiceClient objektumot használ, és meghívja a getContainerClient metódust egy tárolóra mutató hivatkozás lekéréséhez. Ezután a kód meghívja a létrehozási metódust, hogy ténylegesen létrehozza a tárolót a tárfiókban.
Adja hozzá ezt a kódot a blokk végéhez try :
const containerName = 'quickstart' + uuidv4();
console.log('\nCreating container...');
console.log('\t', containerName);
const containerClient = blobServiceClient.getContainerClient(containerName);
const createContainerResponse: ContainerCreateResponse = await containerClient.create();
console.log(
`Container was created successfully.\n\trequestId:${createContainerResponse.requestId}\n\tURL: ${containerClient.url}`
);
A tárolók létrehozásával és további kódmintákkal kapcsolatos további információkért lásd : Blobtároló létrehozása JavaScripttel.
Fontos
A tárolók nevei csak kisbetűket tartalmazhatnak. A tárolók és blobok elnevezésével kapcsolatos további információkért lásd a tárolók, blobok és metaadatok elnevezését és hivatkozását.
Blobok feltöltése tárolóba
Töltsön fel egy blobot a tárolóba. Az alábbi kód egy BlockBlobClient-objektumra mutató hivatkozást kap a getBlockBlobClient metódus meghívásával a ContainerClienten a Tároló létrehozása szakaszból.
A kód a feltöltési módszer meghívásával feltölti a szöveges sztringadatokat a blobba.
Adja hozzá ezt a kódot a blokk végéhez try :
const blobName = 'quickstart' + uuidv4(); + '.txt';
const blockBlobClient: BlockBlobClient = containerClient.getBlockBlobClient(blobName);
console.log(
`\nUploading to Azure storage as blob\n\tname: ${blobName}:\n\tURL: ${blockBlobClient.url}`
);
const data = 'Hello, World!';
const uploadBlobResponse: BlockBlobUploadResponse = await blockBlobClient.upload(data, data.length);
console.log(
`Blob was uploaded successfully. requestId: ${uploadBlobResponse.requestId}`
);
Ha többet szeretne megtudni a blobok feltöltéséről, és további kódmintákat szeretne megismerni, olvassa el a Blob feltöltése JavaScripttel című témakört.
Tárolóban lévő blobok kilistázása
Listázza a tárolóban található blobokat. Az alábbi kód meghívja a listBlobsFlat metódust . Ebben az esetben csak egy blob található a tárolóban, ezért a listázási művelet csak azt az egy blobot adja vissza.
Adja hozzá ezt a kódot a blokk végéhez try :
console.log('\nListing blobs...');
for await (const blob of containerClient.listBlobsFlat()) {
const tempBlockBlobClient: BlockBlobClient = containerClient.getBlockBlobClient(blob.name);
console.log(
`\n\tname: ${blob.name}\n\tURL: ${tempBlockBlobClient.url}\n`
);
}
A blobok listázásáról és további kódminták megismeréséről további információt a Blobok listázása JavaScript használatával című témakörben talál.
Blobok letöltése
Töltse le a blobot, és jelenítse meg a tartalmat. Az alábbi kód meghívja a letöltési módszert a blob letöltésére.
Adja hozzá ezt a kódot a blokk végéhez try :
const offset = 0; // start at beginning
const length = undefined; // read all
const downloadBlockBlobResponse: BlobDownloadResponseParsed = await blockBlobClient.download(offset, length);
console.log('\nDownloaded blob content...');
console.log(
'\t',
await streamToText(downloadBlockBlobResponse.readableStreamBody as NodeJS.ReadableStream)
);
Az alábbi kód visszaalakít egy streamet sztringgé a tartalom megjelenítéséhez.
Adja hozzá ezt a kódot :
// Convert stream to text
async function streamToText(readable: NodeJS.ReadableStream): Promise<string> {
readable.setEncoding('utf8');
let data = '';
for await (const chunk of readable) {
data += chunk;
}
return data;
}
Ha többet szeretne megtudni a blobok letöltéséről, és további kódmintákat szeretne megismerni, olvassa el a Blob letöltése JavaScripttel című témakört.
Tároló törlése
Törölje a tárolót és a tárolón belüli összes blobot. Az alábbi kód megtisztítja az alkalmazás által létrehozott erőforrásokat a teljes tároló törlési módszerrel történő eltávolításával.
Adja hozzá ezt a kódot a blokk végéhez try :
console.log('\nDeleting container...');
const deleteContainerResponse: ContainerDeleteResponse = await containerClient.delete();
console.log(
'Container was deleted successfully. requestId: ',
deleteContainerResponse.requestId
);
Ha többet szeretne megtudni a tároló törléséről, és további kódmintákat szeretne megismerni, olvassa el a Blob-tároló törlése és visszaállítása JavaScripttel című témakört.
A kód futtatása
Egy Visual Studio Code-terminálból hozza létre az alkalmazást.
tscFuttassa az alkalmazást.
node dist/index.jsAz alkalmazás kimenete a következő példához hasonló:
Azure Blob storage - JavaScript quickstart sample Creating container... quickstart4a0780c0-fb72-11e9-b7b9-b387d3c488da Uploading to Azure Storage as blob: quickstart4a3128d0-fb72-11e9-b7b9-b387d3c488da.txt Listing blobs... quickstart4a3128d0-fb72-11e9-b7b9-b387d3c488da.txt Downloaded blob content... Hello, World! Deleting container... Done
Haladjon végig a hibakeresőben található kódon, és ellenőrizze az Azure Portalt a folyamat során. Ellenőrizze, hogy a tároló létre lett-e hozva. Megnyithatja a blobot a tárolóban, és megtekintheti a tartalmat.
Az erőforrások eltávolítása
- Ha végzett ezzel a rövid útmutatóval, törölje a címtárat
blob-quickstart. - Ha végzett az Azure Storage-erőforrással, az Azure CLI használatával távolítsa el a Storage-erőforrást.