عوامل تشغيل موصل Bicep

يتم استخدام عوامل تشغيل الموصل للوصول إلى الموارد التابعة، والخصائص على الكائنات، والعناصر في صفيف. يمكنك أيضاً استخدام موصل الخاصية لاستخدام بعض الدوال.

عامل تشغيل الاسم
[] موصل الفهرس
. موصل الدالة
:: موصل المورد المتداخل
. موصل الخاصية

موصل الفهرس

array[integerIndex]

object['stringIndex']

استخدم موصل الفهرس للحصول على عنصر من صفيف أو خاصية من كائن.

بالنسبة للصفيف، قم بتوفير الفهرس كعدد صحيح. يطابق العدد الصحيح الموضع المستند إلى الصفر للعنصر المراد استرداده.

بالنسبة للكائن، قم بتوفير الفهرس كسلسلة. تطابق السلسلة اسم الكائن المراد استرداده.

يحصل المثال التالي على عنصر في صفيف.

var arrayVar = [
  'Coho'
  'Contoso'
  'Fabrikan'
]

output accessorResult string = arrayVar[1]

الإخراج من المثال:

الاسم النوع القيمة
accessorResult سلسلة 'Contoso'

يحصل المثال التالي على خاصية على كائن.

var environmentSettings = {
  dev: {
    name: 'Development'
  }
  prod: {
    name: 'Production'
  }
}

output accessorResult string = environmentSettings['dev'].name

الإخراج من المثال:

الاسم النوع القيمة
accessorResult سلسلة "التطوير"

موصل الدالة

resourceName.functionName()

تدعم الدالتان - getSecret وlist* - عامل تشغيل الموصل لاستدعاء الدالة. هاتان الدالتان هما الدالتان الوحيدتان اللتان تدعمان عامل تشغيل الموصل.

مثال

يشير المثال التالي إلى key vault موجود، ثم يستخدم getSecret لتمرير سر إلى وحدة نمطية.

resource kv 'Microsoft.KeyVault/vaults@2023-02-01' existing = {
  name: kvName
  scope: resourceGroup(subscriptionId, kvResourceGroup )
}

module sql './sql.bicep' = {
  name: 'deploySQL'
  params: {
    sqlServerName: sqlServerName
    adminLogin: adminLogin
    adminPassword: kv.getSecret('vmAdminPassword')
  }
}

موصل المورد المتداخل

parentResource::nestedResource

المورد المتداخل هو مورد تم الإعلان عنه داخل مورد آخر. استخدم موصل المورد المتداخل :: للوصول إلى الموارد المتداخلة من خارج المورد الأصلي.

ضمن المورد الأصلي، يمكنك الرجوع إلى المورد المتداخل باستخدام الاسم الرمزي فقط. لا تحتاج إلى استخدام موصل المورد المتداخل إلا عند الرجوع إلى المورد المتداخل من خارج المورد الأصل.

مثال

يوضح المثال التالي كيفية الرجوع إلى مورد متداخل من داخل المورد الأصلي ومن خارج المورد الأصلي.

resource demoParent 'demo.Rp/parentType@2023-01-01' = {
  name: 'demoParent'
  location: 'West US'

  // Declare a nested resource within 'demoParent'
  resource demoNested 'childType' = {
    name: 'demoNested'
    properties: {
      displayName: 'The nested instance.'
    }
  }

  // Declare another nested resource
  resource demoSibling 'childType' = {
    name: 'demoSibling'
    properties: {
      // Use symbolic name to reference because this line is within demoParent
      displayName: 'Sibling of ${demoNested.properties.displayName}'
    }
  }
}

// Use nested accessor to reference because this line is outside of demoParent
output displayName string = demoParent::demoNested.properties.displayName

موصل الخاصية

objectName.propertyName

استخدام موصلات الخاصية للوصول إلى خصائص كائن. يمكن استخدام موصلات الخاصية مع أي كائن، بما في ذلك المعلمات والمتغيرات التي تُعد كائنات. تحصل على خطأ عند استخدام الوصول إلى الخاصية على تعبير غير كائن.

مثال

يُظهر المثال التالي متغير كائن وكيفية الوصول إلى الخصائص.

var x = {
  y: {
    z: 'Hello'
    a: true
  }
  q: 42
}

output outputZ string = x.y.z
output outputQ int = x.q

الإخراج من المثال:

الاسم النوع القيمة
outputZ سلسلة "أهلاً"
outputQ عدد صحيح 42

بشكل عام، يمكنك استخدام موصل الخاصية مع مورد نُشر في ملف Bicep. يقوم المثال التالي بإنشاء عنوان IP عام ويستخدم موصلات الخاصية لإرجاع قيمة من المورد المنشور.

resource publicIp 'Microsoft.Network/publicIPAddresses@2022-11-01' = {
  name: publicIpResourceName
  location: location
  properties: {
    publicIPAllocationMethod: dynamicAllocation ? 'Dynamic' : 'Static'
    dnsSettings: {
      domainNameLabel: publicIpDnsLabel
    }
  }
}

// Use property accessor to get value
output ipFqdn string = publicIp.properties.dnsSettings.fqdn

الخطوات التالية