Azure Functions における Mobile Apps のバインド

Note

Azure Mobile Apps のバインドは、Azure Functions 1.x でのみ使用できます。 これらは Azure Functions 2.x 以降ではサポートされていません。

この記事では、Azure Functions で Azure Mobile Apps のバインドを操作する方法について説明します。 Azure Functions は、Mobile Apps の入力および出力バインドをサポートしています。

Mobile Apps のバインドを使用すると、モバイル アプリのデータ テーブルの読み取りや更新を行うことができます。

パッケージ - Functions 1.x

Mobile Apps バインディングは Microsoft.Azure.WebJobs.Extensions.MobileApps NuGet パッケージ、バージョン 1.x で提供されます。 パッケージのソース コードは、azure-webjobs-sdk-extensions GitHub リポジトリにあります。

次の表に、各開発環境でこのバインディングのサポートを追加する方法を示します。

開発環境 でサポートを追加するには
Functions 1.x
ローカル開発 - C# クラス ライブラリ パッケージをインストールする
ローカル開発で - C# スクリプト、JavaScript、F# 自動
Portal 開発 自動

入力

Mobile Apps 入力バインドは、モバイル テーブル エンドポイントからレコードを読み込んで関数に渡します。 C# および F# 関数では、レコードに加えられた変更は、関数が正常に終了したときに、テーブルに自動的に送り返されます。

入力 - 例

言語固有の例をご覧ください。

次の例は、function.json ファイルの Mobile Apps 入力バインドと、そのバインドが使用される C# スクリプト関数を示しています。 この関数は、レコード識別子を含むキュー メッセージによってトリガーされます。 この関数は、指定されたレコードを読み取って、Text プロパティを変更します。

function.json ファイルのバインディング データを次に示します。

{
"bindings": [
    {
        "name": "myQueueItem",
        "queueName": "myqueue-items",
        "connection": "",
        "type": "queueTrigger",
        "direction": "in"
    },
    {
        "name": "record",
        "type": "mobileTable",
        "tableName": "MyTable",
        "id": "{queueTrigger}",
        "connection": "My_MobileApp_Url",
        "apiKey": "My_MobileApp_Key",
        "direction": "in"
    }
]
}

これらのプロパティについては、「構成」セクションを参照してください。

C# スクリプト コードを次に示します。

#r "Newtonsoft.Json"    
using Newtonsoft.Json.Linq;

public static void Run(string myQueueItem, JObject record)
{
    if (record != null)
    {
        record["Text"] = "This has changed.";
    }    
}

入力 - 属性

C# クラス ライブラリでは、MobileTable 属性を使用します。

属性のプロパティについて詳しくは、この後の構成に関するセクションをご覧ください。

入力 - 構成

次の表は、function.json ファイルと MobileTable 属性で設定したバインド構成のプロパティを説明しています。

function.json のプロパティ 属性のプロパティ 説明
type 該当なし "mobileTable" に設定する必要があります。
direction 該当なし "in" に設定する必要があります。
name 該当なし 関数シグネチャの入力パラメーターの名前。
tableName TableName モバイル アプリのデータ テーブルの名前
id Id 取得するレコードの識別子。 静的にすることも、関数を呼び出すトリガーに基づいて設定することもできます。 たとえば、関数にキュー トリガーを使用した場合、"id": "{queueTrigger}" は、キュー メッセージの文字列値を、取得するレコード ID として使用します。
connection Connection モバイル アプリの URL を含むアプリ設定の名前。 この関数は、この URL を使用して、モバイル アプリに対して必要な REST 操作を作成します。 モバイル アプリの URL を含むアプリ設定を Function App で作成し、入力バインドの connection プロパティでアプリ設定の名前を指定します。 URL は、https://<appname>.azurewebsites.net のようになります。
apiKey ApiKey モバイル アプリの API キーを含むアプリ設定の名前。 API キーを Node.js モバイル アプリに実装する場合は API キーを指定します。あるいは、.NET モバイル アプリで API キーを実装することもできます。 キーを指定するには、API キーを含むアプリ設定を Function App で作成し、アプリ設定の名前を指定した apiKey プロパティを入力バインドに追加します。

ローカルで開発する場合は、Values コレクション内の local.settings.json ファイルにアプリケーション設定を追加します。

重要

