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

완료됨

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

  • 들어오는 데이터를 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에서 데이터를 읽습니다.

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