Szybki start: tworzenie i uruchamianie środowiska testowego Azure Container Apps przy użyciu zestawu SDK języka Python (wersja zapoznawcza)

W tym szybkim starcie używasz SDK Python do uruchomienia grupy sandbox, uruchomienia sandboxa, uruchomienia polecenia i oczyszczenia wszystkich utworzonych zasobów.

Ważna

Piaskownice usługi Azure Container Apps są obecnie dostępne w wersji zapoznawczej. Piaskownice utworzone w wersji zapoznawczej mogą nie być zgodne z przyszłymi wersjami i mogą wymagać ponownego utworzenia.

Wymagania wstępne

  • Subskrypcja Azure z uprawnieniami do tworzenia grup zasobów.
  • Azure CLI (az) zainstalowany i zalogowany.
  • uv z Python 3.13+.

Konfigurowanie środowiska

Zainstaluj zestaw SDK, zaloguj się do Azure i utwórz plik .env na potrzeby skryptów w tym przewodniku Szybki start.

uv venv
uv pip install azure-containerapps-sandbox azure-mgmt-resource azure-mgmt-authorization

# Sign in so DefaultAzureCredential picks up your identity
az login

cat > .env <<EOF
AZURE_SUBSCRIPTION_ID=$(az account show --query id -o tsv)
AZURE_RESOURCE_GROUP=my-rg
AZURE_SANDBOX_GROUP=my-sandbox-group
AZURE_REGION=eastus2
AZURE_PRINCIPAL_ID=$(az ad signed-in-user show --query id -o tsv)
EOF

Stwórz grupę zasobów i grupę sandboxową i przyznaj sobie dostęp do poziomu danych. Zapisz jako setup.py:

import os, uuid
from azure.identity import DefaultAzureCredential
from azure.mgmt.resource import ResourceManagementClient
from azure.mgmt.authorization import AuthorizationManagementClient
from azure.containerapps.sandbox import SandboxGroupManagementClient

credential = DefaultAzureCredential()
sub = os.environ["AZURE_SUBSCRIPTION_ID"]
rg = os.environ["AZURE_RESOURCE_GROUP"]
group = os.environ["AZURE_SANDBOX_GROUP"]
region = os.environ["AZURE_REGION"]

ResourceManagementClient(credential, sub).resource_groups.create_or_update(
    rg, {"location": region},
)

SandboxGroupManagementClient(
    credential, subscription_id=sub, resource_group=rg,
).begin_create_group(group, location=region).result()

# Container Apps SandboxGroup Data Owner (built-in role)
ROLE_DEF_ID = "c24cf47c-5077-412d-a19c-45202126392c"
scope = f"/subscriptions/{sub}/resourceGroups/{rg}/providers/Microsoft.App/sandboxGroups/{group}"

AuthorizationManagementClient(credential, sub).role_assignments.create(
    scope=scope,
    role_assignment_name=str(uuid.uuid4()),
    parameters={
        "properties": {
            "roleDefinitionId": f"/subscriptions/{sub}/providers/Microsoft.Authorization/roleDefinitions/{ROLE_DEF_ID}",
            "principalId": os.environ["AZURE_PRINCIPAL_ID"],
            "principalType": "User",
        }
    },
)
print(f"Setup complete: rg={rg}, sandbox_group={group}, role granted.")
uv run --env-file .env python setup.py

Propagacja przypisań ról trwa od 30 do 60 sekund. Jeśli zwróci main.py 403, poczekaj chwilę i spróbuj ponownie.

Utwórz i uruchom piaskownicę

Zapisz jako main.py:

import os
from azure.identity import DefaultAzureCredential
from azure.containerapps.sandbox import SandboxGroupClient, endpoint_for_region

credential = DefaultAzureCredential()
client = SandboxGroupClient(
    endpoint_for_region(os.environ["AZURE_REGION"]), credential,
    subscription_id=os.environ["AZURE_SUBSCRIPTION_ID"],
    resource_group=os.environ["AZURE_RESOURCE_GROUP"],
    sandbox_group=os.environ["AZURE_SANDBOX_GROUP"],
)

# Create a sandbox
sandbox = client.begin_create_sandbox(disk="ubuntu").result()

# Run a command
result = sandbox.exec("echo 'Hello from Azure Container Apps Sandbox.'")
print(result.stdout)

# Clean up
sandbox.delete()

Uruchom skrypt:

uv run --env-file .env python main.py

Uprzątnij zasoby

Aby usunąć grupę sandbox i grupę zasobów, zapisz następujący kod jako teardown.py:

import os
from azure.identity import DefaultAzureCredential
from azure.mgmt.resource import ResourceManagementClient
from azure.containerapps.sandbox import SandboxGroupManagementClient

credential = DefaultAzureCredential()
sub = os.environ["AZURE_SUBSCRIPTION_ID"]
rg = os.environ["AZURE_RESOURCE_GROUP"]

SandboxGroupManagementClient(
    credential, subscription_id=sub, resource_group=rg,
).begin_delete_group(os.environ["AZURE_SANDBOX_GROUP"]).result()

ResourceManagementClient(credential, sub).resource_groups.begin_delete(rg).result()
print(f"Teardown complete: {rg} deleted.")

Uruchom skrypt czyszczenia.

uv run --env-file .env python teardown.py

Następne kroki