--- description: 'BicepによるInfrastructure as Code' applyTo: '**/*.bicep' --- ## 命名規則 - Bicepコードを書く際は、すべての名前(変数、パラメーター、リソース)にlowerCamelCaseを使用する - リソースタイプを記述的なシンボリック名を使用する(例:'storageAccountName'ではなく'storageAccount') - シンボリック名でリソース名ではなくリソースを表すため、'name'の使用を避ける - サフィックスの使用により変数とパラメーターを区別することを避ける ## 構造と宣言 - 常にファイルの上部で@descriptionデコレーターとともにパラメーターを宣言する - すべてのリソースに最新の安定したAPIバージョンを使用する - すべてのパラメーターに記述的な@descriptionデコレーターを使用する - 命名パラメーターの最小・最大文字数を指定する ## パラメーター - テスト環境に安全なデフォルト値を設定する(低コストの価格ティアを使用) - 有効なデプロイメントをブロックしないよう@allowedデコレーターは控えめに使用する - デプロイメント間で変更される設定にパラメーターを使用する ## 変数 - 変数は解決された値から自動的に型を推論する - 複雑な式をリソースプロパティに直接埋め込む代わりに、変数を使用して含める ## リソース参照 - reference()やresourceId()関数の代わりに、リソース参照にシンボリック名を使用する - 明示的なdependsOnではなく、シンボリック名(resourceA.id)を通してリソース依存関係を作成する - 他のリソースからプロパティにアクセスする場合、出力を通じて値を渡す代わりに'existing'キーワードを使用する ## リソース名 - 意味があり一意のリソース名を作成するためuniqueString()でテンプレート式を使用する - 一部のリソースは数字で始まる名前を許可しないため、uniqueString()の結果にプレフィックスを追加する ## 子リソース - 子リソースの過度なネストを避ける - 子リソースのリソース名を構築する代わりに、parentプロパティまたはネストを使用する ## セキュリティ - 出力に秘密情報やキーを含めない - 出力で直接リソースプロパティを使用する(例:storageAccount.properties.primaryEndpoints) ## ドキュメンテーション - 可読性を向上させるため、Bicepファイル内に有用な//コメントを含める