Azure Container Apps 동적 세션이 제공하는 기본 제공 코드 인터프리터 외에도 사용자 지정 컨테이너를 사용하여 고유한 세션 샌드박스를 정의할 수도 있습니다.
메모
이 문서는 사용자 지정 컨테이너 세션 풀에만 적용됩니다. 달리 명시되지 않는 한 여기에 설명된 기능은 코드 인터프리터 세션 풀에 사용할 수 없습니다.
사용자 지정 컨테이너 세션에 사용
사용자 지정 컨테이너를 사용하면 필요에 맞는 솔루션을 빌드할 수 있습니다. 이를 통해 빠르고 임시적인 환경에서 코드 또는 애플리케이션을 실행할 수 있습니다. Hyper-V가 있는 안전한 샌드박스 공간을 제공합니다. 또한 선택적 네트워크 격리를 사용하여 구성할 수 있습니다. 일부 사례:
코드 인터프리터: 기본 제공 인터프리터에서 지원되지 않는 언어로 보안 샌드박스에서 신뢰할 수 없는 코드를 실행하거나 코드 인터프리터 환경을 완전히 제어해야 하는 경우에 사용합니다.
격리된 실행: 각 테넌트 또는 사용자에게 고유한 샌드박스 환경이 있는 적대적인 다중 테넌트 시나리오에서 애플리케이션을 실행하는 경우 사용합니다. 이러한 환경은 서로 격리되어 있으며 호스트 애플리케이션과도 격리되어 있습니다. 일부 예로는 사용자 제공 코드를 실행하는 애플리케이션, 클라우드 기반 셸에 대한 최종 사용자 액세스 권한을 부여하는 코드, AI 에이전트 및 개발 환경이 포함됩니다.
사용자 지정 컨테이너 세션 사용
사용자 지정 컨테이너 세션을 사용하려면 사용자 지정 컨테이너 이미지를 사용하여 세션 풀을 만듭니다. Azure Container Apps는 제공된 이미지를 사용하여 자체 Hyper-V 샌드박스에서 컨테이너를 자동으로 시작합니다. 컨테이너가 시작되면 세션 풀에서 사용 가능합니다.
애플리케이션이 세션을 요청하면 인스턴스가 풀에서 즉시 할당됩니다. 세션은 유휴 상태가 될 때까지 활성 상태로 유지되며 유휴 상태는 자동으로 중지되고 제거됩니다.
세션 풀을 위한 컨테이너 탐지기
컨테이너 프로브를 사용하여 사용자 지정 컨테이너 세션 풀에 대한 상태 검사를 구성하고 정상 세션 인스턴스를 유지 관리합니다.
메모
컨테이너 프로브에는 API 버전 2025-02-02-preview 이상이 필요합니다.
컨테이너 프로브를 사용하면 Azure Container Apps의 상태 프로브와 유사하게 세션 컨테이너에 대한 상태 검사를 정의할 수 있습니다. 구성된 경우 세션 풀은 각 세션 인스턴스를 모니터링하고 비정상 인스턴스를 제거합니다.
세션 풀:
- 프로브에 따라 준비된 세션 인스턴스가 정상 상태인지 확인합니다.
- 비정상 세션 인스턴스를 자동으로 제거합니다.
- 정상 세션을 유지하면서 구성된
readySessionInstances개수를 충족하도록 확장됩니다.
세션 풀은 활동성 및 시작 프로브 유형을 지원합니다. 프로브 작동 방식에 대한 자세한 내용은 Azure Container Apps의 상태 프로브를 참조하세요.
Configuration
세션 풀을 만들거나 업데이트할 때 요청 페이로드 섹션에서 프로브를 properties.customContainerTemplate.containers 지정합니다.
전체 API 사양은 SessionPools API를 참조하세요.
예시
{
"properties": {
"customContainerTemplate": {
"containers": [
{
"name": "my-session-container",
"image": "myregistry.azurecr.io/my-session-image:latest",
"probes": [
{
"type": "Liveness",
"httpGet": {
"path": "/health",
"port": 8080
},
"periodSeconds": 10,
"failureThreshold": 3
},
{
"type": "Startup",
"httpGet": {
"path": "/ready",
"port": 8080
},
"periodSeconds": 5,
"failureThreshold": 30
}
]
}
]
},
"dynamicPoolConfiguration": {
"readySessionInstances": 5
}
}
}
Troubleshooting
세션 풀이 예상되는 정상 readySessionInstances수를 유지하지 않는 경우 다음 수정 사항을 고려하세요.
- 컨테이너 로그를 확인합니다. 세션 컨테이너 로그를 검토하여 프로브 엔드포인트 또는 컨테이너 시작 관련 문제를 식별합니다. 사용자 지정 컨테이너 세션 풀에 대한 로그 보기를 참조하세요.
- 프로브 구성을 확인합니다. 애플리케이션에 대해 프로브 경로, 포트 및 임계값이 올바르게 구성되었는지 확인합니다.
- 컨테이너 상태를 검토합니다. 프로브 엔드포인트가 성공적으로 응답하지 못하게 하는 컨테이너 내의 문제를 확인합니다.
세션 중지
세션 중지 API를 사용하여 사용자 지정 컨테이너 세션 풀에서 세션을 종료합니다.
세션 풀은 구성에 따라 세션 수명 주기를 처리하는 자동 세션 관리를 lifecycleConfiguration지원합니다. 그러나 더 많은 제어가 필요할 수 있는 시나리오가 있습니다.
세션을 할당한 후 언제든지 이 API를 호출하여 수동으로 종료할 수 있습니다. 이 방법은 다음과 같은 경우에 유용합니다.
- 세션이 TTL(Time to Live)에 도달하기 전에 리소스를 정리해야 합니다.
- 세션 풀이 최대 동시 세션 제한에 도달하면 새 세션에 대한 용량을 확보해야 합니다.
- 세션이 작업을 완료하고 리소스를 즉시 해제하려고 합니다.
API 참조
요청
POST <POOL_MANAGEMENT_ENDPOINT>/.management/stopSession?api-version=2025-02-02-preview&identifier=<SESSION_ID>
매개 변수
| 매개 변수 | 유형 | 필수 | 설명 |
|---|---|---|---|
api-version |
문자열 | 예 | 사용할 API 버전(예: 2025-02-02-preview)입니다. |
identifier |
문자열 | 예 | 중지할 세션의 고유 식별자입니다. |
예제
요청
POST https://<SESSION_POOL_NAME>.<ENVIRONMENT_ID>.<REGION>.azurecontainerapps.io/.management/stopSession?api-version=2025-02-02-preview&identifier=testSessionIdentifier
응답
HTTP/1.1 200 OK
Content-Type: text/plain
Session testSessionIdentifier in session pool testSessionPool stopped.
세션 정보 검색
세션 풀을 쿼리하여 세션 상태를 확인하고, 만료 세부 정보를 얻고, 모든 활성 세션을 나열할 수 있습니다. 이 기능은 세션 상태를 모니터링하고, 리소스 사용량을 추적하고, 사용자 지정 정리 워크플로를 구현하는 데 유용합니다.
단일 세션 가져오기
특정 세션에 대한 세부 정보를 검색하려면 엔드포인트를 getSession 사용합니다.
POST <POOL_MANAGEMENT_ENDPOINT>/.management/getSession?identifier=<SESSION_ID>&api-version=2025-02-02-preview
Authorization: Bearer <TOKEN>
엔드포인트는 getSession 세션 식별자, 현재 만료 시간 및 생성 타임스탬프를 포함한 세션 메타데이터를 반환합니다.
SessionView 응답 스키마
| Field | 유형 | 필수 | 설명 |
|---|---|---|---|
identifier |
문자열 | 예 | 제공한 세션 식별자 |
etag |
문자열 | 예 | 세션에 대한 불분명한 버전 식별자입니다. 변경 검색에 이 식별자를 사용할 수 있습니다. |
expiresAt |
DateTime | 예 | 세션이 종료되는 UTC 타임스탬프 |
createdAt |
DateTime | No | 세션 만들기 타임스탬프 |
lastAccessedAt |
DateTime | No | 이 세션에 대한 마지막 요청의 타임스탬프 |
요청 및 응답 예제
curl -X POST "https://my-pool.env-id.westus2.azurecontainerapps.io/.management/getSession?identifier=user-123&api-version=2025-02-02-preview" \
-H "Authorization: Bearer $TOKEN"
성공 응답(HTTP 200):
{
"identifier": "user-123",
"etag": "a1b2c3d4",
"expiresAt": "2026-04-30T14:30:00Z",
"createdAt": "2026-04-30T13:30:00Z",
"lastAccessedAt": "2026-04-30T14:29:00Z"
}
풀 내의 모든 세션을 나열하십시오
세션 풀의 모든 세션 목록을 검색하려면 엔드포인트를 listSessions 사용합니다.
POST <POOL_MANAGEMENT_ENDPOINT>/.management/listSessions?skip=0&api-version=2025-02-02-preview
Authorization: Bearer <TOKEN>
Pagination
목록 엔드포인트는 건너뛰기 기반 페이지 매김을 지원합니다. 기본적으로 각 페이지는 최대 300개의 세션을 반환합니다. 쿼리 매개 변수를 skip 사용하여 결과를 탐색합니다.
| 매개 변수 | 설명 |
|---|---|
skip |
처음부터 건너뛸 세션 수(기본값: 0) |
nextLink |
결과의 다음 페이지에 대한 전체 URL(더 많은 결과가 있는 경우 응답에 포함됨) |
ApiCollectionEnvelope 응답 스키마
| Field | 유형 | 설명 |
|---|---|---|
value |
SessionView[] | 세션 개체의 배열 |
count |
정수 (integer) | 현재 페이지의 세션 수 |
nextLink |
문자열 | 다음 페이지의 URL(더 이상 결과가 없는 경우 null) |
페이지 매김 루프 예제
POOL_URL="https://my-pool.env-id.westus2.azurecontainerapps.io"
next_url="$POOL_URL/.management/listSessions?skip=0&api-version=2025-02-02-preview"
while [ -n "$next_url" ]; do
response=$(curl -s -X POST "$next_url" \
-H "Authorization: Bearer $TOKEN")
echo "$response" | jq '.value[] | {identifier, expiresAt}'
next_url=$(echo "$response" | jq -r '.nextLink // empty')
done
응답 예제(HTTP 200):
{
"value": [
{
"identifier": "user-123",
"etag": "a1b2c3d4",
"expiresAt": "2026-04-30T14:30:00Z",
"createdAt": "2026-04-30T13:30:00Z",
"lastAccessedAt": "2026-04-30T14:29:00Z"
},
{
"identifier": "user-456",
"etag": "e5f6a7b8",
"expiresAt": "2026-04-30T14:30:00Z",
"createdAt": "2026-04-30T13:30:00Z",
"lastAccessedAt": "2026-04-30T14:29:00Z"
}
],
"count": 2,
"nextLink": "https://my-pool.env-id.westus2.azurecontainerapps.io/.management/listSessions?skip=300"
}
로깅
사용자 지정 컨테이너 세션 풀은 Azure Monitor 및 Log Analytics와 통합됩니다. 애플리케이션 로그는 컨테이너가 stdout 또는 stderr에 출력을 기록해야만 캡처됩니다. 따라서 콘솔에 로그가 출력되도록 애플리케이션을 설정하세요.
사전 요구 사항
- 사용자 지정 컨테이너 세션 풀이 있는 Azure Container Apps 환경
- Log Analytics 작업 영역 또는 설치 중에 작업 영역 만들기
로깅 구성
Azure Monitor 로깅을 활성화합니다.
- Azure Portal에서 Container Apps 환경으로 이동합니다.
- 모니터링에서 로깅 옵션을 선택합니다.
- 로그 대상을Azure Monitor로 설정합니다.
진단 설정 구성
- Container Apps 환경의 모니터링에서 진단 설정을 선택합니다.
- + 진단 설정 추가를 선택합니다.
- 진단 설정의 이름을 제공합니다.
- 로그 아래에서 캡처할 세션 관련 로그 범주를 선택합니다.
- 대상 세부 정보에서 Log Analytics 작업 영역으로 보내기를 선택합니다.
- Log Analytics 작업 영역을 선택하거나 새 작업 영역을 만듭니다.
- 저장을 선택합니다.
Log Analytics 테이블
| 로그 범주 | Log Analytics 테이블 | 설명 |
|---|---|---|
| 애플리케이션 로그 | AppEnvSessionConsoleLogs |
컨테이너화된 애플리케이션에서 내보낸 표준 출력(stdout) 및 표준 오류(stderr)입니다. |
| 플랫폼 로그 |
AppEnvSessionLifecycleLogs, AppEnvSessionPoolEvents |
세션 풀 할당, 수명 주기 및 작동 상태와 관련된 플랫폼 생성 이벤트입니다. |
로그가 Log Analytics로 직접 전송되는 경우 테이블은 _CL 접미사를 사용합니다. 예를 들면 AppEnvSessionConsoleLogs_CL다음과 같습니다. 로그가 Azure Monitor 진단 설정을 통해 라우팅되는 경우 테이블 이름에는 _CL 접미사가 포함되지 않습니다.
세션 로그 보기
진단 설정이 구성되면 로그가 Log Analytics 작업 영역으로 전송됩니다.
Log Analytics의 쿼리 로그
- Azure Portal에서 Log Analytics 작업 영역으로 이동합니다.
- 왼쪽 메뉴에서 로그를 선택합니다.
- 쿼리가 단순 모드인 경우 KQL 모드를 선택합니다.
- KQL(Kusto Query Language)을 사용하여 세션 로그를 쿼리합니다.
예제 쿼리
세션에서 최근 콘솔 로그 보기:
AppEnvSessionConsoleLogs
| where TimeGenerated > ago(1h)
| order by TimeGenerated desc
| take 100
세션 수명 주기 이벤트 보기:
AppEnvSessionLifecycleLogs
| where TimeGenerated > ago(1h)
| order by TimeGenerated desc
세션 풀 이벤트 보기:
AppEnvSessionPoolEvents
| where TimeGenerated > ago(1h)
| order by TimeGenerated desc
Metrics
Azure Container Apps는 사용자 지정 컨테이너 세션 풀에 대한 Azure Monitor 메트릭을 내보냅니다. 이러한 메트릭을 사용하여 시간에 따른 풀 용량 및 활동을 추적합니다.
지원되는 메트릭
전체 목록은 지원되는 메트릭( Microsoft.App/sessionpools - Azure Monitor)을 참조하세요.
| Metric | REST API의 이름 | 단위 | Aggregation | 치수 | 시간 입자 | DS 데이터 내보내기 |
|---|---|---|---|---|---|---|
|
세션 수 실행 세션 풀에서 실행 중인 세션 Pod 수 |
PoolExecutingPodCount |
개수 | 합계(합계), 평균, 최대, 최소 | poolName |
PT1M | 예 |
|
세션 수 만들기 세션 풀에서 세션 Pod 생성 수 |
PoolPendingPodCount |
개수 | 합계(합계), 평균, 최대, 최소 | poolName |
PT1M | 예 |
|
준비 세션 수 세션 풀에서 준비된 세션 Pod 수 |
PoolReadyPodCount |
개수 | 합계(합계), 평균, 최대, 최소 | poolName |
PT1M | 예 |
세션 메트릭 보기
Azure Monitor 또는 Container Apps 환경 메트릭을 사용하여 세션 기반 메트릭을 볼 수 있습니다.
Azure Monitor 측정항목
- Azure Monitor 메트릭 페이지를 엽니다.
- 범위를 사용하여 사용자 지정 컨테이너 세션 풀을 선택합니다.
- 확인할 메트릭과 집계를 선택하세요.
Container Apps 환경 측정값
- Azure Portal에서 Container Apps 환경을 엽니다.
- 모니터링에서 메트릭을 선택합니다.
- 범위를 사용하여 사용자 지정 컨테이너 세션 풀을 선택합니다.
- 확인할 메트릭과 집계를 선택하세요.