Azure 関数の戻り値の使用Using the Azure Function return value

この記事では、戻り値が関数内でどのように機能するかについて説明します。This article explains how return values work inside a function.

戻り値がある言語では、その戻り値に関数の出力バインディングをバインドできます。In languages that have a return value, you can bind a function output binding to the return value:

  • C# クラス ライブラリでは、メソッド戻り値に出力バインディング属性を適用します。In a C# class library, apply the output binding attribute to the method return value.
  • その他の言語では、function.json 内の name プロパティを $return に設定します。In other languages, set the name property in function.json to $return.

複数の出力バインディングが存在する場合は、そのうちの 1 つにのみ戻り値を使用します。If there are multiple output bindings, use the return value for only one of them.

C# と C# スクリプトでは、out パラメーターやコレクター オブジェクトを使用してデータを出力バインディングに送信できます。In C# and C# script, alternative ways to send data to an output binding are out parameters and collector objects.

言語固有の戻り値の使用例を次に示します。See the language-specific example showing use of the return value:

C# の例C# example

出力バインディングに戻り値を使用する C# コードと非同期の例を次に示します。Here's C# code that uses the return value for an output binding, followed by an async example:

[FunctionName("QueueTrigger")]
[return: Blob("output-container/{id}")]
public static string Run([QueueTrigger("inputqueue")]WorkItem input, ILogger log)
{
    string json = string.Format("{{ \"id\": \"{0}\" }}", input.Id);
    log.LogInformation($"C# script processed queue message. Item={json}");
    return json;
}
[FunctionName("QueueTrigger")]
[return: Blob("output-container/{id}")]
public static Task<string> Run([QueueTrigger("inputqueue")]WorkItem input, ILogger log)
{
    string json = string.Format("{{ \"id\": \"{0}\" }}", input.Id);
    log.LogInformation($"C# script processed queue message. Item={json}");
    return Task.FromResult(json);
}

C# スクリプトの例C# script example

function.json ファイル内の出力バインディングを次に示します。Here's the output binding in the function.json file:

{
    "name": "$return",
    "type": "blob",
    "direction": "out",
    "path": "output-container/{id}"
}

C# スクリプト コードと非同期の例を次に示します。Here's the C# script code, followed by an async example:

public static string Run(WorkItem input, ILogger log)
{
    string json = string.Format("{{ \"id\": \"{0}\" }}", input.Id);
    log.LogInformation($"C# script processed queue message. Item={json}");
    return json;
}
public static Task<string> Run(WorkItem input, ILogger log)
{
    string json = string.Format("{{ \"id\": \"{0}\" }}", input.Id);
    log.LogInformation($"C# script processed queue message. Item={json}");
    return Task.FromResult(json);
}

F# の例F# example

function.json ファイル内の出力バインディングを次に示します。Here's the output binding in the function.json file:

{
    "name": "$return",
    "type": "blob",
    "direction": "out",
    "path": "output-container/{id}"
}

F# コードを次に示します。Here's the F# code:

let Run(input: WorkItem, log: ILogger) =
    let json = String.Format("{{ \"id\": \"{0}\" }}", input.Id)   
    log.LogInformation(sprintf "F# script processed queue message '%s'" json)
    json

JavaScript の例JavaScript example

function.json ファイル内の出力バインディングを次に示します。Here's the output binding in the function.json file:

{
    "name": "$return",
    "type": "blob",
    "direction": "out",
    "path": "output-container/{id}"
}

JavaScript では、戻り値は context.done の 2 番目のパラメーターに入ります。In JavaScript, the return value goes in the second parameter for context.done:

module.exports = function (context, input) {
    var json = JSON.stringify(input);
    context.log('Node.js script processed queue message', json);
    context.done(null, json);
}

Python の例Python example

function.json ファイル内の出力バインディングを次に示します。Here's the output binding in the function.json file:

{
    "name": "$return",
    "type": "blob",
    "direction": "out",
    "path": "output-container/{id}"
}

Python コードを次に示します。Here's the Python code:

def main(input: azure.functions.InputStream) -> str:
    return json.dumps({
        'name': input.name,
        'length': input.length,
        'content': input.read().decode('utf-8')
    })

次の手順Next steps