У меня действительно простая функция Azure с единственной целью: взять все сообщения, включенные в большой двоичный объект, и поместить эти сообщения в очередь хранения.
Я запускаю функции 2.x, функция написанав JavaScript, и я зарегистрировал триггер BLOB-объекта и выходную привязку для очередей хранения.
Проблема, с которой я столкнулся, заключается в том, что выходная привязка недоступна в ctx.bindings
в моей функции.Я использую именованную выходную привязку, потому что у меня будет несколько выходных привязок.Когда я изменяю имя выходной привязки на $return
и возвращаю свои данные, сообщения записываются в очередь, как и ожидалось, но когда я задаю другое имя, привязка не отображается в контексте.Однако я могу увидеть определение привязки в ctx.bindingDefinitions
.
Я выполняю код локально с помощью узла функций Azure с установленными соответствующими расширениями.
Мой код выглядит следующим образом:
import { Context } from '@azure/functions'
export async function run(ctx: Context , content: string): Promise<void> {
try {
const data = JSON.parse(content)
if (!ctx.bindings[data.queue]) {
throw new Error(`No output binding defined for queue '${data.queue}'`)
}
ctx.bindings[data.queue] = [...data.messages]
} catch (e) {
return Promise.reject(e)
}
}
И мой function.json:
{
"disabled": false,
"bindings": [
{
"name": "content",
"type": "blobTrigger",
"direction": "in",
"path": "message-batches/{filename}.txt"
},
{
"type": "queue",
"direction": "out",
"name": "message",
"queueName": "message",
"connection": "AZURE_STORAGE_CONNECTION_STRING"
}
],
"scriptFile": "index.js"
}
Моя входящая content
привязка доступна как ctx.bindings.content
.Я думаю, что я мог бы упустить что-то тривиальное здесь, но что может быть причиной того, что привязка не отображается под ctx.bindings
?