وظائف الموارد لـ Bicep
توضح هذه المقالة وظائف Bicep للحصول على قِيَم الموارد.
للحصول على قيم من التوزيع الحالي، راجع دالات قيمة التوزيع.
extensionResourceId
extensionResourceId(resourceId, resourceType, resourceName1, [resourceName2], ...)
إرجاع معرف المورد لمورد ملحق. مورد الملحق هو نوع مورد يتم تطبيقه على مورد آخر لإضافته إلى قدراته.
نوع الاسم: az.
تتوفر الدالة extensionResourceId
في ملفات Bicep، ولكن عادة لا تحتاج إليها. بدلاً من ذلك، استخدم الاسم الرمزي للمورد والوصول إلى خاصية id
.
التنسيق الأساسي لمعرف المورد الذي تم إرجاعه بواسطة هذه الدالة هو:
{scope}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}
يختلف مقطع النطاق حسب المورد الذي يتم توسيعه.
عند تطبيق مورد الملحق على مورد، يتم إرجاع معرف المورد بالتنسيق التالي:
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{baseResourceProviderNamespace}/{baseResourceType}/{baseResourceName}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}
عند تطبيق مورد الملحق على مجموعة موارد، يكون التنسيق هو:
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}
عند تطبيق مورد الملحق على اشتراك، يكون التنسيق هو:
/subscriptions/{subscriptionId}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}
عند تطبيق مورد الملحق على مجموعة إدارة، يكون التنسيق هو:
/providers/Microsoft.Management/managementGroups/{managementGroupName}/providers/{extensionResourceProviderNamespace}/{extensionResourceType}/{extensionResourceName}
يتم تطبيق تعريف نهج مخصص تم توزيعه في مجموعة إدارة كمورد ملحق. لإنشاء نهج وتعيينه، وزع القالب التالي إلى مجموعة إدارة.
targetScope = 'managementGroup'
@description('An array of the allowed locations, all other locations will be denied by the created policy.')
param allowedLocations array = [
'australiaeast'
'australiasoutheast'
'australiacentral'
]
resource policyDefinition 'Microsoft.Authorization/policyDefinitions@2023-04-01' = {
name: 'locationRestriction'
properties: {
policyType: 'Custom'
mode: 'All'
parameters: {}
policyRule: {
if: {
not: {
field: 'location'
in: allowedLocations
}
}
then: {
effect: 'deny'
}
}
}
}
resource policyAssignment 'Microsoft.Authorization/policyAssignments@2024-04-01' = {
name: 'locationAssignment'
properties: {
policyDefinitionId: policyDefinition.id
}
}
تعريفات النهج المضمنة هي موارد على مستوى المستأجر. للحصول على مثال لنشر تعريف نهج مضمن، راجع tenantResourceId.
getSecret
keyVaultName.getSecret(secretName)
لإرجاع بيانات سرية من Azure Key Vault. استخدم هذه الدالة لتمرير بيانات سرية إلى معلمة سلسلة آمنة من وحدة Bicep النمطية.
إشعار
az.getSecret(subscriptionId, resourceGroupName, keyVaultName, secretName, secretVersion)
يمكن استخدام الدالة في .bicepparam
الملفات لاسترداد أسرار خزنة المفاتيح. لمزيد من المعلومات، راجع getSecret.
يمكنك فقط استخدام الدالة getSecret
من داخل params
قسم الوحدة النمطية. يمكنك استخدامه فقط مع Microsoft.KeyVault/vaults
مورد.
module sql './sql.bicep' = {
name: 'deploySQL'
params: {
adminPassword: keyVault.getSecret('vmAdminPassword')
}
}
تحصل على خطأ إذا حاولت استخدام هذه الدالة في أي جزء آخر من ملف Bicep. تحصل أيضا على خطأ إذا كنت تستخدم هذه الدالة مع استنتاج السلسلة، حتى عند استخدامها في قسم params.
يمكن استخدام الدالة فقط مع معلمة وحدة نمطية تحتوي على @secure()
مصمم الديكور.
يجب أن يحتوي مخزن المفاتيح على enabledForTemplateDeployment
معيَّناً على true
. يجب أن يكون لدى المستخدم الذي يقوم بتوزيع ملف Bicep حق الوصول إلى البيانات السرية. لمزيد من المعلومات، راجع استخدام Azure Key Vault لتمرير قيمة المعلمة الآمنة أثناء توزيع Bicep.
لا يلزم وجود مؤهل لمساحة الاسم لأنه يتم استخدام الدالة مع نوع مورد.
المعلمات
المعلمة | المطلوب | نوع | الوصف |
---|---|---|---|
secretName | نعم | سلسلة | اسم السر المخزَّن في مخزن المفاتيح. |
قيمة الإرجاع
القيمة السرية للاسم السري.
مثال
يتم استخدام ملف Bicep التالي كوحدة نمطية. ويحتوي على معلمة adminPassword
معرفة بواسطة المصمم @secure()
.
param sqlServerName string
param adminLogin string
@secure()
param adminPassword string
resource sqlServer 'Microsoft.Sql/servers@2023-08-01-preview' = {
...
}
يستهلك ملف Bicep التالي ملف Bicep السابق كوحدة نمطية. يشير ملف Bicep إلى مخزن مفاتيح موجود، ويستدعي الدالة getSecret
لاسترداد البيانات السرية لمخزن المفاتيح، ثم يمرر القيمة كمعلمة إلى الوحدة النمطية.
param sqlServerName string
param adminLogin string
param subscriptionId string
param kvResourceGroup string
param kvName string
resource keyVault 'Microsoft.KeyVault/vaults@2023-07-01' existing = {
name: kvName
scope: resourceGroup(subscriptionId, kvResourceGroup )
}
module sql './sql.bicep' = {
name: 'deploySQL'
params: {
sqlServerName: sqlServerName
adminLogin: adminLogin
adminPassword: keyVault.getSecret('vmAdminPassword')
}
}
list*
resourceName.list([apiVersion], [functionValues])
يمكنك استدعاء دالة قائمة لأي نوع مورد باستخدام عملية تبدأ بـ list
. بعض الاستخدامات الشائعة هي list
وlistKeys
وlistKeyValue
وlistSecrets
.
يختلف بناء جملة هذه الدالة حسب اسم عمليات القائمة. تختلف القِيَم التي تم إرجاعها أيضاً حسب العملية. لا تدعم Bicep حالياً عمليات إكمال وظائف list*
والتحقق من صحتها.
باستخدام Bicep CLI الإصدار 0.4.X أو أعلى، يمكنك استدعاء دالة القائمة باستخدام عامل تشغيل الملحق. على سبيل المثال، storageAccount.listKeys()
لا يلزم وجود مؤهل لمساحة الاسم لأنه يتم استخدام الدالة مع نوع مورد.
المعلمات
المعلمة | المطلوب | نوع | الوصف |
---|---|---|---|
apiVersion | لا | سلسلة | إذا لم توفر هذه المعلمة، فسيتم استخدام إصدار واجهة برمجة التطبيقات للمورد. وفر إصدار API مخصصاً فقط عندما تحتاج إلى تشغيل الدالة مع إصدار معين. استخدم التنسيق: yyyy-mm-dd. |
functionValues | لا | كائن | كائن يحتوي على قِيَم الدالة. قم بتوفير هذا العنصر فقط للدوال التي تدعم تلقي عنصر بقيم معلمات، مثل listAccountSas على حساب التخزين. يتم عرض مثال على تمرير قِيم الدالة في هذه المقالة. |
الاستخدامات الصالحة
يمكن استخدام الدالات list
في خصائص تعريف المورد. لا تستخدم دالة list
تعرض معلومات حساسة في قسم المخرجات في ملف Bicep. يتم تخزين قِيَم الإخراج في محفوظات التوزيع ويمكن استردادها بواسطة مستخدم ضار.
عند استخدامها مع حلقة متكررة، يمكنك استخدام دالات list
لـ input
لأن التعبير تم تعيينه إلى خاصية المورد. لا يمكنك استخدامها مع count
لأنه يجب تحديد العدد قبل حل الدالة list
.
إذا كنت تستخدم دالة list
في مورد تم نشره بشكل شرطي، فسيتم تقييم الدالة حتى إذا لم يتم نشر المورد. تحصل على خطأ إذا كانت الدالة list
تشير إلى مورد غير موجود. استخدم التعبير الشرطي؟: عامل التشغيل للتأكد من أن الدالة يتم تقييمها عند توزيع المورد فقط.
قيمة الإرجاع
يختلف الكائن الذي تم إرجاعه حسب دالة القائمة التي تستخدمها. على سبيل المثال، ترجع listKeys
لحساب التخزين التنسيق التالي:
{
"keys": [
{
"keyName": "key1",
"permissions": "Full",
"value": "{value}"
},
{
"keyName": "key2",
"permissions": "Full",
"value": "{value}"
}
]
}
دالات list
أخرى لها تنسيقات إرجاع مختلفة. للاطلاع على تنسيق دالة، قم بتضمينها في قسم المخرجات كما هو موضح في ملف Bicep المذكور كمثال.
مثال القائمة
يوزع المثال التالي حساب تخزين ثم يستدعي listKeys
على حساب التخزين هذا. يتم استخدام المفتاح عند تعيين قيمة من أجل البرامج النصية للتوزيع.
resource storageAccount 'Microsoft.Storage/storageAccounts@2023-04-01' = {
name: 'dscript${uniqueString(resourceGroup().id)}'
location: location
kind: 'StorageV2'
sku: {
name: 'Standard_LRS'
}
}
resource dScript 'Microsoft.Resources/deploymentScripts@2023-08-01' = {
name: 'scriptWithStorage'
location: location
...
properties: {
azCliVersion: '2.0.80'
storageAccountSettings: {
storageAccountName: storageAccount.name
storageAccountKey: storageAccount.listKeys().keys[0].value
}
...
}
}
يعرض المثال التالي دالة list
التي تأخذ معلمة. في هذه الحالة، الدالة هي listAccountSas
. تمرير كائن لوقت انتهاء الصلاحية. يجب أن يكون وقت انتهاء الصلاحية في المستقبل.
param accountSasProperties object {
default: {
signedServices: 'b'
signedPermission: 'r'
signedExpiry: '2020-08-20T11:00:00Z'
signedResourceTypes: 's'
}
}
...
sasToken: storageAccount.listAccountSas('2021-04-01', accountSasProperties).accountSasToken
تطبيقات
يتم عرض الاستخدامات المحتملة list*
في الجدول التالي.
نوع المورد | اسم الوظيفة |
---|---|
Microsoft.Addons/supportProviders | listsupportplaninfo |
Microsoft.AnalysisServices/servers | listGatewayStatus |
Microsoft.ApiManagement/service/authorizationServers | listSecrets |
Microsoft.ApiManagement/service/gateways | listKeys |
Microsoft.ApiManagement/service/identityProviders | listSecrets |
Microsoft.ApiManagement/service/namedValues | listValue |
Microsoft.ApiManagement/service/openidConnectProviders | listSecrets |
Microsoft.ApiManagement/service/subscriptions | listSecrets |
مايكروسوفت.AppConfiguration/configurationStores | ListKeys |
مايكروسوفت AppPlatform/Spring | listTestKeys |
Microsoft.Automation/automationAccounts | listKeys |
Microsoft.Batch/batchAccounts | listkeys |
Microsoft.BatchAI/workspaces/experiments/jobs | listoutputfiles |
Microsoft.BotService/botServices/channels | listChannelWithKeys |
Microsoft.Cache/redis | listKeys |
Microsoft.CognitiveServices/accounts | listKeys |
Microsoft.ContainerRegistry/registries | listCredentials |
Microsoft.ContainerRegistry/registries | listUsages |
Microsoft.ContainerRegistry/registries/agentpools | listQueueStatus |
Microsoft.ContainerRegistry/registries/buildTasks | listSourceRepositoryProperties |
Microsoft.ContainerRegistry/registries/buildTasks/steps | listBuildArguments |
Microsoft.ContainerRegistry/registries/taskruns | listDetails |
Microsoft.ContainerRegistry/registries/webhooks | listEvents |
Microsoft.ContainerRegistry/registries/runs | listLogSasUrl |
Microsoft.ContainerRegistry/registries/tasks | listDetails |
Microsoft.ContainerService/managedClusters | listClusterAdminCredential |
Microsoft.ContainerService/managedClusters | listClusterMonitoringUserCredential |
Microsoft.ContainerService/managedClusters | listClusterUserCredential |
Microsoft.ContainerService/managedClusters/accessProfiles | listCredential |
Microsoft.DataBox/jobs | listCredentials |
Microsoft.DataFactory/datafactories/gateways | listauthkeys |
Microsoft.DataFactory/factories/integrationruntimes | listauthkeys |
Microsoft.DataLakeAnalytics/accounts/storageAccounts/Containers | listSasTokens |
Microsoft.DataShare/accounts/shares | listSynchronizations |
Microsoft.DataShare/accounts/shareSubscriptions | listSourceShareSynchronizationSettings |
Microsoft.DataShare/accounts/shareSubscriptions | listSynchronizationDetails |
Microsoft.DataShare/accounts/shareSubscriptions | listSynchronizations |
Microsoft.Devices/iotHubs | listkeys |
Microsoft.Devices/iotHubs/iotHubKeys | listkeys |
Microsoft.Devices/provisioningServices/keys | listkeys |
Microsoft.Devices/provisioningServices | listkeys |
Microsoft.DevTestLab/labs | ListVhds |
Microsoft.DevTestLab/labs/schedules | ListApplicable |
Microsoft.DevTestLab/labs/users/serviceFabrics | ListApplicableSchedules |
Microsoft.DevTestLab/labs/virtualMachines | ListApplicableSchedules |
Microsoft.DocumentDB/databaseAccounts | listKeys |
Microsoft.DocumentDB/databaseAccounts/notebookWorkspaces | listConnectionInfo |
Microsoft.DomainRegistration | listDomainRecommendations |
Microsoft.DomainRegistration/topLevelDomains | listAgreements |
مجال خطوط شبكة الحدث لـ MICROSOFT | listKeys |
Microsoft.EventGrid/topics | listKeys |
Microsoft.EventHub/namespaces/authorizationRules | listkeys |
Microsoft.EventHub/namespaces/disasterRecoveryConfigs/authorizationRules | listkeys |
Microsoft.EventHub/namespaces/eventhubs/authorizationRules | listkeys |
Microsoft.ImportExport/jobs | listBitLockerKeys |
Microsoft.Kusto/Clusters/Databases | ListPrincipals |
Microsoft.LabServices/labs/users | list |
Microsoft.LabServices/labs/virtualMachines | list |
Microsoft.Logic/integrationAccounts/agreements | listContentCallbackUrl |
Microsoft.Logic/integrationAccounts/assemblies | listContentCallbackUrl |
Microsoft.Logic/integrationAccounts | listCallbackUrl |
Microsoft.Logic/integrationAccounts | listKeyVaultKeys |
Microsoft.Logic/integrationAccounts/maps | listContentCallbackUrl |
Microsoft.Logic/integrationAccounts/partners | listContentCallbackUrl |
Microsoft.Logic/integrationAccounts/schemas | listContentCallbackUrl |
Microsoft.Logic/workflows | listCallbackUrl |
Microsoft.Logic/workflows | listSwagger |
Microsoft.Logic/workflows/runs/actions | listExpressionTraces |
Microsoft.Logic/workflows/runs/actions/repetitions | listExpressionTraces |
Microsoft.Logic/workflows/triggers | listCallbackUrl |
Microsoft.Logic/workflows/versions/triggers | listCallbackUrl |
Microsoft.MachineLearning/webServices | listkeys |
Microsoft.MachineLearning/Workspaces | listworkspacekeys |
Microsoft.MachineLearningServices/workspaces/computes | listKeys |
Microsoft.MachineLearningServices/workspaces/computes | listNodes |
Microsoft.MachineLearningServices/workspaces | listKeys |
Microsoft.Maps/accounts | listKeys |
Microsoft.Media/mediaservices/assets | listContainerSas |
Microsoft.Media/mediaservices/assets | listStreamingLocators |
Microsoft.Media/mediaservices/streamingLocators | listContentKeys |
Microsoft.Media/mediaservices/streamingLocators | listPaths |
Microsoft.Network/applicationSecurityGroups | listIpConfigurations |
Microsoft.NotificationHubs/Namespaces/authorizationRules | listkeys |
Microsoft.NotificationHubs/Namespaces/NotificationHubs/authorizationRules | listkeys |
مساحات عمل Microsoft.OperationalInsights | list |
مساحات عمل Microsoft.OperationalInsights | listKeys |
Microsoft.PolicyInsights/remediations | listDeployments |
Microsoft.RedHatOpenShift/openShiftClusters | listCredentials |
Microsoft.Relay/namespaces/disasterRecoveryConfigs/authorizationRules | listkeys |
Microsoft.Search/searchServices | listAdminKeys |
Microsoft.Search/searchServices | listQueryKeys |
Microsoft.SignalRService/SignalR | listkeys |
Microsoft.Storage/storageAccounts | listAccountSas |
Microsoft.Storage/storageAccounts | listkeys |
Microsoft.Storage/storageAccounts | listServiceSas |
Microsoft.StorSimple/managers/devices | listFailoverSets |
Microsoft.StorSimple/managers/devices | listFailoverTargets |
Microsoft.StorSimple/managers | listActivationKey |
Microsoft.StorSimple/managers | listPublicEncryptionKey |
Microsoft.Synapse/workspaces/integrationRuntimes | listAuthKeys |
Microsoft.Web/connectionGateways | ListStatus |
microsoft.web/connections | listconsentlinks |
Microsoft.Web/customApis | listWsdlInterfaces |
microsoft.web/locations | listwsdlinterfaces |
microsoft.web/apimanagementaccounts/apis/connections | listconnectionkeys |
microsoft.web/apimanagementaccounts/apis/connections | listsecrets |
microsoft.web/sites/backups | list |
Microsoft.Web/sites/config | list |
microsoft.web/sites/functions | listkeys |
microsoft.web/sites/functions | listsecrets |
microsoft.web/sites/hybridconnectionnamespaces/relays | listkeys |
microsoft.web/sites | listsyncfunctiontriggerstatus |
microsoft.web/sites/slots/functions | listsecrets |
microsoft.web/sites/slots/backups | list |
Microsoft.Web/sites/slots/config | list |
microsoft.web/sites/slots/functions | listsecrets |
لتحديد أنواع الموارد التي لها عملية قائمة، تتوفر لديك الخيارات التالية:
عرض عمليات REST API لموفر مورد والبحث عن عمليات القائمة. على سبيل المثال، تحتوي حسابات التخزين على عملية listKeys.
استخدم Get-AzProviderOperation في PowerShell cmdlet. يحصل المثال التالي على جميع عمليات القائمة لحسابات التخزين:
Get-AzProviderOperation -OperationSearchString "Microsoft.Storage/*" | where {$_.Operation -like "*list*"} | FT Operation
استخدم أمر Azure CLI التالي لتصفية عمليات القائمة فقط:
az provider operation show --namespace Microsoft.Storage --query "resourceTypes[?name=='storageAccounts'].operations[].name | [?contains(@, 'list')]"
managementGroupResourceId
managementGroupResourceId(resourceType, resourceName1, [resourceName2], ...)
تؤدي إلى إرجاع المعرف الفريد لمورد تم توزيعه على مستوى مجموعة الإدارة.
نوع الاسم: az.
تتوفر الدالة managementGroupResourceId
في ملفات Bicep، ولكن عادة لا تحتاج إليها. بدلاً من ذلك، استخدم الاسم الرمزي للمورد والوصول إلى خاصية id
.
يتم إرجاع المعرف بالتنسيق التالي:
/providers/Microsoft.Management/managementGroups/{managementGroupName}/providers/{resourceType}/{resourceName}
الملاحظات
يمكنك استخدام هذه الوظيفة للحصول على معرف المورد للموارد التي تم توزيعها إلى مجموعة الإدارة بدلاً من مجموعة الموارد. يختلف المعرف الذي تم إرجاعه عن القيمة التي تم إرجاعها بواسطة الوظيفة ResourceId من خلال عدم تضمين معرّف الاشتراك وقيمة مجموعة الموارد.
مثال managementGroupResourceID
يقوم القالب التالي بإنشاء تعريف نهج وتعيينه. يستخدم الوظيفة managementGroupResourceId
للحصول على معرف المورد لتعريف النهج.
targetScope = 'managementGroup'
@description('Target Management Group')
param targetMG string
@description('An array of the allowed locations, all other locations will be denied by the created policy.')
param allowedLocations array = [
'australiaeast'
'australiasoutheast'
'australiacentral'
]
var mgScope = tenantResourceId('Microsoft.Management/managementGroups', targetMG)
var policyDefinitionName = 'LocationRestriction'
resource policyDefinition 'Microsoft.Authorization/policyDefinitions@2023-04-01' = {
name: policyDefinitionName
properties: {
policyType: 'Custom'
mode: 'All'
parameters: {}
policyRule: {
if: {
not: {
field: 'location'
in: allowedLocations
}
}
then: {
effect: 'deny'
}
}
}
}
resource location_lock 'Microsoft.Authorization/policyAssignments@2024-04-01' = {
name: 'location-lock'
properties: {
scope: mgScope
policyDefinitionId: managementGroupResourceId('Microsoft.Authorization/policyDefinitions', policyDefinitionName)
}
dependsOn: [
policyDefinition
]
}
pickZones
pickZones(providerNamespace, resourceType, location, [numberOfZones], [offset])
لتحديد ما إذا كان نوع المورد يدعم مناطق لمنطقة ما أو لا. تدعم هذه الدالة الموارد المناطقية فقط. خدمات المنطقة المكررة ترجع صفيفًا فارغًا. لمزيد من المعلومات، راجع خدمات Azure التي تدعم مناطق التوفر.
نوع الاسم: az.
المعلمات
المعلمة | المطلوب | نوع | الوصف |
---|---|---|---|
providerNamespace | نعم | سلسلة | مساحة اسم موفر المورد لنوع المورد للتحقق من دعم المنطقة. |
resourceType | نعم | سلسلة | نوع المورد للتحقق من دعم المنطقة. |
موقع | نعم | سلسلة | المنطقة التي يجب التحقق فيها من دعم المنطقة. |
numberOfZones | لا | integer | عدد المناطق المنطقية التي يجب إرجاعها. الإعداد الافتراضي هو 1. يجب أن يكون الرقم عدداً صحيحاً موجباً من 1 إلى 3. استخدم 1 للموارد المخصصة لمناطق واحدة. بالنسبة للموارد متعددة المناطق، يجب أن تكون القيمة أقل من عدد المناطق المدعومة أو مساوية لها. |
إزاحة | لا | integer | الإزاحة من منطقة البداية المنطقية. تقوم الوظيفة بإرجاع خطأ إذا تجاوزت الإزاحة بالإضافة إلى numberOfZones عدد المناطق المدعومة. |
قيمة الإرجاع
مجموعة مع المناطق المدعومة. عند استخدام القيم الافتراضية للإزاحة وnumberOfZones
، يقوم نوع المورد والمنطقة التي تدعم المناطق بإرجاع الصفيف التالي:
[
"1"
]
عندما يتم ضبط المعلمة numberOfZones
على 3، فإنها ترجع:
[
"1",
"2",
"3"
]
عندما لا يدعم نوع المورد أو المنطقة المناطق، يتم إرجاع مصفوفة فارغة.
[
]
الملاحظات
هناك فئات مختلفة لمناطق توافر Azure - مناطق مناطقية واحتياطية. يمكن استخدام الدالة pickZones
لإرجاع منطقة توفر لمورد منطقة. بالنسبة لخدمات المنطقة المكررة (ZRS)، ترجع الدالة صفيفًا فارغًا. الموارد المناطقية عادة ما تحتوي على خاصية zones
في المستوى الأعلى من تعريف المورد. لتحديد فئة الدعم لمناطق التوفر، راجع خدمات Azure التي تدعم مناطق التوفر.
لتحديد ما إذا كانت منطقة أو موقع Azure معين يدعم مناطق التوفر، استدعِ الدالة pickZones
ذات نوع مورد منطقة، مثل Microsoft.Network/publicIPAddresses
. إذا كانت الاستجابة غير فارغة، فإن المنطقة تدعم مناطق التوفر.
pickZones example
يعرض ملف Bicep التالي ثلاث نتائج لاستخدام دالة pickZones
.
output supported array = pickZones('Microsoft.Compute', 'virtualMachines', 'westus2')
output notSupportedRegion array = pickZones('Microsoft.Compute', 'virtualMachines', 'westus')
output notSupportedType array = pickZones('Microsoft.Cdn', 'profiles', 'westus2')
يُرجع الإخراج من الأمثلة السابقة ثلاث مصفوفات.
Name | نوع | القيمة |
---|---|---|
مدعومة | صفيف | [ "1" ] |
notSupportedRegion | صفيف | [] |
notSupportedType | صفيف | [] |
يمكنك استخدام الاستجابة من pickZones
لتحديد ما إذا كنت تريد توفير قِيَم خالية للمناطق أو تعيين أجهزة ظاهرية لمناطق مختلفة.
الموفرون
تم إهمال دالة الموفرين في Bicep. لم نعد نوصي باستخدامها. إذا استخدمت هذه الدالة للحصول على إصدار API لموفر الموارد، نوصي بتوفير إصدار API محدد في ملف Bicep الخاص بك. يمكن أن يؤدي استخدام إصدار API الذي يتم إرجاعه ديناميكيا إلى توقف قالبك إذا تغيرت الخصائص بين الإصدارات.
لا تزال عملية الموفرين متاحة من خلال واجهة برمجة تطبيقات REST. يمكن استخدامه خارج ملف Bicep للحصول على معلومات حول موفر الموارد.
نوع الاسم: az.
reference
reference(resourceName or resourceIdentifier, [apiVersion], ['Full'])
إرجاع كائن يمثل حالة وقت تشغيل المورد. يعتمد إخراج وسلوك الدالة reference
بشكل كبير على كيفية تنفيذ كل موفر موارد (RP) استجابات PUT و GET الخاصة به.
نوع الاسم: az.
توفر ملفات Bicep الوصول إلى الدالة المرجعية، على الرغم من أنها عادة ما تكون غير ضرورية. بدلا من ذلك، يوصى باستخدام الاسم الرمزي للمورد. يمكن استخدام الدالة المرجعية فقط داخل properties
كائن مورد ولا يمكن استخدامها لخصائص المستوى الأعلى مثل name
أو location
. ينطبق الشيء نفسه بشكل عام على المراجع التي تستخدم الاسم الرمزي. ومع ذلك، بالنسبة لخصائص مثل name
، من الممكن إنشاء قالب دون استخدام الدالة المرجعية. من المعروف أن المعلومات الكافية حول اسم المورد تصدر الاسم مباشرة. يشار إليه باسم خصائص وقت التحويل البرمجي. يمكن أن يحدد التحقق من صحة Bicep أي استخدام غير صحيح للاسم الرمزي.
يوزع المثال التالي حساب تخزين. تمنحك المخرجات الأولى النتائج نفسها.
param storageAccountName string = uniqueString(resourceGroup().id)
param location string = resourceGroup().location
resource storageAccount 'Microsoft.Storage/storageAccounts@2023-04-01' = {
name: storageAccountName
location: location
kind: 'Storage'
sku: {
name: 'Standard_LRS'
}
}
output storageObjectSymbolic object = storageAccount.properties
output storageObjectReference object = reference('storageAccount')
output storageName string = storageAccount.name
output storageLocation string = storageAccount.location
للحصول على خاصية من مورد موجود لم يتم توزيعه في القالب، استخدم الكلمة الأساسية existing
:
param storageAccountName string
resource storageAccount 'Microsoft.Storage/storageAccounts@2023-04-01' existing = {
name: storageAccountName
}
// use later in template as often as needed
output blobAddress string = storageAccount.properties.primaryEndpoints.blob
للإشارة إلى مورد متداخل داخل مورد أصل، استخدم الملحق المتداخل (::
). يمكنك استخدام بناء الجملة هذا فقط عند الوصول إلى المورد المتداخل من خارج المورد الأصل.
vNet1::subnet1.properties.addressPrefix
إذا حاولت الرجوع إلى مورد غير موجود، فسيظهر لك خطأ NotFound
ويتعذر التوزيع.
resourceId
resourceId([subscriptionId], [resourceGroupName], resourceType, resourceName1, [resourceName2], ...)
إرجاع المعرف الفريد للمورد.
نوع الاسم: az.
تتوفر الدالة resourceId
في ملفات Bicep، ولكن عادة لا تحتاج إليها. بدلاً من ذلك، استخدم الاسم الرمزي للمورد والوصول إلى خاصية id
.
يمكنك استخدام هذه الدالة عندما يكون اسم المورد غامضاً أو غير متوفر في القالب نفسه. يختلف تنسيق المعرف الذي تم إرجاعه بناءً على ما إذا كان النشر يحدث في نطاق مجموعة موارد أو اشتراك أو مجموعة إدارة أو مستأجر.
على سبيل المثال:
param storageAccountName string
param location string = resourceGroup().location
resource storageAccount 'Microsoft.Storage/storageAccounts@2023-04-01' = {
name: storageAccountName
location: location
kind: 'Storage'
sku: {
name: 'Standard_LRS'
}
}
output storageID string = storageAccount.id
للحصول على معرف المورد لمورد غير موزع في ملف Bicep، استخدم الكلمة الأساسية الموجودة.
param storageAccountName string
resource storageAccount 'Microsoft.Storage/storageAccounts@2023-04-01' existing = {
name: storageAccountName
}
output storageID string = storageAccount.id
لمزيد من المعلومات، راجع وظيفة معرف مورد قالب JSON.
subscriptionResourceId
subscriptionResourceId([subscriptionId], resourceType, resourceName1, [resourceName2], ...)
إرجاع المعرف الفريد لمورد تم نشره على مستوى الاشتراك.
نوع الاسم: az.
تتوفر الدالة subscriptionResourceId
في ملفات Bicep، ولكن عادة لا تحتاج إليها. بدلاً من ذلك، استخدم الاسم الرمزي للمورد والوصول إلى خاصية id
.
يتم إرجاع المعرف بالتنسيق التالي:
/subscriptions/{subscriptionId}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
الملاحظات
يمكنك استخدام هذه الدالة للحصول على معرف المورد للموارد التي تم توزيعها في الاشتراك بدلاً من مجموعة الموارد. يختلف المعرف الذي تم إرجاعه عن القيمة التي تم إرجاعها بواسطة الدالة resourceId من خلال عدم تضمين قيمة مجموعة الموارد.
مثال subscriptionResourceID
يعين ملف Bicep التالي دوراً مضمناً. يمكنك نشرها إما إلى مجموعة موارد أو اشتراك. يستخدم الدالة subscriptionResourceId
للحصول على معرف المورد للأدوار المضمنة.
@description('Principal Id')
param principalId string
@allowed([
'Owner'
'Contributor'
'Reader'
])
@description('Built-in role to assign')
param builtInRoleType string
var roleDefinitionId = {
Owner: {
id: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '8e3af657-a8ff-443c-a75c-2fe8c4bcb635')
}
Contributor: {
id: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'b24988ac-6180-42a0-ab88-20f7382dd24c')
}
Reader: {
id: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'acdd72a7-3385-48ef-bd42-f606fba81ae7')
}
}
resource roleAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
name: guid(resourceGroup().id, principalId, roleDefinitionId[builtInRoleType].id)
properties: {
roleDefinitionId: roleDefinitionId[builtInRoleType].id
principalId: principalId
}
}
tenantResourceId
tenantResourceId(resourceType, resourceName1, [resourceName2], ...)
إرجاع المعرف الفريد لمورد تم نشره على مستوى المستأجر.
نوع الاسم: az.
تتوفر الدالة tenantResourceId
في ملفات Bicep، ولكن عادة لا تحتاج إليها. بدلاً من ذلك، استخدم الاسم الرمزي للمورد والوصول إلى خاصية id
.
يتم إرجاع المعرف بالتنسيق التالي:
/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
تعريفات النهج المضمنة هي موارد على مستوى المستأجر. لنشر تعيين نهج يشير إلى تعريف سياسة مضمن، استخدم الدالة tenantResourceId
.
@description('Specifies the ID of the policy definition or policy set definition being assigned.')
param policyDefinitionID string = '0a914e76-4921-4c19-b460-a2d36003525a'
@description('Specifies the name of the policy assignment, can be used defined or an idempotent name as the defaultValue provides.')
param policyAssignmentName string = guid(policyDefinitionID, resourceGroup().name)
resource policyAssignment 'Microsoft.Authorization/policyAssignments@2024-04-01' = {
name: policyAssignmentName
properties: {
scope: subscriptionResourceId('Microsoft.Resources/resourceGroups', resourceGroup().name)
policyDefinitionId: tenantResourceId('Microsoft.Authorization/policyDefinitions', policyDefinitionID)
}
}
الخطوات التالية
- للحصول على قيم من التوزيع الحالي، راجع دالات قيمة التوزيع.
- لتكرار عدد معين من المرات عند إنشاء نوع من الموارد، يرجى الرجوع إلى التكرار الحلقي في Bicep.