إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
ابدأ باستخدام مكتبة عميل Azure Blob Storage ل C++ . Azure Blob Storage هو حل تخزين الكائنات من Microsoft للسحابة. يُرجى اتباع هذه الخطوات لتثبيت الحزمة وتجربة التعليمات البرمجية للمهام الأساسية.
| الوثائق المرجعية لواجهة | برمجة التطبيقاتكود | العينات |
المتطلبات الأساسية
- اشتراك Azure - إنشاء اشتراك مجاني
- حساب تخزين Azure - إنشاء حساب تخزين
- مترجم C ++
-
CMake - vcpkg - مدير حزم C و C ++
اعداد
يرشدك هذا القسم خلال إعداد مشروع للعمل مع مكتبة عميل Azure Blob Storage ل C++. أسهل طريقة للحصول على Azure SDK ل C++ هي استخدام vcpkg مدير الحزم.
قم بتثبيت الحِزَم
استخدم الأمر vcpkg install لتثبيت مكتبة Azure Blob Storage ل C++ والتبعيات الضرورية:
vcpkg.exe install azure-storage-blobs-cpp
مكتبة Azure Identity مطلوبة للاتصالات بدون كلمة مرور بخدمات Azure:
vcpkg.exe install azure-identity-cpp
لمزيد من المعلومات حول إعداد المشروع والعمل مع Azure SDK ل C++، راجع الملف التمهيدي Azure SDK ل C++.
إنشاء مشروع
في Visual Studio، قم بإنشاء تطبيق وحدة تحكم C++ جديد لنظام التشغيل Windows يسمى BlobQuickstart.
نموذج الكائن
تم تحسين Azure Blob Storage لتخزين كميات هائلة من البيانات غير المنظمة. البيانات غير المهيكلة هي البيانات التي لا تلتزم بنموذج بيانات أو تعريف معين، مثل البيانات النصية أو الثنائية. يوفر Blob Storage ثلاثة أنواع من الموارد:
- حساب التخزين
- حاوية في حساب التخزين
- كائن ثنائي كبير الحجم في الحاوية
يوضح الرسم البياني التالي العلاقة بين هذه الموارد.
استخدم فئات C++ هذه للتفاعل مع هذه الموارد:
-
BlobServiceClient: تسمح لك الفئة
BlobServiceClientبمعالجة موارد Azure Storage وحاويات الكائن الثنائي كبير الحجم. -
BlobContainerClient: تسمح لك الفئة
BlobContainerClientبمعالجة حاويات Azure Storage والكائنات الثنائية كبيرة الحجم الخاصة بها. -
BlobClient: يسمح لك الفصل
BlobClientبمعالجة الكائنات الثنائية كبيرة الحجم في Azure Storage. إنها الفئة الأساسية لجميع فئات الكائن الثنائي كبير الحجم المتخصصة. -
BlockBlobClient: تسمح لك الفئة
BlockBlobClientبمعالجة الكائنات الثنائية كبيرة الحجم لكتلة Azure Storage.
أمثلة على التعليمات البرمجية
توضح لك هذه القصاصات البرمجية النموذجية كيفية القيام بالمهام التالية باستخدام مكتبة عميل Azure Blob Storage ل C++:
- إضافة ملفات مضمنة
- المصادقة على Azure وتخويل الوصول إلى بيانات الكائن الثنائي كبير الحجم
- إنشاء حاوية
- تحميل الكائنات الثنائية كبيرة الحجم إلى حاوية
- إدراج الكائنات الثنائية كبيرة الحجم في حاوية
- تنزيل الكائنات الثنائية كبيرة الحجم
- حذف حاوية
إضافة ملفات مضمنة
من دليل المشروع:
- فتح ملف حل BlobQuickstart.sln في Visual Studio
- داخل Visual Studio، افتح ملف المصدر BlobQuickstart.cpp
- قم بإزالة أي رمز بداخله
mainتم إنشاؤه تلقائيا - إضافة
#includeوبياناتusing namespace
#include <iostream>
#include <azure/core.hpp>
#include <azure/identity/default_azure_credential.hpp>
#include <azure/storage/blobs.hpp>
using namespace Azure::Identity;
using namespace Azure::Storage::Blobs;
المصادقة على Azure وتخويل الوصول إلى بيانات الكائن الثنائي كبير الحجم
يجب تفويض طلبات التطبيق إلى Azure Blob Storage. يعد استخدام الفئة التي DefaultAzureCredential توفرها مكتبة عميل Azure Identity هو النهج الموصى به لتنفيذ اتصالات بدون كلمة مرور بخدمات Azure في التعليمات البرمجية الخاصة بك، بما في ذلك Blob Storage.
يمكنك أيضا تخويل الطلبات إلى Azure Blob Storage باستخدام مفتاح الوصول إلى الحساب. ومع ذلك ، يجب استخدام هذا النهج بحذر. يجب أن يكون المطورون مجتهدين لعدم كشف مفتاح الوصول في موقع غير آمن. يمكن لأي شخص لديه مفتاح الوصول تفويض الطلبات مقابل حساب التخزين ، ويمكنه الوصول بشكل فعال إلى جميع البيانات.
DefaultAzureCredential يوفر مزايا إدارة وأمان محسنة على مفتاح الحساب للسماح بالمصادقة بدون كلمة مرور. يتم توضيح كلا الخيارين في المثال التالي.
توفر مكتبة Azure Identity دعم مصادقة الرمز المميز ل Microsoft Entra عبر Azure SDK. يوفر مجموعة من TokenCredential التطبيقات التي يمكن استخدامها لإنشاء عملاء Azure SDK الذين يدعمون مصادقة الرمز المميز ل Microsoft Entra.
DefaultAzureCredential يدعم طرق المصادقة المتعددة ويحدد الطريقة التي يجب استخدامها في وقت التشغيل.
تعيين الأدوار إلى حساب مستخدم Microsoft Entra الخاص بك
عند التطوير محليا، تأكد من أن حساب المستخدم الذي يصل إلى بيانات الكائن الثنائي كبير الحجم لديه الأذونات الصحيحة. ستحتاج إلى مساهم بيانات كائن ثنائي كبير الحجم للتخزين لقراءة بيانات الكائن الثنائي كبير الحجم وكتابتها. لتعيين هذا الدور لنفسك، ستحتاج إلى تعيين دور مسؤول وصول المستخدم، أو دور آخر يتضمن إجراء Microsoft.Authorization/roleAssignments/write . يمكنك تعيين أدوار Azure RBAC لمستخدم باستخدام مدخل Microsoft Azure أو Azure CLI أو Azure PowerShell. لمزيد من المعلومات حول دور مساهم بيانات Storage Blob ، راجع مساهم بيانات Blob للتخزين. لمزيد من المعلومات حول النطاقات المتوفرة لتعيينات الأدوار، راجع فهم نطاق Azure RBAC.
في هذا السيناريو، ستقوم بتعيين أذونات لحساب المستخدم الخاص بك، في نطاق حساب التخزين، لاتباع مبدأ الامتياز الأقل. تمنح هذه الممارسة المستخدمين الحد الأدنى من الأذونات المطلوبة فقط وتنشئ بيئات تشغيل أكثر أمانًا.
سيقوم المثال التالي بتعيين دور مساهم بيانات كائن ثنائي كبير الحجم للتخزين إلى حساب المستخدم الخاص بك، والذي يوفر حق الوصول للقراءة والكتابة إلى بيانات الكائن الثنائي كبير الحجم في حساب التخزين الخاص بك.
هام
في معظم الحالات، سيستغرق نشر تعيين الدور في Azure دقيقة أو دقيقتين، ولكن في حالات نادرة قد يستغرق الأمر ما يصل إلى ثماني دقائق. إذا تلقيت أخطاء المصادقة عند تشغيل التعليمات البرمجية لأول مرة، فانتظر بضع لحظات وحاول مرة أخرى.
في مدخل Microsoft Azure، حدد موقع حساب التخزين الخاص بك باستخدام شريط البحث الرئيسي أو شريط التنقل الأيسر.
في صفحة نظرة عامة على حساب التخزين، حدد التحكم في الوصول (IAM) من القائمة اليمنى.
حدد صفحة التحكم بالوصول (IAM)، وحدد علامة تبويب تعيينات الدور.
حدد + إضافة من القائمة العلوية ثم إضافة تعيين الدور من القائمة المنسدلة الناتجة.
استخدم مربع البحث لتصفية النتائج إلى الدور المطلوب. على سبيل المثال، ابحث عن مساهم بيانات كائن ثنائي كبير الحجم للتخزين وحدد نتيجة المطابقة، ثم اختر التالي.
ضمن تعيين الوصول إلى، حدد المستخدم أو المجموعة أو كيان الخدمة، ثم اختر + تحديد الأعضاء.
في مربع الحوار، ابحث عن اسم مستخدم Microsoft Entra (عنوان بريدك الإلكتروني user@domain عادة) ثم اختر تحديد في أسفل مربع الحوار.
حدد مراجعة + تعيين للانتقال إلى الصفحة النهائية، ثم مراجعة + تعيين مرة أخرى لإكمال العملية.
تسجيل الدخول وتوصيل التعليمات البرمجية للتطبيق ب Azure باستخدام DefaultAzureCredential
يمكنك تفويض الوصول إلى البيانات في حساب التخزين الخاص بك باستخدام الخطوات التالية:
تأكد من مصادقتك باستخدام نفس حساب Microsoft Entra الذي قمت بتعيين الدور له في حساب التخزين الخاص بك. يمكنك المصادقة عبر Azure CLI. سجل الدخول إلى Azure من خلال Azure CLI باستخدام الأمر التالي:
az loginللاستخدام
DefaultAzureCredential، تأكد من تثبيت حزمة azure-identity-cpp وإضافة ما يلي#include:#include <azure/identity/default_azure_credential.hpp>أضف هذا الرمز إلى نهاية
main(). عندما يتم تشغيل التعليمات البرمجية على محطة العمل المحلية،DefaultAzureCredentialيستخدم بيانات اعتماد المطور ل Azure CLI للمصادقة على Azure.// Initialize an instance of DefaultAzureCredential auto defaultAzureCredential = std::make_shared<DefaultAzureCredential>(); auto accountURL = "https://<storage-account-name>.blob.core.windows.net"; BlobServiceClient blobServiceClient(accountURL, defaultAzureCredential);تأكد من تحديث اسم حساب التخزين في عنوان URI للكائن الخاص بك
BlobServiceClient. يمكن العثور على اسم حساب التخزين في صفحة نظرة عامة لمدخل Microsoft Azure.
إشعار
عند استخدام C++ SDK في بيئة إنتاج، يوصى بتمكين بيانات الاعتماد التي تعرف أن تطبيقك سيستخدمها فقط. بدلا من استخدام
DefaultAzureCredential، يجب عليك التفويض باستخدام نوع بيانات اعتماد معين، أو باستخدامChainedTokenCredentialبيانات الاعتماد المدعومة.
إنشاء حاوية
حدد اسما للحاوية الجديدة. ثم قم بإنشاء مثيل من BlobContainerClient الحاوية وإنشائها.
هام
يجب أن تكون أسماء الحاويات بأحرف صغيرة. لمزيد من المعلومات حول تسمية الحاويات والكائنات الثنائية كبيرة الحجم، راجع تسمية الحاويات والكائنات الثنائية كبيرة الحجم وبيانات التعريف والرجوع إليها.
أضف هذا الرمز إلى نهاية main():
std::string containerName = "myblobcontainer";
auto containerClient = blobServiceClient.GetBlobContainerClient("myblobcontainer");
// Create the container if it does not exist
std::cout << "Creating container: " << containerName << std::endl;
containerClient.CreateIfNotExists();
تحميل الكائنات الثنائية كبيرة الحجم إلى حاوية
مقتطف الشفرة التالي:
- يعلن عن سلسلة تحتوي على "Hello Azure!"
- يحصل على مرجع إلى كائن BlockBlobClient عن طريق استدعاء GetBlockBlobClient على الحاوية من قسم إنشاء حاوية .
- تحميل السلسلة إلى الكائن الثنائي كبير الحجم عن طريق استدعاء الدالة UploadFrom . تقوم هذه الدالة بإنشاء الكائن الثنائي كبير الحجم إذا لم تكن موجودة بالفعل، أو تقوم بتحديثها إذا كانت موجودة.
أضف هذا الرمز إلى نهاية main():
std::string blobName = "blob.txt";
uint8_t blobContent[] = "Hello Azure!";
// Create the block blob client
BlockBlobClient blobClient = containerClient.GetBlockBlobClient(blobName);
// Upload the blob
std::cout << "Uploading blob: " << blobName << std::endl;
blobClient.UploadFrom(blobContent, sizeof(blobContent));
إدراج الكائنات الثنائية كبيرة الحجم في حاوية
قم بإدراج الكائنات الثنائية كبيرة الحجم في الحاوية عن طريق استدعاء الدالة ListBlobs . تمت إضافة كائن ثنائي كبير الحجم واحد فقط إلى الحاوية، وبالتالي فإن العملية ترجع هذا الكائن الثنائي كبير الحجم فقط.
أضف هذا الرمز إلى نهاية main():
std::cout << "Listing blobs..." << std::endl;
auto listBlobsResponse = containerClient.ListBlobs();
for (auto blobItem : listBlobsResponse.Blobs)
{
std::cout << "Blob name: " << blobItem.Name << std::endl;
}
تنزيل الكائنات الثنائية كبيرة الحجم
احصل على خصائص الكائن الثنائي كبير الحجم الذي تم تحميله. بعد ذلك، قم بالإعلان عن كائن جديد std::vector<uint8_t> وتغيير حجمه باستخدام خصائص الكائن الثنائي كبير الحجم الذي تم تحميله. قم بتنزيل الكائن الثنائي كبير الحجم الذي تم إنشاؤه مسبقا في الكائن الجديد std::vector<uint8_t> عن طريق استدعاء الدالة DownloadTo في الفئة الأساسية BlobClient . أخيرا، اعرض بيانات الكائن الثنائي كبير الحجم التي تم تنزيلها.
أضف هذا الرمز إلى نهاية main():
auto properties = blobClient.GetProperties().Value;
std::vector<uint8_t> downloadedBlob(properties.BlobSize);
blobClient.DownloadTo(downloadedBlob.data(), downloadedBlob.size());
std::cout << "Downloaded blob contents: " << std::string(downloadedBlob.begin(), downloadedBlob.end()) << std::endl;
حذف كائن ثنائي كبير الحجم
تحذف التعليمات البرمجية التالية الكائن الثنائي كبير الحجم من حاوية Azure Blob Storage عن طريق استدعاء الدالة BlobClient.Delete .
std::cout << "Deleting blob: " << blobName << std::endl;
blobClient.Delete();
حذف حاوية
تقوم التعليمات البرمجية التالية بتنظيف الموارد التي أنشأها التطبيق عن طريق حذف الحاوية بأكملها باستخدام BlobContainerClient.حذف.
أضف هذا الرمز إلى نهاية main():
std::cout << "Deleting container: " << containerName << std::endl;
containerClient.Delete();
تشغيل التعليمات البرمجية
يقوم هذا التطبيق بإنشاء حاوية وتحميل ملف نصي إلى Azure Blob Storage. يسرد المثال بعد ذلك الكائنات الثنائية كبيرة الحجم في الحاوية، ويقوم بتنزيل الملف، ويعرض محتويات الملف. وأخيرا، يحذف التطبيق الكائن الثنائي كبير الحجم والحاوية.
يشبه إخراج التطبيق المثال التالي:
Azure Blob Storage - C++ quickstart sample
Creating container: myblobcontainer
Uploading blob: blob.txt
Listing blobs...
Blob name: blob.txt
Downloaded blob contents: Hello Azure!
Deleting blob: blob.txt
Deleting container: myblobcontainer
الخطوات التالية
في هذا التشغيل السريع، تعلمت كيفية تحميل الكائنات الثنائية كبيرة الحجم وتنزيلها وإدراجها باستخدام C++. لقد تعلمت أيضا كيفية إنشاء حاوية Azure Blob Storage وحذفها.
للاطلاع على عينة تخزين كائن ثنائي كبير الحجم في C++، تابع إلى: