Skip to content

Referencing endpoint url or any endpoint property results in unquoted literals in bicepparam file #4483

@davidfowl

Description

@davidfowl
var builder = DistributedApplication.CreateBuilder(args);

var cache = builder.AddRedis("cache");

cache.PublishAsAzureContainerApp((m, app) =>
{
    m.AspireResource.Parameters["host"] = cache.Resource.PrimaryEndpoint.Property(EndpointProperty.Host);
});

builder.Build().Run();
<Project Sdk="Microsoft.NET.Sdk">

  <Sdk Name="Aspire.AppHost.Sdk" Version="9.1.0-preview.1.24521.2" />

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net8.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
    <IsAspireHost>true</IsAspireHost>
    <UserSecretsId>2988c7d3-6a00-4a11-8335-e5ab11ae7252</UserSecretsId>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Aspire.Hosting.AppHost" Version="9.1.0-preview.1.24521.2" />
    <PackageReference Include="Aspire.Hosting.Azure.AppContainers" Version="9.1.0-preview.1.24521.2" />
    <PackageReference Include="Aspire.Hosting.Redis" Version="9.1.0-preview.1.24521.2" />
  </ItemGroup>

</Project>

Manifest:

{
  "$schema": "https://json.schemastore.org/aspire-8.0.json",
  "resources": {
    "cache": {
      "type": "container.v1",
      "connectionString": "{cache.bindings.tcp.host}:{cache.bindings.tcp.port}",
      "image": "docker.io/library/redis:7.4",
      "deployment": {
        "type": "azure.bicep.v0",
        "path": "cache.module.bicep",
        "params": {
          "outputs_azure_container_registry_managed_identity_id": "{.outputs.AZURE_CONTAINER_REGISTRY_MANAGED_IDENTITY_ID}",
          "outputs_managed_identity_client_id": "{.outputs.MANAGED_IDENTITY_CLIENT_ID}",
          "outputs_azure_container_apps_environment_id": "{.outputs.AZURE_CONTAINER_APPS_ENVIRONMENT_ID}",
          "host": "{cache.bindings.tcp.host}"
        }
      },
      "bindings": {
        "tcp": {
          "scheme": "tcp",
          "protocol": "tcp",
          "transport": "tcp",
          "targetPort": 6379
        }
      }
    }
  }
}

This results in an unquoted value in the bicepparam:

using './cache.module.bicep'

param host = cache
param outputs_azure_container_apps_environment_id = '{{ .Env.AZURE_CONTAINER_APPS_ENVIRONMENT_ID }}'
param outputs_azure_container_registry_managed_identity_id = '{{ .Env.AZURE_CONTAINER_REGISTRY_MANAGED_IDENTITY_ID }}'
param outputs_managed_identity_client_id = '{{ .Env.MANAGED_IDENTITY_CLIENT_ID }}'

Notice host = cache without the quotes.

Note: I'm using 9.1.0 but any 9.x version should work.

cc @vhvb1989

Metadata

Metadata

Assignees

Labels

area/aspire.NET Aspire integration

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions