このクイックスタートでは、Python SDKを使ってサンドボックスグループのプロビジョニング、起動、コマンド実行、作成済みリソースのクリーンアップを行います。
前提条件
- リソースグループを作成する権限を持つAzureサブスクリプションです。
- Azure CLI(
az)をインストールしてサインインしました。 - uvとPython 3.13+を組み合わせています。
環境を設定する
SDKをインストールし、Azureにサインインし、このクイックスタートのスクリプトの.envファイルを書きます。
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
リソースグループとサンドボックスグループを作成し、自分にデータプレーンアクセスを与えてください。
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
役割割り当ては30秒から60秒で伝播します。 もし403 main.py 返したら、少し待ってから再試してみてください。
サンドボックスを作成して運営する
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()
スクリプトを実行します。
uv run --env-file .env python main.py
リソースをクリーンアップする
サンドボックスグループとリソースグループを削除するには、以下のコードを 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.")
クリーンアップスクリプトを実行してください。
uv run --env-file .env python teardown.py