首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Azure应用程序配置--使用二EP有条件地创建特性标志

Azure应用程序配置--使用二EP有条件地创建特性标志
EN

Stack Overflow用户
提问于 2022-04-25 13:07:33
回答 1查看 456关注 0票数 2

我计划在Azure App配置服务中使用功能管理功能。

使用二头肌,我创建配置存储。

https://learn.microsoft.com/en-us/azure/templates/microsoft.appconfiguration/2021-10-01-preview/configurationstores?tabs=bicep.

  • 模板

使用二头肌,我添加了一个特征标志。

https://learn.microsoft.com/en-us/azure/templates/microsoft.appconfiguration/2021-10-01-preview/configurationstores/keyvalues?tabs=bicep.

  • 模板

该值最初应该设置为false,一旦可用,则由业务/操作程序在Azure中将该值更改为true

因此,我正在寻找一种在二头肌中有条件地创建特征标志的方法;如果不存在特性标志,则创建它。当二头肌已经存在时,它应该跳过创建,因为它可以覆盖/重置业务/操作更改的标志值。

我在GitHub上发现了这个问题,从中我得出结论,二头肌还不支持这个要求:https://github.com/Azure/bicep/issues/4023

有什么解决办法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-26 02:11:42

除非在运行部署之前手动检查featureFlag是否存在,否则不能真正做到这一点。ARM模板(和Bicep)试图是幂等的,所以如果您多次应用相同的模板,它将重置任何手动更改。

下面是一个二头肌文件,它创建了一个配置存储和特性标志:

代码语言:javascript
复制
// main.bicep
param location string = resourceGroup().location
param configurationStoreName string
param featureFlagExists bool
param featureFlagName string

// Create the configuration store
resource configurationStore 'Microsoft.AppConfiguration/configurationStores@2021-10-01-preview' = {
  name: configurationStoreName
  location: location
  sku: {
    name: 'free'
  }
  properties: {
    disableLocalAuth: false
    enablePurgeProtection: false
    encryption: {}
    softDeleteRetentionInDays: 0
  }
}

// Only create the feature flag if not exists
resource featureFlag 'Microsoft.AppConfiguration/configurationStores/keyValues@2021-10-01-preview' = if (!featureFlagExists) {
  name: '.appconfig.featureflag~2F${featureFlagName}'
  parent: configurationStore
  properties: {
    contentType: 'application/vnd.microsoft.appconfig.ff+json;charset=utf-8'
    tags: {}
    value: '{"id": "${featureFlagName}", "description": "", "enabled": false, "conditions": {"client_filters":[]}}'
  }
}

下面是一个调用它的示例powershell脚本:

  1. 检查配置存储是否存在
  2. 检查功能标志是否存在
  3. 运行部署

代码语言:javascript
复制
$resourceGroupName = "<resource group name>"
$configurationStoreName = "<config store name>"
$featureFlagName = "<feature flag name>"

# Check if the app configuration exists
$appConfigExists = (az appconfig list `
    --resource-group $resourceGroupName `
    --query "[?name=='$configurationStoreName'].id" `
| ConvertFrom-Json).Length -gt 0

# Check if the feature flag exists
$featureFlagExists = $false
if ($appConfigExists) {
  $featureFlagExists = (az appconfig kv list `
      --name $configurationStoreName `
      --query "[?key=='.appconfig.featureflag/$featureFlagName'].key" `
  | ConvertFrom-Json).Length -gt 0
}

az deployment group create `
  --resource-group $resourceGroupName `
  --template-file .\main.bicep `
  --parameters `
  configurationStoreName=$configurationStoreName `
  featureFlagExists=$featureFlagExists `
  featureFlagName=$featureFlagName
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72000069

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档