Azure Functions의 Mobile Apps 바인딩Mobile Apps bindings for Azure Functions

참고

Azure Mobile Apps 바인딩은 Azure Functions 1.x에만 사용할 수 있습니다.Azure Mobile Apps bindings are only available to Azure Functions 1.x. Azure Functions 2.x 이상에서는 지원 되지 않습니다.They are not supported in Azure Functions 2.x and higher.

이 문서에서는 Azure Functions에서 Azure Mobile Apps 바인딩을 사용하여 작업하는 방법을 설명합니다.This article explains how to work with Azure Mobile Apps bindings in Azure Functions. Azure Functions는 Mobile Apps에 대한 입력 및 출력 바인딩을 지원합니다.Azure Functions supports input and output bindings for Mobile Apps.

Mobile Apps 바인딩을 사용하면 모바일 앱에서 데이터 테이블을 읽고 업데이트할 수 있습니다.The Mobile Apps bindings let you read and update data tables in mobile apps.

이는 Azure Functions 개발자에 대한 참조 정보입니다.This is reference information for Azure Functions developers. Azure Functions를 처음 접하는 경우 다음 리소스부터 시작합니다.If you're new to Azure Functions, start with the following resources:

패키지 - Functions 1.xPackages - Functions 1.x

Mobile Apps는 Microsoft.Azure.WebJobs.Extensions.MobileApps NuGet 패키지 버전 1.x에서 제공됩니다.Mobile Apps bindings are provided in the Microsoft.Azure.WebJobs.Extensions.MobileApps NuGet package, version 1.x. 이 패키지에 대한 소스 코드는 azure-webjobs-sdk-extensions GitHub 리포지토리에 있습니다.Source code for the package is in the azure-webjobs-sdk-extensions GitHub repository.

다음 표에서는 각 개발 환경에서 이 바인딩에 대한 지원을 추가하는 방법을 보여줍니다.The following table tells how to add support for this binding in each development environment.

개발 환경Development environment 다음에서 지원을 추가하려면To add support in
Functions 1.xFunctions 1.x
로컬 개발 - C# 클래스 라이브러리Local development - C# class library 패키지 설치Install the package
로컬 개발 - C# 스크립트, JavaScript, F #Local development - C# script, JavaScript, F# 자동Automatic
포털 개발Portal development 자동Automatic

입력Input

Mobile Apps 입력 바인딩은 모바일 테이블 엔드포인트에서 레코드를 로드하여 함수에 전달합니다.The Mobile Apps input binding loads a record from a mobile table endpoint and passes it into your function. C# 및 F# 함수에서 함수가 성공적으로 종료되면 레코드에 변경한 내용을 자동으로 다시 테이블에 전송합니다.In C# and F# functions, any changes made to the record are automatically sent back to the table when the function exits successfully.

입력 - 예제Input - example

언어 관련 예제를 참조하세요.See the language-specific example:

입력 - C# 스크립트 예제Input - C# script example

다음 예에서는 function.json 파일의 Mobile Apps 입력 바인딩 및 바인딩을 사용하는 C# 스크립트 함수를 보여줍니다.The following example shows a Mobile Apps input binding in a function.json file and a C# script function that uses the binding. 함수는 레코드 식별자가 있는 큐 메시지에 의해 트리거됩니다.The function is triggered by a queue message that has a record identifier. 함수는 지정된 레코드를 읽고 해당 Text 속성을 수정합니다.The function reads the specified record and modifies its Text property.

function.json 파일의 바인딩 데이터는 다음과 같습니다.Here's the binding data in the function.json file:

{
"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"
    }
]
}

구성 섹션에서는 이러한 속성을 설명합니다.The configuration section explains these properties.

C# 스크립트 코드는 다음과 같습니다.Here's the C# script code:

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

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

입력 - JavaScriptInput - JavaScript

다음 예에서는 function.json 파일의 Mobile Apps 입력 바인딩 및 바인딩을 사용하는 JavaScript 함수를 보여줍니다.The following example shows a Mobile Apps input binding in a function.json file and a JavaScript function that uses the binding. 함수는 레코드 식별자가 있는 큐 메시지에 의해 트리거됩니다.The function is triggered by a queue message that has a record identifier. 함수는 지정된 레코드를 읽고 해당 Text 속성을 수정합니다.The function reads the specified record and modifies its Text property.

