より良いAzureリソース名スキーム
.NET Aspire 9.0 GA では、Azure リソースの名前付けスキームがより堅牢で柔軟なシステムに更新されました。 この変更により、以前の名前付けスキームが原因で発生していた名前の切り捨てや無効なデプロイといった問題が解決されます。
導入されたバージョン
.NET .NET Aspire 9.0 GA
以前の動作
以前のバージョンでは、Azure.Provisioning
の初期/アルファ バージョンを使用しました。このバージョンでは、すべてのリソースの最小共通分母を試みた名前付けスキームが採用されています。 多くの場合、名前が切り捨てられたり、無効になったりします。
protected string GetGloballyUniqueName(string resourceName)
=> $"toLower(take('{resourceName}${{uniqueString(resourceGroup().id)}}', 24))";
新しい動作
新しいバージョンの Azure.Provisioning
では、最大長や有効な文字など、各リソースの種類の特定の要件を考慮した、より高度な名前付けスキームが使用されます。
public override BicepValue<string>? ResolveName(
ProvisioningContext context,
Resource resource,
ResourceNameRequirements requirements)
{
string prefix = SanitizeText(
resource.ResourceName, requirements.ValidCharacters);
string separator =
requirements.ValidCharacters.HasFlag(ResourceNameCharacters.Hyphen) ? "-" :
requirements.ValidCharacters.HasFlag(ResourceNameCharacters.Underscore) ? "_" :
requirements.ValidCharacters.HasFlag(ResourceNameCharacters.Period) ? "." :
"";
BicepValue<string> suffix = GetUniqueSuffix(context, resource);
return BicepFunction.Take(
BicepFunction.Interpolate(
$"{prefix}{separator}{suffix}"), requirements.MaxLength);
}
破壊的変更の種類
この変更は、動作の変更です。
推奨されるアクション
古い名前付けスキームを維持するユーザーは、Azure CDK ProvisioningContext
オブジェクトをカスタマイズできます。 これを行うには、AzureProvisioningOptions
クラスを構成し、AzureResourceNamePropertyResolverAspireV8
リゾルバーを挿入します。
var builder = DistributedApplication.CreateBuilder(args);
builder.Services.Configure<AzureProvisioningOptions>(options =>
{
options.ProvisioningBuildOptions.InfrastructureResolvers.Insert(0, new AspireV8ResourceNamePropertyResolver());
});
影響を受ける API
何一つ。
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET Aspire