System.UnauthorizedAccessException:在 Azure Functions Windows 容器中拒绝访问路径 'C:\runtime\Secrets\host.json'

System.UnauthorizedAccessException : Access to the path 'C:\runtime\Secrets\host.json' is denied in Azure Functions Windows container

基于this Dockerfile 我在 Windows 容器中 运行 Azure Functions 运行时。

我想带上我自己的秘密。所以我将自己的 host.json 添加到 runtime\secrets 文件夹中,并将存储类型设置为 files:

host_secret.json:

{
  "masterKey": {
    "name": "master",
    "value": "***fancy-code-for-host-admin-and-keys-api***",
    "encrypted": false
  },
  "functionKeys": [
    {
      "name": "default",
      "value": "***fancy-code-for-functions***",
      "encrypted": false
    }
  ]
}

Dockerfile:

....
ADD host_secret.json C:\runtime\Secrets\host.json
ENV AzureWebJobsSecretStorageType=files
....

启动容器和函数应用时,没有响应显示

Function host is not running.

检查我找到的日志

System.UnauthorizedAccessException : Access to the path 'C:\runtime\Secrets\host.json' is denied

容器 运行 为 ContainerUser,因此该用户需要访问该文件。

ADD host_secret.json C:\runtime\Secrets\host.json

USER ContainerAdministrator
RUN icacls "c:\runtime\secrets" /t /grant Users:M
USER ContainerUser

ENV AzureWebJobsSecretStorageType=files

这向容器内的用户授予修改访问权限 - 组 ContainerUser 是其成员。