API キーをモバイル アプリのクライアントと共有しないでください。 この API キーは、Azure Functions のようなサービス側のクライアントにのみ、セキュリティで保護された方法で配布する必要があります。 Azure Functions では接続情報と API キーがアプリ設定として保存されるため、これらはソース管理リポジトリにチェックインされません。 これにより、機密情報が保護されます。

入力 - 使用方法

C# 関数では、指定の ID を含むレコードが検出されると、指定された JObject パラメーターに渡されます。 レコードが検出されなかった場合、パラメーター値は null になります。

JavaScript 関数では、レコードは context.bindings.<name> オブジェクトに渡されます。 レコードが検出されなかった場合、パラメーター値は null になります。

C# および F# の関数では、入力レコード (名前付き入力パラメーター) に加えられた変更は、関数が正常に終了したときに、テーブルに自動的に送り返されます。 JavaScript 関数ではレコードを変更できません。

出力

Mobile Apps 出力バインドを使用して、Mobile Apps テーブルにレコードを書き込みます。

出力 - 例

次の例は、キュー メッセージによってトリガーされ、モバイル アプリ テーブルにレコードを作成する C# 関数を示しています。

[FunctionName("MobileAppsOutput")]        
[return: MobileTable(ApiKeySetting = "MyMobileAppKey", TableName = "MyTable", MobileAppUriSetting = "MyMobileAppUri")]
public static object Run(
    [QueueTrigger("myqueue-items", Connection = "AzureWebJobsStorage")] string myQueueItem,
    TraceWriter log)
{
    return new { Text = $"I'm running in a C# function! {myQueueItem}" };
}

出力 - 属性

C# クラス ライブラリでは、MobileTable 属性を使用します。

構成可能な属性プロパティについては、「出力 - 構成」を参照してください。 メソッド シグネチャでの MobileTable 属性の例を次に示します。

[FunctionName("MobileAppsOutput")]        
[return: MobileTable(ApiKeySetting = "MyMobileAppKey", TableName = "MyTable", MobileAppUriSetting = "MyMobileAppUri")]
public static object Run(
    [QueueTrigger("myqueue-items", Connection = "AzureWebJobsStorage")] string myQueueItem,
    TraceWriter log)
{
    ...
}

出力 - 構成

次の表は、function.json ファイルと MobileTable 属性で設定したバインド構成のプロパティを説明しています。

function.json のプロパティ 属性のプロパティ 説明
type 該当なし "mobileTable" に設定する必要があります。
direction 該当なし "out" に設定する必要があります。
name 該当なし 関数シグネチャの出力パラメーターの名前。
tableName TableName モバイル アプリのデータ テーブルの名前
connection MobileAppUriSetting モバイル アプリの URL を含むアプリ設定の名前。 この関数は、この URL を使用して、モバイル アプリに対して必要な REST 操作を作成します。 モバイル アプリの URL を含むアプリ設定を Function App で作成し、入力バインドの connection プロパティでアプリ設定の名前を指定します。 URL は、https://<appname>.azurewebsites.net のようになります。
apiKey ApiKeySetting モバイル アプリの API キーを含むアプリ設定の名前。 API キーを Node.js モバイル アプリのバックエンドに実装する場合は API キーを指定します。あるいは、.NET モバイル アプリのバックエンドで API キーを実装することもできます。 キーを指定するには、API キーを含むアプリ設定を Function App で作成し、アプリ設定の名前を指定した apiKey プロパティを入力バインドに追加します。

ローカルで開発する場合は、Values コレクション内の local.settings.json ファイルにアプリケーション設定を追加します。

重要

API キーをモバイル アプリのクライアントと共有しないでください。 この API キーは、Azure Functions のようなサービス側のクライアントにのみ、セキュリティで保護された方法で配布する必要があります。 Azure Functions では接続情報と API キーがアプリ設定として保存されるため、これらはソース管理リポジトリにチェックインされません。 これにより、機密情報が保護されます。

出力 - 使用方法

C# スクリプト関数では、out object 型の名前付き出力パラメーターを使用して出力レコードにアクセスします。 C# クラス ライブラリでは、MobileTable 属性を次のどの型に対しても使用できます。

  • ICollector<T> または IAsyncCollector<T>。このとき、TJObject か、public string Id プロパティを持つ任意の型です。
  • out JObject
  • out T または out T[]。このとき、Tpublic string Id プロパティを持つ任意の型です。

Node.js 関数では、context.bindings.<name> を使用して出力レコードにアクセスします。

次のステップ