Azure Functions를 사용하여 Azure Static Web Apps에서 API 지원

프런트 엔드 웹 애플리케이션은 종종 데이터 및 서비스에 대한 백 엔드 API를 호출합니다. Azure Static Web Apps는 Azure Functions를 통해 서버리스 API 엔드포인트를 제공합니다.

Static Web Apps Azure Functions API는 호스팅 계획에 따라 두 가지 가능한 구성에서 지원됩니다.

  • 관리형 함수: 기본적으로 정적 웹앱의 API는 몇 가지 제한과 관련된 Azure Static Web Apps에서 관리 및 배포하는 Azure Functions 애플리케이션입니다.

  • 사용자 고유의 함수 가져오기: 필요에 따라 Azure Functions의 모든 기능이 함께 제공되는 모든 계획 유형의 기존 Azure Functions 애플리케이션을 제공할 수 있습니다. 이 구성을 사용하는 경우 Functions 앱에 대한 별도의 배포를 처리해야 합니다.

다음 표에서는 관리형 함수와 기존 함수를 사용하는 경우의 차이점을 대조합니다.

기능 관리형 함수 자체 Functions 가져오기
Azure Functions 트리거 및 바인딩에 액세스 HTTP만 모두
지원되는 Azure Functions 런타임1 Node.js 12
Node.js 14
Node.js 16
Node.js 18(공개 미리 보기)
.NET Core 3.1
.NET 6.0
.NET 7.0
Python 3.8
Python 3.9
Python 3.10
모두
지원되는 Azure Functions 호스팅 계획 소비 소비
Premium
전용
사용자 인증 및 역할 기반 권한 부여 데이터에 직접 액세스할 수 있는 통합 보안
사용자 지정 CORS 규칙 없이 웹앱에서 /api 경로를 안전하게 사용할 수 있도록 하는 라우팅 통합.
백 엔드 컴퓨팅의 동적 전역 배포를 위한 분산 함수(미리 보기) 입니다.
Durable Functions 프로그래밍 모델
관리 ID
Azure App Service 인증 및 권한 토큰 관리
Azure Static Web Apps 외부에서 사용할 수 있는 API 함수
Key Vault 참조

1 관리되는 함수에서 런타임 버전을 지정하려면 프런트 엔드 앱에 구성 파일을 추가하고 apiRuntime속성을 설정합니다. 지원은 Azure Functions 언어 런타임 지원 정책의 적용을 받습니다.

Static Web Apps 대한 API 옵션에는 다음 Azure 서비스가 포함됩니다.

자세한 내용은 API 개요를 참조하세요.

참고 항목

분산 함수는 관리되는 함수에서 사용할 수 있습니다. 분산 함수는 관리되는 함수를 요청 부하가 높은 지역에 자동으로 배포합니다.

구성

API 엔드포인트는 api 경로를 통해 웹앱에서 사용할 수 있습니다.

관리형 함수 사용자 고유 함수 가져오기
/api 경로가 고정되어 있는 동안 관리형 함수 앱의 폴더 위치를 제어할 수 있습니다. 리포지토리의 .github/workflows에 있는 워크플로 YAML 파일을 편집하여 이 위치를 변경할 수 있습니다. /api 경로에 대한 요청은 기존 Azure Functions 앱으로 전송됩니다.

문제 해결 및 로그

로그는 Application Insights를 추가하는 경우에만 사용할 수 있습니다.

관리형 함수 사용자 고유 함수 가져오기
정적 웹앱에서 Application Insights를 활성화하여 로깅을 설정합니다. Azure Functions 앱에서 Application Insights를 활성화하여 로깅을 설정합니다.

제약 조건

Static Web Apps API 제약 조건 외에도 Azure Functions API에도 다음 제한 사항이 적용됩니다.

관리형 함수 사용자 고유 함수 가져오기
  • 트리거와 바인딩은 HTTP로 제한됩니다.
  • Azure Functions 앱은 Node.js 12, Node.js 14, Node.js 16, Node.js 18(공개 미리 보기), .NET Core 3.1, .NET 6.0, Python 3.8, Python 3.9 또는 Python 3.10에 있어야 합니다.
  • 일부 애플리케이션 설정은 서비스에서 관리되므로 다음 접두사는 런타임에 예약됩니다.
    • APPSETTING_, AZUREBLOBSTORAGE_, AZUREFILESSTORAGE_, AZURE_FUNCTION_, CONTAINER_, DIAGNOSTICS_, DOCKER_, FUNCTIONS_, IDENTITY_, MACHINEKEY_, MAINSITE_, MSDEPLOY_, SCMSITE_, SCM_, WEBSITES_, WEBSITE_, WEBSOCKET_, AzureWeb
  • 일부 애플리케이션 태그는 서비스에서 내부적으로 사용됩니다. 따라서 다음 태그는 예약되어 있습니다.
    • AccountId, EnvironmentId, FunctionAppId.
  • Functions 앱 배포를 관리해야 합니다.

다음 단계