Tenho uma Função do Azure baseada em Python 3.12 (o mesmo problema ocorreu quando fiz o downgrade para Python 3.11). Isso funcionou bem até eu importar azure.identity
e azure.keyvault.secrets
. Desde que as adicionei, as funções não são mais exibidas na minha Função do Azure. Quando eu as removo, as funções voltam. Tudo funciona bem quando o pacote é carregado do requirements.txt
. O problema só acontece quando eu adiciono
from azure.keyvault.secrets import SecretClient
from azure.identity import DefaultAzureCredential
Qual pode ser o problema que leva a isso?
Estrutura do Projeto
function_app.py
import azure.functions as func
from http_blueprint import bp_http
from timer_blueprint import bp_timer
app = func.FunctionApp()
app.register_functions(bp_http)
app.register_functions(bp_timer)
http_blueprint.py
import logging
import azure.functions as func
bp_http = func.Blueprint()
@bp_http.route(route="default_template")
def default_template(req: func.HttpRequest) -> func.HttpResponse:
...
timer_blueprint.py
import os
import requests
import logging
import datetime
import azure.functions as func
from azure.keyvault.secrets import SecretClient
from azure.identity import DefaultAzureCredential
#same issue when libaries would be imported like this
#import azure.identity
#import azure.keyvault.secrets
bp_timer = func.Blueprint()
@bp_timer.timer_trigger(schedule="0 * * * * *",
arg_name="mytimer",
run_on_startup=True)
def exec_timer(mytimer: func.TimerRequest) -> None:
...
azure_pipelines.yml (com base no exemplo; crie e implante no momento, um após o outro - será dividido se tudo funcionar)
pool:
vmImage: ubuntu-latest
strategy:
matrix:
Python312:
python.version: '3.12'
steps:
- task: UsePythonVersion@0
inputs:
versionSpec: '$(python.version)'
displayName: 'Use Python $(python.version)'
- script: |
python -m pip install -U pip
python -m pip install --target="./.python_packages/lib/site-packages" --upgrade -r requirements.txt
displayName: 'Install dependencies'
- task: ArchiveFiles@2
displayName: 'Archive files'
inputs:
rootFolderOrFile: $(System.DefaultWorkingDirectory)
includeRootFolder: false
archiveType: zip
archiveFile: $(Build.ArtifactStagingDirectory)/$(Build.BuildId)-$(python.version).zip
replaceExistingArchive: true
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
ArtifactName: 'drop'
publishLocation: 'Container'
- task: AzureFunctionApp@2
inputs:
connectedServiceNameARM: 'Deploy'
appType: 'functionAppLinux'
appName: 'appName'
package: '$(Build.ArtifactStagingDirectory)/$(Build.BuildId)-$(python.version).zip'
runtimeStack: 'PYTHON|3.12'
deploymentMethod: 'zipDeploy'
requisitos.txt
azure-functions==1.21.3
discord.py==2.5.2
discord_interactions==0.4.0
Flask==3.1.0
requests==2.32.3
azure-identity==1.21.0
azure-keyvault-secrets==4.9.0
cryptography==43.0.3