Blob Trigger для приложения Python Function не запускается - PullRequest
0 голосов
/ 13 марта 2019

Я использую локальную машину Ubuntu 16.04.5 LTS для создания и публикации приложения-функции Python в Azure с использованием CLI и основных средств функций Azure ( Ref ).Я настроил Blob Trigger, и мой файл function.json выглядит следующим образом:

{
"disabled": false,
"scriptFile": "__init__.py",
"bindings": [
{
  "name": "<Blob Trigger Name>",
  "type": "blobTrigger",
  "direction": "in",
  "path": "<Blob Container Name>/{name}",
  "connection": "<Connection String having storage account and key>"
},
{
  "name": "outputblob",
  "type": "blob",
  "path": "<Blob Container Name>",
  "connection": "<Connection String having storage account and key>",
  "direction": "out"
}
]
}

Моя init .py функция выглядит следующим образом.

def main(<Blob Trigger Name>: func.InputStream, doc: func.Out[func.Document]):
logging.info(f"Python blob trigger function processed blob \n"
             f"Name: {<Blob Trigger Name>.name}\n"
             f"Blob Size: {<Blob Trigger Name>.length} bytes")
logging.basicConfig(filename='example.log',level=logging.DEBUG)
logging.debug('This message should go to the log file')
logging.info('So should this')
logging.warning('And this, too')

# Write text to the file.
file = open("QuickStart.txt",  'w')
file.write("Hello, World!")
file.close()

# Create the BlockBlockService that is used to call the Blob service for the storage account
block_blob_service = BlockBlobService(account_name='<Storage Account Name>', account_key='<Storage Account Key>')
container_name='<Blob Container Name>'

# Set the permission so the blobs are public.
block_blob_service.set_container_acl(container_name, public_access=PublicAccess.Container)

# Upload the created file, use local_file_name for the blob name
block_blob_service.create_blob_from_path(container_name, 'QuickStart.txt', '')

ФункцияПриложение "Всегда включено", но когда я загружаю блоб в хранилище, функция не срабатывает.Еще одна ссылка - это (ссылка).

Что не так?

Спасибо и всего наилучшего, Шашанк

Ответы [ 2 ]

1 голос
/ 23 мая 2019

Проверено ли, что local.settings.json (строки подключения для учетных записей хранения) также есть в приложении функций в Azure? Они по умолчанию не публикуются с локальной машины.

Вы можете настроить их вручную на портале или использовать флаг publish-local-settings :

func azure functionapp publish "functionname" --publish-local-settings
0 голосов
/ 13 марта 2019

Я попытался воспроизвести эту проблему, создав образец приложения-функции на python с использованием кода Visual Studio с шаблоном по умолчанию и, наконец, развернут в Linux. У меня это сработало.

Вот фрагмент кода, который я написал в файле Pyhton.

import logging

import azure.functions as func


def main(myblob: func.InputStream):
    logging.info(f"Python blob trigger function processed blob \n"
                 f"Name: {myblob.name}\n"
                 f"Blob Size: {myblob.length} bytes")

а вот файл function.json из моего приложения функций.

{
  "scriptFile": "__init__.py",
  "bindings": [
    {
      "name": "myblob",
      "type": "blobTrigger",
      "direction": "in",
      "path": "samples-workitems/{name}",
      "connection": ""
    }
  ]
}

Я использую 2.0 функцию Azure, Python 3.6 и основные инструменты Azure версии 2.2.70

это ссылка, которую я использовал:

https://docs.microsoft.com/en-us/azure/azure-functions/functions-create-first-function-python

Пожалуйста, попробуйте использовать это и посмотрите, поможет ли это.

...