function.json 파일의 바인딩 데이터는 다음과 같습니다.Here's the binding data in the function.json file:

{
"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"
    }
]
}

구성 섹션에서는 이러한 속성을 설명합니다.The configuration section explains these properties.

JavaScript 코드는 다음과 같습니다.Here's the JavaScript code:

module.exports = function (context, myQueueItem) {    
    context.log(context.bindings.record);
    context.done();
};

입력 - 특성Input - attributes

C# 클래스 라이브러리에서 MobileTable 특성을 사용합니다.In C# class libraries, use the MobileTable attribute.

구성할 수 있는 특성 속성에 대한 자세한 내용은 다음 구성 섹션을 참조하세요.For information about attribute properties that you can configure, see the following configuration section.

입력 - 구성Input - configuration

다음 표에서는 함수. json 파일 및 MobileTable 특성에서 설정 하는 바인딩 구성 속성에 대해 설명 합니다.The following table explains the binding configuration properties that you set in the function.json file and the MobileTable attribute.

function.json 속성function.json property 특성 속성Attribute property DescriptionDescription
typetype 해당 없음n/a "mobileTable"로 설정해야 합니다.Must be set to "mobileTable"
방향도direction 해당 없음n/a "in"으로 설정해야 합니다.Must be set to "in"
namename 해당 없음n/a 함수 시그니처의 입력 매개 변수 이름입니다.Name of input parameter in function signature.
tableNametableName TableNameTableName 모바일 앱 데이터 테이블의 이름입니다.Name of the mobile app's data table
idid IdId 검색할 레코드의 식별자입니다.The identifier of the record to retrieve. 정적이거나 함수를 호출하는 트리거를 기반으로 할 수 있습니다.Can be static or based on the trigger that invokes the function. 예를 들어, 함수에 대해 큐 트리거를 사용하는 경우 "id": "{queueTrigger}"는 검색할 레코드 ID로 큐 메시지의 문자열 값을 사용합니다.For example, if you use a queue trigger for your function, then "id": "{queueTrigger}" uses the string value of the queue message as the record ID to retrieve.
connectionconnection 연결Connection 모바일 앱의 URL이 있는 앱 설정의 이름입니다.The name of an app setting that has the mobile app's URL. 함수는 이 URL을 사용하여 모바일 앱에 대해 필요한 나머지 작업을 구성합니다.The function uses this URL to construct the required REST operations against your mobile app. 모바일 앱의 URL이 포함된 함수 앱에 앱 설정을 만든 다음 입력 바인딩의 connection 속성에 앱 설정의 이름을 지정합니다.Create an app setting in your function app that contains the mobile app's URL, then specify the name of the app setting in the connection property in your input binding. URL은 다음과 같습니다. http://<appname>.azurewebsites.netThe URL looks like http://<appname>.azurewebsites.net.
apiKeyapiKey ApiKeyApiKey 모바일 앱의 API 키가 있는 앱 설정의 이름입니다.The name of an app setting that has your mobile app's API key. Node.js 모바일 앱에 API 키를 구현하거나 .NET 모바일 앱에 API 키를 구현하는 경우 API 키를 제공합니다.Provide the API key if you implement an API key in your Node.js mobile app, or implement an API key in your .NET mobile app. 키를 제공하려면 API 키가 포함된 함수 앱의 앱 설정을 만단 다음 apiKey 속성을 앱 설정의 이름과 함께 입력 바인딩에 추가합니다.To provide the key, create an app setting in your function app that contains the API key, then add the apiKey property in your input binding with the name of the app setting.

로컬로 개발하는 경우 앱 설정은 local.settings.json 파일로 이동합니다.When you're developing locally, app settings go into the local.settings.json file.

중요

API 키를 모바일 앱 클라이언트와 공유하지 마십시오.Don't share the API key with your mobile app clients. Azure Functions처럼 서비스 측 클라이언트에게만 안전하게 배포되어야 합니다.It should only be distributed securely to service-side clients, like Azure Functions. Azure Functions는 사용자의 소스 제어 리포지토리를 확인하지 않도록 사용자 연결 정보 및 API 키를 앱 설정으로 저장합니다.Azure Functions stores your connection information and API keys as app settings so that they are not checked into your source control repository. 이는 사용자의 중요한 정보를 보호합니다.This safeguards your sensitive information.

