Azure/azure-cosmos-table-dotnet

`TableName` field does not accept dashes.

b0wter opened this issue · 6 comments

You can use the Azure portal to create tables in an Azure Cosmos DB account that contain dashes, e.g. "my-table-name". However, when I try to use that name in my Azure function project with the Microsoft.Azure.Cosmos.Table library I can no longer run the function because I get the following error:

Microsoft.Azure.WebJobs.Host: Error indexing method 'MyFunction'. Microsoft.Azure.WebJobs.Host: Validation failed for property 'TableName', value 'my-table-name'. The field TableName must match the regular expression '^[A-Za-z][A-Za-z0-9]{2,62}$'.

Changing the name to "myTableName" makes it work.

** SDK version
I am running a .net core 2.1 Azure function project.

** Issue reproduce steps
Create an Azure function. Add the Microsoft.Azure.Cosmos.Table nuget package and add an output trigger like this:

public static async Task MyFunction(
            ILogger log,
            [Table("%TableName%", Connection = "ConnectionString")] IAsyncCollector<CacheItem<string>> table)
{
    ...
}

Add the following entry to local.settings.json:

{
    ...
    "TableName": "my-table-name"
    ...
}

Add a table in your Table Storage Account named "my-table-name".

Then run the function. It will fail with the error:

Microsoft.Azure.WebJobs.Host: Error indexing method 'MyFunction'. Microsoft.Azure.WebJobs.Host: Validation failed for property 'TableName', value 'my-table-name'. The field TableName must match the regular expression '^[A-Za-z][A-Za-z0-9]{2,62}$'.

** Whether the issue is consistent or sporadic
The issue happens each time I start my function.

** Environment Summary
Ubuntu 20.04 with the following dotnet packages installed:
image

** Any other context, such as stack trace or log.

Table names can only be alphanumeric (reference: https://docs.microsoft.com/en-us/azure/azure-resource-manager/management/resource-name-rules#microsoftstorage). I believe they must also not begin with a number. No hyphens allowed.

Interesting. So the error is either in the documentation or the portal itself? Any idea on where to check that?

I'm not really sure what you're asking. The portal doesn't allow hyphens/dashes either:

azure-table-hyphen

I don't see anything that would tell me they are allowed. Are you able to create them with hyphens through the portal?

I have no idea what I did initially. Sorry for bothering you. Everything is fine the way it is 😓

I was able to create a table using hyphen and got the same error when binding the cosmodb table to my function using the table name
Error: Validation failed for property 'TableName', value 'crc-cosmodb'. The field TableName must match the regular expression '^[A-Za-z][A-Za-z0-9]{2,62}$'.

I was able to create a table using hyphen and got the same error when binding the cosmodb table to my function using the table name Error: Validation failed for property 'TableName', value 'crc-cosmodb'. The field TableName must match the regular expression '^[A-Za-z][A-Za-z0-9]{2,62}$'.

I didn't get the error when i created a table without hyphen or underscore called "crccosmodb". So apparently you can create table in Azure cosmodb Table using hyphen or underscore without getting any error. Just put in mind that if you plan to use your table with your azure function (python - in my case) create your table without any hyphens or underscores.