Я создаю модуль бицепса следующим образом:
param permission object
var keys = [for key in permission.keys: key]
var secretes= [for secret in permission.secrets: secret]
var certificates = [for certificate in permission.certificates: certificate]
где «разрешения» — это объект, содержащий эти 3 массива.
Это хорошо работает, но я бы предпочел что-то вроде этого (одна сложная переменная вместо трех отдельных массивов):
var x = {
keys: [for key in permission.keys: key]
secrets: [for secret in permission.secrets: secret]
certificates: [for certificate in permission.certificates: certificate]
}
Синтаксически это не разрешено. Интересно, что при выполнении того же действия в определении ресурса действует тот же синтаксис, например:
resource EventHubAuthorization 'Microsoft.EventHub/namespaces/eventhubs/authorizationRules@2021-01-01-preview' = {
name: '${EventHub.name}/${AuthorizationName}'
properties: {
rights: [for right in Rights: right]
}
}
Это просто так или я что-то упускаю и то, что я хочу, можно было бы сделать - просто по-другому?
бр волкер
Это не поддерживается в соответствии с сообщением об ошибке:
For-expressions are not supported in this context. For-expressions may be used as values of resource, module, variable, and output declarations, or values of resource and module properties.bicep(BCP138)
Вы всегда можете сделать что-то вроде этого:
param permission object
var keys = [for key in permission.keys: key]
var secrets= [for secret in permission.secrets: secret]
var certificates = [for certificate in permission.certificates: certificate]
var x = {
keys: keys
secrets: secrets
certificates: certificates
}
Но здесь переменная x
выглядит примерно так же, как параметр permission
.
Привет Томас, спасибо за ваш вклад. Вы правы с переменной x. Я просто был обеспокоен синтаксисом.