입력 - 사용Input - usage

C# 함수에서 지정된 ID가 있는 레코드를 찾으면 명명된 JObject 매개 변수로 전달됩니다.In C# functions, when the record with the specified ID is found, it is passed into the named JObject parameter. 레코드를 찾을 수 없는 경우 매개 변수 값은 null입니다.When the record is not found, the parameter value is null.

JavaScript 함수에서는 레코드가 context.bindings.<name> 개체로 전달됩니다.In JavaScript functions, the record is passed into the context.bindings.<name> object. 레코드를 찾을 수 없는 경우 매개 변수 값은 null입니다.When the record is not found, the parameter value is null.

C# 및 F# 함수에서 함수가 성공적으로 종료되면 입력 레코드에 변경한 내용(입력 매개 변수)을 자동으로 다시 테이블에 전송합니다.In C# and F# functions, any changes you make to the input record (input parameter) are automatically sent back to the table when the function exits successfully. JavaScript 함수에서는 레코드를 수정할 수 없습니다.You can't modify a record in JavaScript functions.

출력Output

Mobile Apps 출력 바인딩을 사용하여 Mobile Apps 테이블에 새 레코드를 작성합니다.Use the Mobile Apps output binding to write a new record to a Mobile Apps table.

출력 - 예제Output - example

언어 관련 예제를 참조하세요.See the language-specific example:

출력 - C# 예제Output - C# example

다음 예에서는 큐 메시지에 의해 트리거된 C# 함수를 보여주고 모바일 앱 테이블에 레코드를 만듭니다.The following example shows a C# function that is triggered by a queue message and creates a record in a mobile app table.

