Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
interfejs wiersza polecenia dewelopera Azure (azd) obsługuje wdrożenia kodu i kontenerów do Azure Functions. Użyj dedykowanego function hosta w azure.yaml dla obu trybów:
- Wdrożenie kodu pakuje skompilowany kod funkcji jako archiwum zip i przekazuje go do Function App.
- Wdrożenie kontenera kompiluje lub określa obraz kontenera, publikuje go w usłudze Azure Container Registry (ACR) w razie potrzeby i aktualizuje aplikację funkcji w celu uruchomienia obrazu.
Zarówno Azure Functions, jak i Azure App Service korzystają z dostawcy zasobów Microsoft.Web/sites, a ich przepływy wdrażania kontenerów mają częściowo wspólne mechanizmy wewnętrzne. Nie są jednak tym samym azd hostem. Usługa Functions używa host: function, ma działanie tworzenia pakietów specyficznych dla Functions i zdalnego kompilowania oraz nie korzysta z przepływu pracy szczelin wdrożenia usługi App Service.
Wybierz tryb wdrażania
azd wybiera tryb wdrażania z konfiguracji usługi:
| Konfiguracja | Tryb wdrożenia |
|---|---|
Źródło project z obsługiwanym rozwiązaniem niebędącym rozwiązaniem Docker language i bez docker.path |
Wdrażanie kodu |
language: docker |
Wdrażanie kontenera |
docker.path Wartość z języka źródłowego |
Wdrażanie kontenera |
Wstępnie skompilowany image |
Wdrażanie kontenera |
Aprowizowana Function App musi używać tego samego trybu co konfiguracja usługi. Jeśli aplikacja funkcji jest skonfigurowana dla kontenerów, ale azure.yaml wybiera wdrożenie kodu lub odwrotnie, azd deploy zatrzymuje się przed przekazaniem i zgłasza niezgodność.
Wdróż kod funkcji
Skonfiguruj usługę funkcji opartą na kodzie przy użyciu projektu źródłowego, obsługiwanego języka i host: function:
services:
api:
project: ./src/api
language: ts
host: function
Podczas azd, azd deploy kompiluje projekt, stosuje wykluczenia .funcignore, tworzy archiwum zip i przekazuje pakiet za pośrednictwem interfejsu API wdrażania Azure Functions.
Bicep lub Terraform musi aprowizować aplikację funkcji opartą na kodzie i oznaczyć ją tagiem azd-service-name ustawionym na nazwę usługi, chyba że zidentyfikujesz zasób przy użyciu polecenia resourceName w azure.yaml. Skonfiguruj plan hostingu, środowisko uruchomieniowe, magazyn, tożsamości, sieć i ustawienia aplikacji za pomocą infrastruktury jako kodu.
Konfigurowanie kompilacji zdalnych dla wdrożeń kodu
Właściwość usługi remoteBuild najwyższego poziomu ma zastosowanie tylko do aplikacji Function App opartych na kodzie w planie Flex Consumption. Określa, czy Azure Functions używa Oryx do skompilowania przekazanego pakietu:
services:
api:
project: ./src/api
language: python
host: function
remoteBuild: true
W przypadku pominięcia remoteBuild opcji Flex Consumption azd wybiera wartość domyślną na podstawie języka i zawartości pakietu:
| Język | Działanie domyślne |
|---|---|
| JavaScript lub TypeScript | Używa kompilacji zdalnej, gdy .funcignore wyklucza node_modules, lub gdy nie istnieje plik .funcignore. W przeciwnym razie użyje lokalnie skompilowanego pakietu. |
| Python | Używa kompilacji zdalnej. |
| Go | Kompiluje się lokalnie. Aplikacje funkcji języka Go nie obsługują kompilacji zdalnej. |
| Inne obsługiwane języki | Używa lokalnie skompilowanego pakietu. |
W przypadku języków JavaScript i TypeScript jawnie skonfigurowana wartość remoteBuild musi być zgodna z .funcignore, jeśli ten plik istnieje. Ustaw wartość remoteBuild: true, gdy .funcignore wyklucza node_modules. Ustaw wartość remoteBuild: false, gdy .funcignore zawiera node_modules w pakiecie.
Nie ustawiaj właściwości najwyższego poziomu remoteBuild dla planów innych niż Flex. Aby włączyć kompilację Oryx na innym obsługiwanym planie, skonfiguruj ENABLE_ORYX_BUILD=true i SCM_DO_BUILD_DURING_DEPLOYMENT=true jako ustawienia aplikacji funkcji w infrastrukturze.
Wdróż funkcję konteneryzowaną
W przypadku projektu źródłowego z plikiem Dockerfile ustaw language: dockerlub zachowaj język źródłowy i określ wartość docker.path.
W poniższym przykładzie użyto projektu TypeScript z plikiem Dockerfile:
services:
api:
project: ./src/api
language: ts
host: function
docker:
path: ./Dockerfile
Możesz również wdrożyć wstępnie utworzony obraz bez projektu lokalnego:
services:
api:
host: function
image: myregistry.azurecr.io/functions/api:1.0
W przypadku wstępnie utworzonego obrazu pomiń language lub ustaw go na docker. Nie łącz image z project.
Podczas wdrażania kontenera: azd
- Buduje obraz lokalnie lub zdalnie albo określa skonfigurowany gotowy obraz.
- Publikuje obraz w instancji usługi ACR skonfigurowanej dla projektu, gdy publikowanie jest wymagane.
- Aktualizuje element
linuxFxVersionaplikacji funkcji naDOCKER|<image>. - Wdraża do głównej witryny aplikacji Function App.
Właściwość najwyższego poziomu usługi remoteBuild nie ma zastosowania do kontenerów. Aby utworzyć obraz kontenera za pomocą usługi ACR Tasks, użyj polecenia docker.remoteBuild:
services:
api:
project: ./src/api
language: docker
host: function
docker:
path: ./Dockerfile
remoteBuild: true
Utwórz Function App gotową do obsługi kontenerów
azd deploy Aktualizuje odwołanie do obrazu, ale nie konwertuje aplikacji Function App opartej na kodzie na aplikację Function App opartą na kontenerze. Infrastruktura musi przygotować zgodną witrynę przed wdrożeniem.
| Requirement | Details |
|---|---|
| Aplikacja Function App w systemie Linux | Aprowizuj aplikację funkcji w systemie Linux w planie Azure Functions Premium lub Dedicated (App Service). Funkcja Flex Consumption nie obsługuje kontenerów niestandardowych. Ten host: function przepływ pracy jest przeznaczony dla Microsoft.Web/sites, a nie Azure Functions hostowanych w Azure Container Apps. |
| Konfiguracja witryny kontenera | Ustaw rodzaj witryny tak, aby obejmował functionapp, linux i container. Zainicjuj linuxFxVersion wartością DOCKER\|<image> . Obraz zastępczy jest wystarczający, ponieważ azd deploy go zastępuje. |
| Rejestr kontenerów | W przypadku kompilacji źródłowych aprowizuj wystąpienie usługi ACR i udostępnij serwer logowania za pośrednictwem danych wyjściowych infrastruktury AZURE_CONTAINER_REGISTRY_ENDPOINT, lub skonfiguruj docker.registry dla usługi. W pełni kwalifikowany identyfikator wstępnie zbudowanego image może być używany bezpośrednio bez oddzielnego rejestru publikacji. |
| Dostęp do rejestru | Przyznaj tożsamości publikującej obraz uprawnienie do wypychania obrazu do rejestru docelowego, gdy publikowanie jest wymagane. Oddzielnie skonfiguruj Function App, aby pobrać wdrożony obraz. W przypadku prywatnych obrazów usługi ACR przyznaj tożsamości zarządzanej aplikacji funkcji dostęp do ściągania i skonfiguruj witrynę do korzystania z poświadczeń tożsamości zarządzanej. W przypadku innego rejestru prywatnego skonfiguruj odpowiednie poświadczenia ściągania w infrastrukturze. |
| Ustawienia funkcji | Skonfiguruj wymagane ustawienia, takie jak FUNCTIONS_EXTENSION_VERSION, FUNCTIONS_WORKER_RUNTIMEi AzureWebJobsStorage za pomocą Bicep lub narzędzia Terraform. |
| Odnajdywanie zasobów | Zastosuj tag azd-service-name, którego wartość jest zgodna z nazwą usługi w azure.yaml, lub ustaw resourceName jawnie. |
Ustawienia na poziomie env usługi nie są obsługiwane dla function hosta. Zamiast tego zdefiniuj ustawienia aplikacji Function App w infrastrukturze.
Poznaj sloty wdrożenia
azd zawsze wdraża usługę function w głównej witrynie aplikacji funkcji. Nie odnajduje, nie monituje ani nie wdraża do slotów aplikacji funkcji. Ustawienia gniazda wdrożenia usługi App Service, takie jak AZD_DEPLOY_{SERVICE}_SLOT_NAME, nie mają wpływu na wdrożenie aplikacji funkcji Function App.
Jeśli potrzebujesz procesu wydania usługi Functions opartego na slocie wdrożenia, zarządzaj slotem i wdrożeniem poza wbudowanym przepływem pracy host: function.
Porównanie hostów Azure Functions i App Service
Funkcje i usługa App Service współdzielą Microsoft.Web/sites typ zasobu, ale wybierz hosta, który odpowiada obciążeniu:
| Behavior |
function host |
appservice host |
|---|---|---|
| Obciążenie | Azure Functions sterowane zdarzeniami | Aplikacje internetowe i interfejsy API |
| Wdrażanie kodu | Używa przepływu wdrażania zip Azure Functions | Używa przepływu wdrażania usługi App Service |
| Wdrażanie kontenera | Aktualizuje obraz Function App po zweryfikowaniu, czy lokacja jest oparta na kontenerze | Aktualizuje obraz aplikacji internetowej po zweryfikowaniu, czy witryna jest gotowa do użycia w kontenerze |
| Zdalna kompilacja kodu | Obsługuje opcję na poziomie usługi remoteBuild dla aplikacji funkcji Azure Flex Consumption |
Nie używa opcji „Functions” remoteBuild |
| Miejsca wdrożenia | Zawsze wdraża w głównej witrynie |
azd Obsługuje przepływ pracy gniazda wdrożeniowego usługi App Service |
Poziom usługi env |
Nie jest obsługiwane; użyj ustawień aplikacji Function App w infrastrukturze | Konfigurowanie ustawień aplikacji w infrastrukturze |