0
0

Azure Functionsの出力バインディングでCosmosDBにinsertする時はIDを独自で指定しなければならない

Posted at

事象

Azure Functionsの統合で出力を設定し出力バインディングを作った。
image.png

コードサンプル

module.exports = async function (context, myBlob) {
    context.log("JavaScript blob trigger function processed blob \n Blob:", context.bindingData.blobTrigger, "\n Blob Size:", myBlob.length, "Bytes");
    const output = { "userId": 2, "message": "test" }
    context.bindings.outputDocument = JSON.stringify(output);
};

遭遇したエラー

上のコードを実行すると以下のようなエラーが発生する

One of the specified inputs is invalid need id function

image.png

対策

どうやらIDは自動で設定されないらしい。Node.js SDKから実行するとIDを自動生成してくれるが、Azure Functionsから書き込む場合は設定されない。

お願い
Azureの公式情報やQ&Aの記事で上記の仕様についての記載を見つけられませんでした。もしご存じの方がいたらコメントください。

修正版コード

UUIDを取得してidにセットしています。

module.exports = async function (context, myBlob) {
    context.log("JavaScript blob trigger function processed blob \n Blob:", context.bindingData.blobTrigger, "\n Blob Size:", myBlob.length, "Bytes");
    const uuid = crypto.randomUUID();
    context.log("insert CosmosDB ID:", uuid);
    const output = { "id": uuid, "userId": 2, "message": "test" }
    context.bindings.outputDocument = JSON.stringify(output);
};
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0