Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Naast de ingebouwde code-interpreter die dynamische sessies van Azure Container Apps bieden, kunt u ook aangepaste containers gebruiken om uw eigen sessie-sandboxes te definiëren.
Wordt gebruikt voor aangepaste containersessies
Met aangepaste containers kunt u oplossingen bouwen die zijn afgestemd op uw behoeften. Hiermee kunt u code uitvoeren of toepassingen uitvoeren in omgevingen die snel en kortstondig zijn en veilige, sandbox-ruimten bieden met Hyper-V. Daarnaast kunnen ze worden geconfigureerd met optionele netwerkisolatie. Enkele voorbeelden:
Code-interpreters: wanneer u niet-vertrouwde code moet uitvoeren in beveiligde sandboxes door een taal die niet wordt ondersteund in de ingebouwde interpreter, of als u volledige controle over de code-interpreteromgeving nodig hebt.
Geïsoleerde uitvoering: Wanneer u toepassingen moet uitvoeren in vijandige scenario's met meerdere tenants waarbij elke tenant of gebruiker een eigen sandbox-omgeving heeft. Deze omgevingen zijn geïsoleerd van elkaar en van de hosttoepassing. Enkele voorbeelden hiervan zijn toepassingen die door de gebruiker geleverde code uitvoeren, code die eindgebruikers toegang verleent tot een cloudshell, AI-agents en ontwikkelomgevingen.
Aangepaste containersessies gebruiken
Als u aangepaste containersessies wilt gebruiken, maakt u eerst een sessiepool met een aangepaste containerimage. Azure Container Apps automatically starts containers in their own Hyper-V sandboxes using the provided image. Zodra de container is gestart, is deze beschikbaar voor de sessiegroep.
Wanneer uw toepassing een sessie aanvraagt, wordt een exemplaar direct toegewezen vanuit de pool. De sessie blijft actief totdat deze een niet-actieve status invoert, die vervolgens automatisch wordt gestopt en vernietigd.
Een aangepaste containersessiegroep maken
Als u een aangepaste containergroepsessie wilt maken, moet u een containerafbeelding en poolconfiguratie-instellingen opgeven.
U roept elke sessie aan of communiceert met behulp van HTTP-aanvragen. De aangepaste container moet een HTTP-server beschikbaar maken op een poort die u opgeeft om op deze aanvragen te reageren.
Als u een aangepaste containersessiegroep wilt maken met behulp van de Azure CLI, moet u ervoor zorgen dat u de nieuwste versies van de Azure CLI en de Azure Container Apps-extensie hebt met de volgende opdrachten:
az upgrade
az extension add --name containerapp --upgrade --allow-preview true -y
Voor aangepaste containersessiegroepen is een Azure Container Apps-omgeving met een workloadprofiel vereist. Als u geen omgeving hebt, gebruikt u de az containerapp env create -n <ENVIRONMENT_NAME> -g <RESOURCE_GROUP> --location <LOCATION> --enable-workload-profiles opdracht om er een te maken.
Gebruik de az containerapp sessionpool create opdracht om een aangepaste containersessiegroep te maken.
In het volgende voorbeeld wordt een sessiepool met de naam my-session-pool gemaakt met een aangepaste containerafbeelding myregistry.azurecr.io/my-container-image:1.0.
Voordat u de aanvraag verzendt, vervangt u de tijdelijke aanduidingen tussen de <> haken door de juiste waarden voor uw sessiegroep en sessie-id.
az containerapp sessionpool create \
--name my-session-pool \
--resource-group <RESOURCE_GROUP> \
--environment <ENVIRONMENT> \
--registry-server myregistry.azurecr.io \
--registry-username <USER_NAME> \
--registry-password <PASSWORD> \
--container-type CustomContainer \
--image myregistry.azurecr.io/my-container-image:1.0 \
--cpu 0.25 --memory 0.5Gi \
--target-port 80 \
--cooldown-period 300 \
--network-status EgressDisabled \
--max-sessions 10 \
--ready-sessions 5 \
--env-vars "key1=value1" "key2=value2" \
--location <LOCATION>
Met deze opdracht maakt u een sessiegroep met de volgende instellingen:
| Parameter | Waarde | Beschrijving |
|---|---|---|
--name |
my-session-pool |
De naam van de sessiegroep. |
--resource-group |
my-resource-group |
The resource group that contains the session pool. |
--environment |
my-environment |
De naam of resource-ID van de omgeving van de containerapp. |
--container-type |
CustomContainer |
The container type of the session pool. Must be CustomContainer for custom container sessions. |
--image |
myregistry.azurecr.io/my-container-image:1.0 |
The container image to use for the session pool. |
--registry-server |
myregistry.azurecr.io |
De hostnaam van de containerregisterserver. |
--registry-username |
my-username |
De gebruikersnaam om u aan te melden bij het containerregister. |
--registry-password |
my-password |
Het wachtwoord om u aan te melden bij het containerregister. |
--cpu |
0.25 |
The required CPU in cores. |
--memory |
0.5Gi |
Het vereiste geheugen. |
--target-port |
80 |
The session port used for ingress traffic. |
--cooldown-period |
300 |
Het aantal seconden dat een sessie inactief kan zijn voordat de sessie wordt beëindigd. De niet-actieve periode wordt opnieuw ingesteld telkens wanneer de API van de sessie wordt aangeroepen. De waarde moet tussen 300 en 3600. |
--network-status |
EgressDisabled |
Hiermee wordt aangegeven of uitgaand netwerkverkeer vanaf de sessie is toegestaan. Geldige waarden zijn EgressDisabled (standaard) en EgressEnabled. |
--max-sessions |
10 |
Het maximum aantal sessies dat tegelijkertijd kan worden toegewezen. |
--ready-sessions |
5 |
Het doelaantal sessies dat altijd gereed is in de sessiepool. Verhoog dit aantal als sessies sneller worden toegewezen dan de pool wordt aangevuld. |
--env-vars |
"key1=value1" "key2=value2" |
De omgevingsvariabelen die moeten worden ingesteld in de container. |
--location |
"Supported Location" |
De locatie van de sessiepool. |
Gebruik de az containerapp sessionpool show opdracht om de status van de sessiegroep te controleren:
az containerapp sessionpool show \
--name <SESSION_POOL_NAME> \
--resource-group <RESOURCE_GROUP> \
--query "properties.poolManagementEndpoint" \
--output tsv
Gebruik de az containerapp sessionpool update opdracht om de sessiegroep bij te werken.
Belangrijk
Als de sessie wordt gebruikt om niet-vertrouwde code uit te voeren, neemt u geen informatie of gegevens op die u niet wilt dat de niet-vertrouwde code toegang heeft. Stel dat de code schadelijk is en volledige toegang heeft tot de container, inclusief de omgevingsvariabelen, geheimen en bestanden.
Afbeeldingscache
Wanneer een sessiepool wordt gemaakt of bijgewerkt, cachet Azure Container Apps de containerimage in de pool. Deze caching helpt het proces van het maken van nieuwe sessies te versnellen.
Wijzigingen van de afbeelding worden niet automatisch gereflecteerd in de sessies. Om de afbeelding bij te werken, werkt u de sessiegroep bij met een nieuw afbeeldingenlabel. Gebruik een unieke tag voor elke update van de afbeelding om ervoor te zorgen dat de nieuwe afbeelding wordt opgehaald.
Working with sessions
Uw toepassing communiceert met een sessie met behulp van de beheer-API van de sessiegroep.
Een beheereindpunt voor pools voor aangepaste containersessies volgt deze indeling: https://<SESSION_POOL>.<ENVIRONMENT_ID>.<REGION>.azurecontainerapps.io.
Gebruik de az containerapp sessionpool show opdracht om het beheereindpunt van de sessiegroep op te halen:
az containerapp sessionpool show \
--name <SESSION_POOL_NAME> \
--resource-group <RESOURCE_GROUP> \
--query "properties.poolManagementEndpoint" \
--output tsv
Alle aanvragen voor het eindpunt voor poolbeheer moeten een Authorization header met een Bearer-token bevatten. Zie Verificatie voor meer informatie over verificatie met de poolbeheer-API.
Elke API-aanvraag moet ook de queryreeksparameter identifier met de sessie-id bevatten. Met deze unieke sessie-id kan uw toepassing communiceren met specifieke sessies. Zie Sessie-id's voor meer informatie over sessie-id's.
Belangrijk
De sessie-id is gevoelige informatie waarvoor een veilig proces vereist is bij het aanmaken en beheren van de waarde. Om deze waarde te beveiligen, moet uw toepassing ervoor zorgen dat elke gebruiker of tenant alleen toegang heeft tot hun eigen sessies. Als u de toegang tot sessies niet kunt beveiligen, kan dit leiden tot misbruik of onbevoegde toegang tot gegevens die zijn opgeslagen in de sessies van uw gebruikers. Zie Sessie-id's voor meer informatie
Aanvragen doorsturen naar de container van de sessie:
Anything in the path following the base pool management endpoint is forwarded to the session's container.
Als u bijvoorbeeld een aanroep doet <POOL_MANAGEMENT_ENDPOINT>/api/uploadfile, wordt de aanvraag doorgestuurd naar de container van de sessie op 0.0.0.0:<TARGET_PORT>/api/uploadfile.
Continuous session interaction:
U kunt aanvragen blijven indienen bij dezelfde sessie. Als er geen aanvragen voor de sessie langer zijn dan de afkoelperiode, wordt de sessie automatisch verwijderd.
Voorbeeldaanvraag
In het volgende voorbeeld ziet u een aanvraag voor een aangepaste containersessie met een gebruikers-id.
Voordat u de aanvraag verzendt, vervangt u de tijdelijke aanduidingen tussen de <> vierkante haken door waarden die specifiek zijn voor uw aanvraag.
POST https://<SESSION_POOL_NAME>.<ENVIRONMENT_ID>.<REGION>.azurecontainerapps.io/<API_PATH_EXPOSED_BY_CONTAINER>?identifier=<USER_ID>
Authorization: Bearer <TOKEN>
{
"command": "echo 'Hello, world!'"
}
Deze aanvraag wordt doorgestuurd naar de aangepaste containersessie met de identificatie van de gebruiker. Als de sessie nog niet wordt uitgevoerd, wijst Azure Container Apps een sessie toe vanuit de pool voordat de aanvraag wordt doorgestuurd.
In het voorbeeld ontvangt de container van de sessie de aanvraag op http://0.0.0.0:<INGRESS_PORT>/<API_PATH_EXPOSED_BY_CONTAINER>.
Beheerde identiteit gebruiken
Met een beheerde identiteit van Microsoft Entra ID kunnen uw aangepaste containersessiegroepen en hun sessies toegang krijgen tot andere met Microsoft Entra beveiligde resources. Zie Beheerde identiteiten voor Azure-resources voor meer informatie over beheerde identiteiten in Microsoft Entra ID.
U kunt beheerde identiteiten inschakelen voor uw aangepaste containersessiegroepen. Zowel door het systeem toegewezen als door de gebruiker toegewezen beheerde identiteiten worden ondersteund.
Er zijn twee manieren om beheerde identiteiten te gebruiken met aangepaste containersessiegroepen:
Authenticatie voor het ophalen van afbeeldingen: gebruik de beheerde identiteit om te authenticeren bij het containerregister om de containerafbeelding op te halen.
Toegang tot resources: gebruik de beheerde identiteit van de sessiegroep in een sessie voor toegang tot andere met Microsoft Entra beveiligde resources. Vanwege de gevolgen voor de beveiliging is deze functie standaard uitgeschakeld.
Belangrijk
Als u toegang tot beheerde identiteit in een sessie inschakelt, kunnen code of programma's die in de sessie worden uitgevoerd Entra-tokens maken voor de beheerde identiteit van de pool. Aangezien sessies doorgaans niet-vertrouwde code uitvoeren, gebruikt u deze functie met voorzichtigheid.
Als u beheerde identiteit wilt inschakelen voor een aangepaste containersessiegroep, gebruikt u Azure Resource Manager.
Logging
Consolelogboeken van aangepaste containersessies zijn beschikbaar in de Azure Log Analytics-werkruimte die is gekoppeld aan de Azure Container Apps-omgeving in een tabel met de naam AppEnvSessionConsoleLogs_CL.
Billing
Aangepaste containersessies worden gefactureerd op basis van de resources die door de sessiegroep worden gebruikt. Zie Azure Container Apps-facturering voor meer informatie.