입력 및 출력 바인딩 형식 검색

완료됨

데이터 액세스 및 처리는 많은 소프트웨어 솔루션의 핵심 작업입니다. 다음과 같은 몇 가지 시나리오를 고려합니다.

  • Azure Blob Storage에서 Azure Cosmos DB로 들어오는 데이터를 이동하는 방법을 구현하라는 메시지가 표시됩니다.
  • 엔터프라이즈의 다른 구성 요소에서 처리하기 위해 들어오는 메시지를 큐에 게시하고자 합니다.
  • 서비스에서는 큐의 게이머 점수를 포착하고 온라인 스코어보드를 업데이트해야 합니다.

이 예는 모두 데이터 이동과 관련이 있습니다. 데이터 원본 및 대상은 시나리오마다 다르지만 패턴은 유사합니다. 데이터 원본에 연결하고 데이터를 읽고 씁니다. Azure Functions은 바인딩을 사용하여 데이터와 서비스를 통합할 수 있게 도와줍니다.

바인딩이란?

Azure Functions에서 바인딩은 코드 내에서 데이터에 연결하기 위한 선언적 방식을 제공합니다. 이렇게 하면 쉽게 함수에서 데이터 스트림을 일관되게 통합할 수 있습니다. 다른 데이터 요소에 대한 액세스를 제공하는 여러 바인딩이 있을 수 있습니다. 이 통합은 특정한 연결 논리(예: 데이터베이스 연결 또는 웹 API 인터페이스)를 코딩하지 않고도 데이터 원본에 연결할 수 있기에 강력합니다.

바인딩 형식

함수와 함께 사용할 수 있는 두 형식의 바인딩이 있습니다.

  • 입력 바인딩 - 데이터 원본에 연결합니다. 해당 함수는 이러한 입력 원본에서 데이터를 읽을 수 있습니다.

  • 출력 바인딩 - 데이터 대상에 연결합니다. 해당 함수는 이러한 출력 대상에 데이터를 작성할 수 있습니다.

함수를 실행하게 하는 특별한 형식의 입력 바인딩인 트리거도 있습니다. 예를 들어 Azure Event Grid 알림은 트리거로 구성될 수 있습니다. 이벤트가 발생하면 함수가 실행됩니다.

지원되는 바인딩 형식

바인딩 형식은 데이터를 읽거나 보내는 위치를 정의합니다. 웹 요청에 대응하는 바인딩 및 다양한 Azure 서비스 및 타사 서비스와 직접 상호 작용하는 여러 바인딩이 있습니다.

바인딩 형식은 입력, 출력 또는 둘 다로 사용될 수 있습니다. 예를 들어 함수는 Blob Storage 출력 바인딩에 쓸 수 있지만 Blob Storage 업데이트는 다른 함수를 트리거할 수 있습니다.

일반적인 바인딩 형식은 다음과 같습니다.

  • Blob Storage
  • Azure Service Bus 큐
  • Azure Cosmos DB
  • Azure Event Hubs
  • 외부 파일
  • 외부 테이블
  • HTTP 엔드포인트

이러한 형식은 샘플일 뿐입니다. 이외에도 플러스 함수에는 더 많은 바인딩을 추가하는 확장성 모델이 있습니다.

바인딩 속성

사용 중인 바인딩 및 스토리지 유형에 따라 더 많은 속성을 제공해야 할 수도 있지만 모든 바인딩에는 세 가지 속성이 필요합니다.

  • 이름 - 데이터에 액세스하는 데 사용하는 함수 매개 변수를 정의합니다. 예를 들어 큐 입력 바인딩에서 이 속성은 큐 메시지 콘텐츠를 수신하는 함수 매개 변수의 이름입니다.

  • 형식 - 바인딩 종류를 식별합니다. 예를 들어 상호 작용하려는 데이터 또는 서비스의 종류입니다.

  • 방향 - 데이터가 흐르는 방향을 나타냅니다. 예를 들어 입력 또는 출력 바인딩을 나타냅니다.

또한 대부분의 바인딩 형식은 네 번째 속성도 필요합니다.

  • 연결 - 연결 문자열을 포함하는 앱 설정 키의 이름을 제공합니다. 바인딩은 앱 설정에 저장된 연결 문자열을 사용하여 함수 코드의 비밀을 유지합니다. 연결 문자열은 코드를 더욱 구성하기 쉽고 안전하게 만듭니다.

바인딩 만들기

바인딩은 JSON에서 정의됩니다. 바인딩은 함수의 구성 파일에서 구성되며 이 파일은 function.json이라고 하며 함수 코드와 동일한 폴더에 위치합니다.

입력 바인딩 예제를 검토해 보겠습니다.

    ...
    {
      "name": "headshotBlob",
      "type": "blob",
      "path": "thumbnail-images/{filename}",
      "connection": "HeadshotStorageConnection",
      "direction": "in"
    },
    ...

이 바인딩을 만들려면 다음을 수행합니다.

  1. function.json 파일에서 바인딩을 만듭니다.

  2. name 변수의 값을 제공합니다. 이 예제에서는 변수가 Blob 데이터를 보유합니다.

  3. type 스토리지를 제공합니다. 앞의 예제에서는 Blob Storage를 사용합니다.

  4. 컨테이너 및 컨테이너에 포함되는 항목 이름을 지정하는 path를 제공합니다. path 속성은 Blob 트리거를 사용할 때 필요하며, 여기에 표시된 스타일로 경로의 파일 이름 부분 주위에 중괄호가 함께 제공되어야 합니다. 이 구문은 다른 바인딩 및 기능 코드에 Blob 이름을 참조할 수 있는 바인딩 식을 만듭니다. 이 예에서는 ‘filename’ 기능의 매개 변수가 해당 기능을 트리거한 blob의 파일 이름으로 채워집니다.

  5. 애플리케이션의 설정 파일에서 정의한 connection 문자열 설정 이름을 제공합니다. 이름은 스토리지 계정에 연결하기 위한 연결 문자열을 찾는 키로 사용됩니다.

  6. directionin으로 정의합니다. Blob에서 데이터를 읽습니다.

바인딩은 함수에서 데이터 연결에 사용됩니다. 이 예에서는 입력 바인딩을 사용하여 함수에서 썸네일로 처리할 사용자 이미지를 연결했습니다.