Azure 函数在发布期间添加自定义环境变量

问题描述 投票:0回答:1

我目前可以访问发布 Azure 函数的 bash shell 中的环境变量,并且我希望能够访问我的函数应用程序内的相同环境变量。

我的管道目前看起来像这样:

az login --service-principal -u $USRN -p $PASSW --tenant $TENANT
func azure functionapp publish $FUNCTION_APP_NAME --python

在函数发布期间可以指定一些环境变量(即

CONNECTION_URL=example.com
)吗?

我见过诸如

--publish-local-settings
--publish-settings-only
--overwrite-settings
之类的操作,但我不认为它们可以帮助解决某个特定的环境变量。谢谢您的帮助!

azure azure-devops azure-functions
1个回答
0
投票

如果您的需求是配置Azure Function App的应用程序设置,您可以测试使用Azure DevOps管道任务AzureFunctionApp@2,它使我们能够在应用程序部署期间设置环境变量。

此任务不像

az login
命令那样根据用户主体及其密码进行身份验证,而是使用 Azure 资源管理器 服务连接进行身份验证,其底层主体是通常分配有订阅/资源组贡献者角色的应用程序注册。因此,也有助于避免密码泄露或用户MFA阻碍的风险。

这是一个示例 YAML 管道供您参考。

variables:
  ARMSvcCnn: TheARMSvcCnnName
  AzureFunctionApp: TheFunctionAppName

pool:
  vmImage: ubuntu-latest

stages:
- stage: Build
  jobs:
  - job: BuildJob
    steps:
    - task: UsePythonVersion@0
      displayName: "Set Python version to 3.9"
      inputs:
        versionSpec: '3.9'
        architecture: 'x64'
    - bash: |
        if [ -f extensions.csproj ]
        then
            dotnet build extensions.csproj --output ./bin
        fi
        pip install --target="./.python_packages/lib/site-packages" -r ./requirements.txt
    - task: ArchiveFiles@2
      displayName: "Archive files"
      inputs:
        rootFolderOrFile: "$(System.DefaultWorkingDirectory)"
        includeRootFolder: false
        archiveFile: "$(Build.ArtifactStagingDirectory)/build$(Build.BuildId).zip"
    - task: PublishBuildArtifacts@1
      inputs:
        PathtoPublish: '$(Build.ArtifactStagingDirectory)/build$(Build.BuildId).zip'
        artifactName: 'drop'

- stage: Deploy
  jobs:
  - deployment: DeploymentJob
    environment: AzureFunctionAppPython
    strategy:
      runOnce:
        deploy:
          steps:
          - task: AzureFunctionApp@2
            inputs:
              connectedServiceNameARM: '$(ARMSvcCnn)'
              appType: 'functionAppLinux'
              appName: '$(AzureFunctionApp)'
              package: '$(Pipeline.Workspace)/drop/build$(Build.BuildId).zip'
              appSettings: '-TestEnvVar $(Build.BuildId) -CONNECTION_URL example$(Build.BuildId).com'
              deploymentMethod: 'auto'

undefined Image

© www.soinside.com 2019 - 2024. All rights reserved.