Estou tentando fazer meu primeiro aplicativo de função python. O aplicativo é apenas um aplicativo simples que cria um arquivo blob. O código é executado localmente. No entanto, quando eu implanto no Azure, não vejo o aplicativo de função.
Se eu remover isso, então funciona:
from azure.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient, BlobClient, ContainerClient
Código completo:
import logging
import datetime
import azure.functions as func
from azure.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient, BlobClient, ContainerClient
app = func.FunctionApp()
@app.timer_trigger(schedule="0 * * * * *", arg_name="myTimer", run_on_startup=False, use_monitor=False)
def timer_trigger(myTimer: func.TimerRequest) -> None:
logging.info('Python timer trigger function executed.')
Configuration in azure:
[
{
"name": "APPINSIGHTS_INSTRUMENTATIONKEY",
"value": "xx-6dd2-xx-9ab8-xx",
"slotSetting": true
},
{
"name": "APPLICATIONINSIGHTS_CONNECTION_STRING",
"value": "InstrumentationKey=xx;IngestionEndpoint=https://westeurope-5.in.applicationinsights.azure.com/;LiveEndpoint=https://westeurope.livediagnostics.monitor.azure.com/;ApplicationId=xxx",
"slotSetting": false
},
{
"name": "AzureWebJobsStorage",
"value": "DefaultEndpointsProtocol=https;AccountName=xx;AccountKey=xx;EndpointSuffix=core.windows.net",
"slotSetting": false
},
{
"name": "BUILD_FLAGS",
"value": "UseExpressBuild",
"slotSetting": false
},
{
"name": "AzureWebJobsStorage__accountname",
"value": "stsxxxondev",
"slotSetting": false
},
{
"name": "ENABLE_ORYX_BUILD",
"value": "true",
"slotSetting": false
},
{
"name": "FUNCTIONS_EXTENSION_VERSION",
"value": "~4",
"slotSetting": false
},
{
"name": "FUNCTIONS_WORKER_RUNTIME",
"value": "python",
"slotSetting": false
},
{
"name": "SCM_DO_BUILD_DURING_DEPLOYMENT",
"value": "1",
"slotSetting": false
},
{
"name": "XDG_CACHE_HOME",
"value": "/tmp/.cache",
"slotSetting": false
}
]
Criei um aplicativo de função Python Azure e implantei seu código de função. Capaz de sincronizar o gatilho do timer no portal.
função_app.py:
configurações locais.json:
Habilite a Identidade Gerenciada no aplicativo de funções.
Navegue até Conta de armazenamento => Controle de acesso => Adicionar atribuição de função e atribua
Storage Blob Data Contributor
uma função à identidade gerenciada do functionapp.AzureWebJobsStorage__accountname= <storagename>
na função app=>settings=>Environment Variables:Registros de implantação:
Portal:
Resposta:
Blobs no recipiente de armazenamento: