Azure Functions 트리거 및 바인딩 예제Azure Functions trigger and binding example

이 문서에서는 Azure 함수에서 트리거와 바인딩을 구성 하는 방법을 보여 줍니다.This article demonstrates how to configure a trigger and bindings in an Azure Function.

Azure Queue 스토리지에 새 메시지가 나타날 때마다 Azure Table Storage에 새 행을 쓰려는 경우를 가정하겠습니다.Suppose you want to write a new row to Azure Table storage whenever a new message appears in Azure Queue storage. 이 시나리오는 Azure Queue 스토리지 트리거 및 Azure Table Storage 출력 바인딩을 사용하여 구현할 수 있습니다.This scenario can be implemented using an Azure Queue storage trigger and an Azure Table storage output binding.

다음은 이 시나리오에 대한 function.json 파일입니다.Here's a function.json file for this scenario.

{
  "bindings": [
    {
      "type": "queueTrigger",
      "direction": "in",
      "name": "order",
      "queueName": "myqueue-items",
      "connection": "MY_STORAGE_ACCT_APP_SETTING"
    },
    {
      "type": "table",
      "direction": "out",
      "name": "$return",
      "tableName": "outTable",
      "connection": "MY_TABLE_STORAGE_ACCT_APP_SETTING"
    }
  ]
}

bindings 배열의 첫 번째 요소는 Queue Storage 트리거입니다.The first element in the bindings array is the Queue storage trigger. typedirection 속성은 트리거를 식별합니다.The type and direction properties identify the trigger. name 속성은 큐 메시지 콘텐츠를 받는 함수 매개 변수를 식별합니다.The name property identifies the function parameter that receives the queue message content. 모니터링하는 큐 이름은 queueName에 있으며 연결 문자열은 connection으로 식별되는 앱 설정에 있습니다.The name of the queue to monitor is in queueName, and the connection string is in the app setting identified by connection.

bindings 배열의 두 번째 요소는 Azure Table Storage 출력 바인딩입니다.The second element in the bindings array is the Azure Table Storage output binding. typedirection 속성은 바인딩을 식별합니다.The type and direction properties identify the binding. name 속성은 함수가 새 테이블 행을 제공하는 방법을 지정하며 이 경우 함수 반환 값을 사용합니다.The name property specifies how the function provides the new table row, in this case by using the function return value. 테이블의 이름은 tableName에 있으며 연결 문자열은 connection으로 식별되는 앱 설정에 있습니다.The name of the table is in tableName, and the connection string is in the app setting identified by connection.

Azure Portal에서 function.json의 내용을 보고 편집하려면 함수의 통합 탭에서 고급 편집기를 클릭합니다.To view and edit the contents of function.json in the Azure portal, click the Advanced editor option on the Integrate tab of your function.

참고

connection의 값은 연결 문자열 자체가 아닌 연결 문자열을 포함하는 앱 설정의 이름입니다.The value of connection is the name of an app setting that contains the connection string, not the connection string itself. 바인딩은 function.json에 서비스 비밀이 포함되지 않은 모범 사례를 실행하기 위해 앱 설정에 저장된 연결 문자열을 사용합니다.Bindings use connection strings stored in app settings to enforce the best practice that function.json does not contain service secrets.

C# 스크립트 예제C# script example

이 트리거 및 바인딩을 사용하는 C# 스크립트 코드는 다음과 같습니다.Here's C# script code that works with this trigger and binding. 큐 메시지 콘텐츠를 제공하는 매개 변수 이름은 order이며 function.jsonname 속성 값은 order이므로 이 이름이 필요합니다.Notice that the name of the parameter that provides the queue message content is order; this name is required because the name property value in function.json is order

#r "Newtonsoft.Json"

using Microsoft.Extensions.Logging;
using Newtonsoft.Json.Linq;

// From an incoming queue message that is a JSON object, add fields and write to Table storage
// The method return value creates a new row in Table Storage
public static Person Run(JObject order, ILogger log)
{
    return new Person() { 
            PartitionKey = "Orders", 
            RowKey = Guid.NewGuid().ToString(),  
            Name = order["Name"].ToString(),
            MobileNumber = order["MobileNumber"].ToString() };  
}
 
public class Person
{
    public string PartitionKey { get; set; }
    public string RowKey { get; set; }
    public string Name { get; set; }
    public string MobileNumber { get; set; }
}

JavaScript 예제JavaScript example

동일한 함수인 json 파일은 JavaScript 함수와 함께 사용할 수 있습니다.The same function.json file can be used with a JavaScript function:

// From an incoming queue message that is a JSON object, add fields and write to Table Storage
// The second parameter to context.done is used as the value for the new row
module.exports = function (context, order) {
    order.PartitionKey = "Orders";
    order.RowKey = generateRandomId(); 

    context.done(null, order);
};

function generateRandomId() {
    return Math.random().toString(36).substring(2, 15) +
        Math.random().toString(36).substring(2, 15);
}

클래스 라이브러리 예제Class library example

클래스 라이브러리에서 동일한 트리거 및 바인딩 정보(큐 및 테이블 이름, 스토리지 계정, 입력 및 출력에 대한 함수 매개 변수)는 function.json 파일 대신 특성에 의해 제공됩니다.In a class library, the same trigger and binding information — queue and table names, storage accounts, function parameters for input and output — is provided by attributes instead of a function.json file. 예를 들면 다음과 같습니다.Here's an example:

public static class QueueTriggerTableOutput
{
    [FunctionName("QueueTriggerTableOutput")]
    [return: Table("outTable", Connection = "MY_TABLE_STORAGE_ACCT_APP_SETTING")]
    public static Person Run(
        [QueueTrigger("myqueue-items", Connection = "MY_STORAGE_ACCT_APP_SETTING")]JObject order,
        ILogger log)
    {
        return new Person() {
                PartitionKey = "Orders",
                RowKey = Guid.NewGuid().ToString(),
                Name = order["Name"].ToString(),
                MobileNumber = order["MobileNumber"].ToString() };
    }
}

public class Person
{
    public string PartitionKey { get; set; }
    public string RowKey { get; set; }
    public string Name { get; set; }
    public string MobileNumber { get; set; }
}

이제 Azure 큐에서 트리거되고 Azure Table storage에 데이터를 출력 하는 작동 하는 함수가 있습니다.You now have a working function that is triggered by an Azure Queue and outputs data to Azure Table storage.

다음 단계Next steps