ملاحظة
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
الموارد التابعة هي الموارد التي توجد فقط في سياق مورد آخر. على سبيل المثال، لا يمكن أن يوجد ملحق جهاز ظاهري بدون جهاز ظاهري. مورد الملحق هو تابع للجهاز الظاهري.
يقبل كل مورد أصل أنواع موارد معينة فقط كموارد تابعة. يتوفر التسلسل الهرمي أنواع الموارد في مرجع مورد Bicep.
توضح هذه المقالة طرقا مختلفة يمكنك من خلالها الإعلان عن مورد تابع.
موارد التدريب
إذا كنت تفضل التعرف على الموارد التابعة من خلال إرشادات خطوة بخطوة، فشاهد نشر الموارد التابعة والملحقة باستخدام Bicep.
نمط الاسم والنوع
في Bicep، يمكنك تحديد المورد التابع إما داخل المورد الأصل أو خارج المورد الأصل. تختلف القيم التي توفرها لاسم المورد ونوع المورد استنادا إلى كيفية تعريف المورد التابع. ومع ذلك، يتم حل الاسم الكامل والنوع دائما إلى نفس النمط.
يستخدم الاسم الكامل للمورد التابع النمط:
{parent-resource-name}/{child-resource-name}
إذا كان لديك أكثر من مستويين في التسلسل الهرمي، فاستمر في تكرار الأسماء الأصلية:
{parent-resource-name}/{child-level1-resource-name}/{child-level2-resource-name}
يستخدم النوع الكامل للمورد التابع النمط:
{resource-provider-namespace}/{parent-resource-type}/{child-resource-type}
إذا كان لديك أكثر من مستويين في التسلسل الهرمي، فاستمر في تكرار أنواع الموارد الأصلية:
{resource-provider-namespace}/{parent-resource-type}/{child-level1-resource-type}/{child-level2-resource-type}
إذا قمت بحساب المقاطع بين /
الأحرف، فإن عدد المقاطع في النوع هو دائما واحد أكثر من عدد المقاطع في الاسم.
ضمن المورد الأصل
يوضح المثال التالي المورد التابع المضمن في خاصية الموارد للمورد الأصل.
resource <parent-resource-symbolic-name> '<resource-type>@<api-version>' = {
<parent-resource-properties>
resource <child-resource-symbolic-name> '<child-resource-type>' = {
<child-resource-properties>
}
}
يجب أن يظهر إعلان المورد المتداخل في المستوى الأعلى من بناء جملة المورد الأصل. قد تكون الإعلانات متداخلة بشكل عشوائي، طالما أن كل مستوى هو نوع فرعي من مورده الأصل.
عند تعريفها ضمن نوع المورد الأصل، يمكنك تنسيق قيم النوع والاسم كقطعة واحدة دون شرطة مائلة. يظهر المثال التالي حساب تخزين مع مورد تابع لخدمة الملفات، وتحتوي خدمة الملفات على مورد تابع لمشاركة الملف. يتم تعيين اسم خدمة الملفات إلى default
ويتم تعيين نوعها إلى fileServices
. يتم تعيين exampleshare
اسم مشاركة الملف ويتم تعيين نوعه إلى shares
.
resource storage 'Microsoft.Storage/storageAccounts@2024-01-01' = {
name: 'examplestorage'
location: resourceGroup().location
kind: 'StorageV2'
sku: {
name: 'Standard_LRS'
}
resource service 'fileServices' = {
name: 'default'
resource share 'shares' = {
name: 'exampleshare'
}
}
}
لا تزال Microsoft.Storage/storageAccounts/fileServices
أنواع الموارد الكاملة و Microsoft.Storage/storageAccounts/fileServices/shares
. لا تقوم بتوفير Microsoft.Storage/storageAccounts/
لأنه مفترض من نوع المورد الأصلي والإصدار. قد يعلن المورد المتداخل اختياريا عن إصدار واجهة برمجة التطبيقات باستخدام بناء الجملة <segment>@<version>
. إذا حذف المورد المتداخل إصدار واجهة برمجة التطبيقات، يتم استخدام إصدار واجهة برمجة التطبيقات للمورد الأصل. إذا حدد المورد المتداخل إصدار API، يتم استخدام إصدار واجهة برمجة التطبيقات المحدد.
يتم تعيين أسماء الموارد التابعة إلى default
ولكن exampleshare
الأسماء الكاملة تتضمن الأسماء الأصلية. لا توفر examplestorage
أو default
لأنه يفترض من المورد الأصل.
يمكن للمورد المتداخل الوصول إلى خصائص المورد الأصل الخاص به. يمكن للموارد الأخرى المعلنة داخل النص الأساسي للمورد الأصل نفسه الرجوع إلى بعضها البعض باستخدام الأسماء الرمزية. قد لا يصل المورد الأصل إلى خصائص الموارد التي يحتوي عليها، قد تتسبب هذه المحاولة في تبعية دورية.
للإشارة إلى مورد متداخل خارج المورد الأصل، يجب أن يكون مؤهلا باسم المورد المحتوي وعامل ::
التشغيل. على سبيل المثال، لإخراج خاصية من مورد تابع:
output childAddressPrefix string = VNet1::VNet1_Subnet1.properties.addressPrefix
مورد أصل خارجي
يوضح المثال التالي المورد التابع خارج المورد الأصل. قد تستخدم هذا الأسلوب إذا لم يتم نشر المورد الأصل في نفس القالب، أو إذا كنت تريد استخدام تكرار حلقي لإنشاء أكثر من مورد تابع واحد. حدد الخاصية الأصل على التابع مع تعيين القيمة إلى الاسم الرمزي للأصل. باستخدام بناء الجملة هذا، لا تزال بحاجة إلى تعريف نوع المورد الكامل، ولكن اسم المورد التابع هو اسم التابع فقط.
resource <parent-resource-symbolic-name> '<resource-type>@<api-version>' = {
name: 'myParent'
<parent-resource-properties>
}
resource <child-resource-symbolic-name> '<child-resource-type>@<api-version>' = {
parent: <parent-resource-symbolic-name>
name: 'myChild'
<child-resource-properties>
}
عند تعريفه خارج المورد الأصل، يمكنك تنسيق النوع و مع شرطة مائلة لتضمين النوع الأصل والاسم.
يوضح المثال التالي حساب تخزين وخدمة ملفات ومشاركة ملف تم تعريفها جميعا على مستوى الجذر.
resource storage 'Microsoft.Storage/storageAccounts@2024-01-01' = {
name: 'examplestorage'
location: resourceGroup().location
kind: 'StorageV2'
sku: {
name: 'Standard_LRS'
}
}
resource service 'Microsoft.Storage/storageAccounts/fileServices@2024-01-01' = {
name: 'default'
parent: storage
}
resource share 'Microsoft.Storage/storageAccounts/fileServices/shares@2024-01-01' = {
name: 'exampleshare'
parent: service
}
تعمل الإشارة إلى الاسم الرمزي للمورد التابع بنفس الطريقة التي تعمل بها الإشارة إلى الأصل.
اسم المورد الكامل خارج الأصل
يمكنك أيضا استخدام اسم المورد الكامل والكتابة عند الإعلان عن المورد التابع خارج الأصل. لا تقم بتعيين الخاصية الأصل على المورد التابع. لأنه لا يمكن الاستدلال على التبعية، يجب عليك تعيينها بشكل صريح.
resource storage 'Microsoft.Storage/storageAccounts@2024-01-01' = {
name: 'examplestorage'
location: resourceGroup().location
kind: 'StorageV2'
sku: {
name: 'Standard_LRS'
}
}
resource service 'Microsoft.Storage/storageAccounts/fileServices@2024-01-01' = {
name: 'examplestorage/default'
dependsOn: [
storage
]
}
resource share 'Microsoft.Storage/storageAccounts/fileServices/shares@2024-01-01' = {
name: 'examplestorage/default/exampleshare'
dependsOn: [
service
]
}
هام
تعيين اسم المورد الكامل ونوعه ليس الأسلوب الموصى به. إنها ليست آمنة النوع مثل استخدام أحد النهج الأخرى. لمزيد من المعلومات، راجع قاعدة Linter: استخدام الخاصية الأصل.
الخطوات التالية
- للتعرف على إنشاء ملفات Bicep، راجع فهم بنية وبناء جملة ملفات Bicep.
- للتعرف على تنسيق اسم المورد عند الرجوع إلى المورد، راجع الدالة المرجعية.