Bicep診断コード - BCP033

この診断は、不一致のデータ型の値を割り当てるときに発生します。

Description

<data-type>型の値が必要ですが、指定された値は<data-type>型です。

Level

警告/エラー

解決策

想定されるデータ型を使用します。 指定された値がトークンの場合は、問題を軽減するために any() 関数 で囲みます。

次の例では、予期されるデータ型が文字列であるため、診断を発生させます。 実際に指定された値は整数です。

var myValue = 5

output myString string = myValue

文字列値を指定することで、診断を修正できます。

var myValue = '5'

output myString string = myValue

Azure Bicepでは、 デコレーターによって制限されたパラメーターの既定値として deployment().location を使用しているときに、エラー @allowed が発生するのは一般的なシナリオです。 このエラーは、Bicepの厳密なコンパイル時の型安全メカニズムが原因で発生します。 例えば次が挙げられます。

targetScope = 'subscription'

@allowed([
  'southcentralus'
  'eastus2euap'
])
param location string = deployment().location

現在のデプロイのメタデータの場所に既定値を設定する利便性を維持する場合は、Bicepの any() 関数を使用してコンパイル時の型チェックをバイパスできます。 この関数は、式を疎型として扱うようにコンパイラに指示します。

targetScope = 'subscription'

@allowed([
  'southcentralus'
  'eastus2euap'
])
// The any() function suppresses the BCP033 type-mismatch error
param location string = any(deployment().location)

デプロイが 1 つのリージョンに厳密にバインドされている場合は、動的な deployment().location メタデータを完全に使用しないようにし、リスト内に存在する既定値を明示的に割り当てることができます。

次のステップ

Bicep 診断の詳細については、「 Bicep コア診断」を参照してください。