[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# 스크립트 예제Output - C# script example

다음 예에서는 function.json 파일의 Mobile Apps 출력 바인딩 및 바인딩을 사용하는 C# 스크립트 함수를 보여줍니다.The following example shows a Mobile Apps output binding in a function.json file and a C# script function that uses the binding. 함수는 큐 메시지에 의해 트리거되고 Text 속성에 대해 하드 코딩된 값이 있는 새 레코드를 만듭니다.The function is triggered by a queue message and creates a new record with hard-coded value for the Text property.

function.json 파일의 바인딩 데이터는 다음과 같습니다.Here's the binding data in the function.json file:

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

구성 섹션에서는 이러한 속성을 설명합니다.The configuration section explains these properties.

C# 스크립트 코드는 다음과 같습니다.Here's the C# script code:

public static void Run(string myQueueItem, out object record)
{
    record = new {
        Text = $"I'm running in a C# function! {myQueueItem}"
    };
}

출력 - JavaScript 예제Output - JavaScript example

다음 예에서는 function.json 파일의 Mobile Apps 출력 바인딩 및 바인딩을 사용하는 JavaScript 함수를 보여줍니다.The following example shows a Mobile Apps output binding in a function.json file and a JavaScript function that uses the binding. 함수는 큐 메시지에 의해 트리거되고 Text 속성에 대해 하드 코딩된 값이 있는 새 레코드를 만듭니다.The function is triggered by a queue message and creates a new record with hard-coded value for the Text property.

function.json 파일의 바인딩 데이터는 다음과 같습니다.Here's the binding data in the function.json file:

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

구성 섹션에서는 이러한 속성을 설명합니다.The configuration section explains these properties.

JavaScript 코드는 다음과 같습니다.Here's the JavaScript code:

module.exports = function (context, myQueueItem) {

    context.bindings.record = {
        text : "I'm running in a Node function! Data: '" + myQueueItem + "'"
    }   

    context.done();
};

출력 - 특성Output - attributes

C# 클래스 라이브러리에서 MobileTable 특성을 사용합니다.In C# class libraries, use the MobileTable attribute.

구성할 수 있는 특성 속성에 대한 자세한 내용은 출력 - 구성을 참조하세요.For information about attribute properties that you can configure, see Output - configuration. 다음은 메서드 서명의 MobileTable 특성 예제입니다.Here's a MobileTable attribute example in a method signature:

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

전체 예제는 출력 - C# 예제를 참조하세요.For a complete example, see Output - C# example.

출력 - 구성Output - configuration

다음 표에서는 함수. json 파일 및 MobileTable 특성에서 설정 하는 바인딩 구성 속성에 대해 설명 합니다.The following table explains the binding configuration properties that you set in the function.json file and the MobileTable attribute.

function.json 속성function.json property 특성 속성Attribute property DescriptionDescription
typetype 해당 없음n/a "mobileTable"로 설정해야 합니다.Must be set to "mobileTable"
방향도direction 해당 없음n/a "out"으로 설정해야 합니다.Must be set to "out"
namename 해당 없음n/a 함수 시그니처의 출력 매개 변수 이름입니다.Name of output parameter in function signature.
tableNametableName TableNameTableName 모바일 앱 데이터 테이블의 이름입니다.Name of the mobile app's data table
connectionconnection MobileAppUriSettingMobileAppUriSetting 모바일 앱의 URL이 있는 앱 설정의 이름입니다.The name of an app setting that has the mobile app's URL. 함수는 이 URL을 사용하여 모바일 앱에 대해 필요한 나머지 작업을 구성합니다.The function uses this URL to construct the required REST operations against your mobile app. 모바일 앱의 URL이 포함된 함수 앱에 앱 설정을 만든 다음 입력 바인딩의 connection 속성에 앱 설정의 이름을 지정합니다.Create an app setting in your function app that contains the mobile app's URL, then specify the name of the app setting in the connection property in your input binding. URL은 다음과 같습니다. http://<appname>.azurewebsites.netThe URL looks like http://<appname>.azurewebsites.net.
apiKeyapiKey ApiKeySettingApiKeySetting 모바일 앱의 API 키가 있는 앱 설정의 이름입니다.The name of an app setting that has your mobile app's API key. Node.js 모바일 앱 백 엔드에 API 키를 구현하거나 .NET 모바일 앱 백 엔드에 API 키를 구현하는 경우 API 키를 제공합니다.Provide the API key if you implement an API key in your Node.js mobile app backend, or implement an API key in your .NET mobile app backend. 키를 제공하려면 API 키가 포함된 함수 앱의 앱 설정을 만단 다음 apiKey 속성을 앱 설정의 이름과 함께 입력 바인딩에 추가합니다.To provide the key, create an app setting in your function app that contains the API key, then add the apiKey property in your input binding with the name of the app setting.

로컬로 개발하는 경우 앱 설정은 local.settings.json 파일로 이동합니다.When you're developing locally, app settings go into the local.settings.json file.

중요

API 키를 모바일 앱 클라이언트와 공유하지 마십시오.Don't share the API key with your mobile app clients. Azure Functions처럼 서비스 측 클라이언트에게만 안전하게 배포되어야 합니다.It should only be distributed securely to service-side clients, like Azure Functions. Azure Functions는 사용자의 소스 제어 리포지토리를 확인하지 않도록 사용자 연결 정보 및 API 키를 앱 설정으로 저장합니다.Azure Functions stores your connection information and API keys as app settings so that they are not checked into your source control repository. 이는 사용자의 중요한 정보를 보호합니다.This safeguards your sensitive information.

출력 - 사용Output - usage

C# 스크립트 함수에서 out object 형식의 명명된 출력 매개 변수를 사용하여 출력 레코드에 액세스합니다.In C# script functions, use a named output parameter of type out object to access the output record. C# 클래스 라이브러리에서 MobileTable 특성은 다음 유형 중 하나와 함께 사용할 수 있습니다.In C# class libraries, the MobileTable attribute can be used with any of the following types:

  • TJObject 또는 public string Id 속성이 있는 type인 경우, ICollector<T> 또는 IAsyncCollector<T>.ICollector<T> or IAsyncCollector<T>, where T is either JObject or any type with a public string Id property.
  • out JObject
  • Tpublic string Id 속성이 있는 type인 경우, out T 또는 out T[].out T or out T[], where T is any Type with a public string Id property.

Node.js 함수에서 context.bindings.<name>을 사용하여 출력 레코드에 액세스합니다.In Node.js functions, use context.bindings.<name> to access the output record.

다음 단계Next steps