Azure / azure-functions-durable-powershell

PowerShell SDK for writing Durable Functions apps
MIT License
7 stars 3 forks source link

Get-DurableStatus still causing Error 401 (Unauthorized) in Azure Function App #73

Open tjgruber opened 6 months ago

tjgruber commented 6 months ago

This issue is still happening in Azure Durable Functions via HTTP starter function.

Apparently this has been fixed, but it does not actually seem to be, see:

To rule out any issues in my own code & functions, I also tested using Microsoft's own examples, showing the issue persists:

Using template:

The orchestrator and activity are running just fine.

The Starter works fine until it gets to the following line: $Status = Get-DurableStatus -InstanceId $InstanceId

Starter returns:

2024-05-03T18:35:58Z   [Information]   INFORMATION: DurableClient started
2024-05-03T18:35:58Z   [Information]   INFORMATION: Started orchestration with ID = 'b937fc9d-a34d-4407-a876-c9cdd2f18c2e', FunctionName = 'regAPOrch'
2024-05-03T18:35:58Z   [Error]   EXCEPTION: Response status code does not indicate success: 401 (Unauthorized).

Orchestrator returns:

2024-05-03T18:39:51Z   [Information]   INFORMATION: DurableOrchestrator: started. Input: Hello
2024-05-03T18:39:51Z   [Information]   INFORMATION: DurableOrchestrator: finished.
2024-05-03T18:39:51Z   [Information]   OUTPUT: Hello Tokyo
2024-05-03T18:39:51Z   [Information]   <id>: Function 'regAPOrch (Orchestrator)' completed.

Activity returns:

2024-05-03T18:39:41Z   [Information]   INFORMATION: DurableActivity(Tokyo) started
2024-05-03T18:39:51Z   [Information]   INFORMATION: DurableActivity(Tokyo) finished
2024-05-03T18:39:51Z   [Information]   Executed 'Functions.regAPAct'
andystaples commented 1 week ago

When digging into this issue, it was discovered that this is a result of not importing the external module explicitly into your function app by adding a line like this somewhere in your app (preferably profile.ps1)

Import-Module AzureFunctions.PowerShell.Durable.SDK

If the module is not imported, the function definitions from this module are not loaded and instead the ones bundled with the PowerShell worker are used. I have opened a PR on the PowerShell worker to fix this behavior in the bundled module, but for now you can resolve this by adding the import statement.