이 예제 시나리오에서 주 애플리케이션은 액세스 키로 보호되는 타사 API를 사용합니다. 이 섹션에서는 Azure Functions를 사용하는 API를 보여 주지만, 다른 클라우드 공급자 또는 기존 웹 서버에서 애플리케이션을 호스트하든 API가 구현되는 방법이나 위치에 관계없이 동일한 원칙이 적용됩니다.
중요한 측면은 보호된 엔드포인트에 대한 모든 클라이언트 요청에 앱이 안전하게 관리해야 하는 액세스 키를 포함해야 한다는 것입니다. 이 섹션에서는 Azure Functions를 사용하여 이러한 API를 구현하는 방법에 대한 개요를 제공하지만 특정 요구 사항에 맞게 원칙을 조정할 수 있습니다.
타사 API 구현 예제
타사 API 예제는 1에서 999 사이의 난수를 반환하는 간단한 엔드포인트입니다. API는 액세스 키로 보호되며, 엔드포인트에 액세스하려면 요청에 제공해야 합니다. 데모를 위해 이 API는 엔드포인트 https://msdocs-example-api.azurewebsites.net/api/RandomNumber에 배포됩니다. 그러나 API를 호출하려면 액세스 키를 URL 매개 변수에 d0c5atM1cr0s0ft 또는 HTTP 헤더의 ?code= 속성에 'x-functions-key'으로 제공해야 합니다. 예를 들어 앱 및 API를 배포한 후 브라우저 또는 curl https://msdocs-example-api.azurewebsites.net/api/RandomNumber?code=d0c5atM1cr0s0ft에서 이 URL을 시도합니다.
액세스 키가 유효한 경우 엔드포인트는 단일 속성 "value"를 포함하는 JSON 응답을 반환합니다. 이 값은 1에서 999 사이의 숫자입니다 {"value": 959}.
엔드포인트는 Python에서 구현되고 Azure Functions에 배포됩니다. 코드는 다음과 같습니다.
import logging
import random
import json
import azure.functions as func
def main(req: func.HttpRequest) -> func.HttpResponse:
logging.info('RandomNumber invoked via HTTP trigger.')
random_value = random.randint(1, 1000)
dict = { "value" : random_value }
return func.HttpResponse(json.dumps(dict))
샘플 리포지토리에서 이 코드는 third_party_api/RandomNumber/__init__.py 아래에 있습니다. RandomNumber 폴더는 함수의 이름을 제공하고 __init__.py 코드를 포함합니다. 폴더의 다른 파일인 function.json함수가 트리거되는 시기를 설명합니다. third_party_api 부모 폴더의 다른 파일은 함수 자체를 호스팅하는 Azure Function 앱에 대한 세부 정보를 제공합니다.
코드를 배포하기 위해 샘플의 프로비전 스크립트는 다음 단계를 수행합니다.
상태 및 내부 작업을 관리하기 위해 Azure CLI 명령을
az storage account create사용하여 Azure Functions에 대한 백업 스토리지 계정을 만듭니다.Azure CLI 명령을
az function app create사용하여 Azure Functions 앱을 만듭니다.호스트가 완전히 프로비전될 때까지 60초를 기다린 후 Azure Functions Core Tools 명령을
func azure functionapp publish사용하여 코드를 배포합니다.함수에 액세스 키를
d0c5atM1cr0s0ft할당합니다. (함수 키에 대한 정보를 확인하려면 Azure Functions 보안을 참조하세요.)프로비저닝 스크립트에서 이 단계는 az functionapp 함수 키 집합 Azure CLI 명령을 사용하여 수행됩니다.
원하는 경우 Functions 키 관리 API 에 대한 REST API 호출을 통해 이 단계를 수행하는 방법을 보여 줄 주석이 포함되어 있습니다. 해당 REST API를 호출하려면 먼저 함수 앱의 마스터 키를 검색하기 위해 다른 REST API 호출을 수행해야 합니다.
Azure Portal을 통해 액세스 키를 할당할 수도 있습니다. Functions 앱 페이지에서 Functions를 선택한 다음 보호할 특정 함수를 선택합니다(이 예제에서는 명명 RandomNumber 됨). 함수 페이지에서 함수 키를 선택하여 이러한 키를 만들고 관리할 수 있는 페이지를 엽니다.