Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
V tomto článku se dozvíte, jak vytvořit chatovací aplikaci pomocí web pubSub pro Socket.IO v bezserverovém režimu pomocí Azure Functions. Tento kurz vás provede zabezpečením aplikace s ověřováním na základě identit při práci online.
Zdroj projektu používá Bicep k nasazení infrastruktury v Azure a Azure Functions Core Tools k nasazení kódu do aplikace funkcí.
Požadavky
Účet Azure s aktivním předplatným. Vytvoření účtu zdarma
Získání ukázkového kódu
Vyhledání ukázkového kódu: Socket.IO bezserverové ukázky (TS)
git clone https://github.com/Azure/azure-webpubsub.git
cd ./sdk/webpubsub-socketio-extension/examples/chat-serverless-typescript
Nasazení infrastruktury
Ukázky chatu musí nasadit několik služeb v Azure:
- Aplikace Funkcí Azure
- Web PubSub pro Socket.IO
- Spravovaná identita: Identita pro komunikaci mezi službami
K nasazení infrastruktury používáme Bicep . Soubor se nachází ve ./infra složce. Nasaďte ho pomocí příkazu az:
az deployment sub create -n "<deployment-name>" -l "<deployment-location>" --template-file ./infra/main.bicep --parameters environmentName="<env-name>" location="<location>"
-
<deployment-name>: Název nasazení. -
<deployment-location>: Umístění metadat nasazení. Všimněte si, že se nejedná o umístění, do kterého se prostředky nasazují. -
<env-name>: Název je součástí názvu skupiny prostředků a názvu prostředku. -
<location>: Umístění prostředků.
Kontrola infrastruktury
Ve verzi infrastruktury nasadíme aplikaci Azure Function App v plánu consumption a účet monitorování a úložiště, který vyžaduje aplikace funkcí. Nasadíme také web pubSub pro Socket.IO prostředek v bezserverovém režimu.
Pro účely ověřování na základě identit nasadíme spravovanou identitu přiřazenou uživatelem, přiřadíme ji k aplikaci funkcí i k prostředku Socket.IO a udělíme jí určitá oprávnění:
- Role Vlastník dat objektů blob úložiště: Přístup k úložišti pro aplikaci funkcí
- Role Vydavatele metrik monitorování: Monitorování přístupu pro aplikaci funkcí
- Role vlastníka služby Web PubSub: Access Web PubSub pro Socket.IO pro aplikaci funkcí
Podle potřeby nakonfigurujeme aplikaci Azure Functions tak, aby používala přihlášení k Microsoft Entra, vytvoříme instanční objekt. Abychom se vyhnuli použití tajného kódu pro instanční objekt, používáme přihlašovací údaje federované identity.
Nasazení ukázky do aplikace funkcí
Připravili jsme skript Bash pro nasazení ukázkového kódu do aplikace funkcí:
# Deploy the project
./deploy/deploy.sh "<deployment-name>"
Kontrola podrobností o nasazení
K nasazení ukázkové aplikace je potřeba provést dva kroky.
Publikování kódu do aplikace funkcí (použití nástrojů Azure Functions Core Tools)
func extensions sync npm install npm run build func azure functionapp publish <function-app-name>Nakonfigurujte web pubSub pro Socket.IO a přidejte nastavení centra, které může odeslat požadavek do aplikace funkcí. Podle omezení zprostředkovatele Webhooku aplikace Function App potřebujete získat klíč rozšíření naplněný funkcí. Další podrobnosti najdete v vazbě triggeru. A když používáme ověřování založené na identitě, musíte v nastavení centra přiřadit cílový prostředek, což je ID klienta instančního objektu vytvořeného dříve.
code=$(az functionapp keys list -g <resource-group> -n <function-name> --query systemKeys.socketio_extension -o tsv) az webpubsub hub create -n <socketio-name> -g <resource-group> --hub-name "hub" --event-handler url-template="https://${<function-name>}.azurewebsites.net/runtime/webhooks/socketio?code=${code}" user-event-pattern="*" auth-type="ManagedIdentity" auth-resource="<service-principal-client-id>"
Spuštění ukázkové aplikace
Po nasazení kódu zkuste ukázku vyzkoušet na webu:
https://<function-endpoint>/api/index
Další kroky
Dále můžete postupovat podle kurzu a napsat aplikaci krok za krokem: