View a markdown version of this page

가중치 기반 규칙에 대한 세션 고정성 - Amazon Bedrock AgentCore

가중치 기반 규칙에 대한 세션 고정성

A/B 테스트 또는 canary 배포에 가중치 기반 규칙을 사용하는 경우 각 세션이 여러 요청에서 일관된 경험을 얻기를 원합니다. 세션 고정이 없으면 세션은 각 요청에서 서로 다른 구성 번들을 수신하거나 서로 다른 대상으로 라우팅할 수 있습니다. 다른 대상으로 라우팅한다는 것은 이전 요청의 컨텍스트가 없는 새 에이전트 런타임을 의미하며, 이로 인해 사용자 경험이 중단됩니다.

이를 해결하기 위해 게이트웨이는 세션 고정을 지원합니다. 요청에 세션 ID를 포함하면 게이트웨이는 첫 번째 요청의 라우팅 결정을 저장하고 동일한 세션의 모든 후속 요청에 재사용합니다.

세션 고정의 작동 방식

게이트웨이는 각 요청에서 세션 ID를 추출하여 세션을 식별합니다. 고정 흐름은 다음과 같이 작동합니다.

  1. 세션 ID가 있는 첫 번째 요청에서 게이트웨이는 구성된 가중치를 기반으로 변형을 선택하고 결정을 저장합니다.

  2. 세션 ID가 동일한 후속 요청은 가중치를 재평가하지 않고 저장된 결정을 재사용합니다.

  3. 세션 ID가 없는 요청은 고정 없이 독립적으로 평가됩니다.

게이트웨이가 세션 ID를 결정하는 방법은 대상 유형에 따라 다릅니다.

  • AgentCore 런타임 대상 - 게이트웨이는 X-Amzn-Bedrock-AgentCore-Runtime-Session-Id 헤더를 사용합니다. 헤더 값은 최소 33자여야 합니다. 첫 번째 요청 시이 헤더를 보낼 필요가 없습니다. 헤더가 없는 경우 에이전트 런타임은 세션 ID를 자동 생성하며, 게이트웨이는 사용자가 포함하는 경우 후속 요청에 대한 고정성을 위해 자동 생성된 세션 ID를 사용합니다.

  • HTTP 패스스루 대상 - 기본적으로 게이트웨이는 X-Amzn-Bedrock-AgentCore-Runtime-Session-Id 헤더를 사용합니다. 대상에서 사용자 지정 세션 식별자 및 제한 시간을 구성할 수도 있으므로 자체 세션 헤더를 사용하는 패스스루 클라이언트는 런타임 세션 헤더를 채택할 필요가 없습니다. 자세한 내용은 패스스루 대상에 대한 세션 고정 구성을 참조하세요.

패스스루 대상에 대한 세션 고정성 구성

HTTP 패스스루 대상의 경우 대상 구성stickinessConfiguration에서 선택적를 설정하여 게이트웨이가 세션을 식별하는 방법과 세션 선호도가 지속되는 시간을 제어할 수 있습니다. 이는 클라이언트가 이미 자체 세션 헤더를 전송하고 표준 런타임 세션 헤더도 전송하지 않으려는 경우에 유용합니다.

stickinessConfiguration 객체에는 다음이 포함됩니다.

  • 식별자(필수) - 게이트웨이에 요청에서 세션 ID를 찾을 위치를 알려주는 표현식입니다. 현재 게이트웨이는 요청 헤더에서만 세션 ID를 확인할 수 있습니다. 다음 양식 중 하나로 헤더를 지정할 수 있습니다.

    • 와 같은 일반 HTTP 헤더 이름입니다x-session-id. 게이트웨이는 해당 요청 헤더에서 세션 ID를 읽습니다.

    • $.AMZN_AC_GW_CONTEXT.headers.{header-name}와 같은 양식의 컨텍스트 경로 표현식입니다$.AMZN_AC_GW_CONTEXT.headers.x-session-id.

      현재는 headers 소스만 지원됩니다. 다른 소스(예: JWT 클레임)는 현재 사용할 수 없습니다.

  • 제한 시간(선택 사항) - 세션 선호도 제한 시간(초, 1~86400)입니다. 이 비활성 기간이 지나면 세션 선호도가 만료됩니다. 각 요청에서 창이 재설정됩니다(슬라이딩 창).

대상에이 있는 경우 stickinessConfiguration게이트웨이는 구성된에서 세션 ID를 확인합니다identifier.

다음 예제에서는 사용자 지정 x-session-id 헤더에서 세션 ID를 추출하고 8시간(28,800초) 후에 세션 선호도를 만료stickinessConfiguration시키는를 사용하여 패스스루 대상을 생성합니다.

aws bedrock-agentcore-control create-gateway-target --cli-input-json '{ "gatewayIdentifier": "GATEWAY_ID", "name": "my-passthrough-target", "targetConfiguration": { "http": { "passthrough": { "endpoint": "https://my-service.example.com", "protocolType": "CUSTOM", "stickinessConfiguration": { "identifier": "$.AMZN_AC_GW_CONTEXT.headers.x-session-id", "timeout": 28800 } } } }, "credentialProviderConfigurations": [ {"credentialProviderType": "GATEWAY_IAM_ROLE"} ] }'

패스스루 대상에 대한 자세한 내용은 HTTP 패스스루 대상을 참조하세요.

중요한 동작

저장된 결정이 규칙 변경보다 우선합니다. 규칙을 업데이트하면 기존 세션은 원래 결정을 계속합니다. 이렇게 하면 세션 일관성이 보장됩니다. 세션에 새 규칙을 적용하려면 새 세션 ID로 새 세션을 시작합니다.

세션은 비활성 기간이 지나면 만료됩니다. 만료 기간은 각 요청(슬라이딩 기간)에서 재설정됩니다. AgentCore 런타임 대상의 경우 세션은 15일 동안 활동이 없으면 만료됩니다. HTTP 패스스루 대상의 경우 만료 기간은 대상의 stickinessConfiguration (1~86400초)에 timeout 설정한 입니다. 제한 시간을 설정하지 않으면 기본값이 적용됩니다. 세션이 만료되면 새 세션에 새 세션 ID를 사용하여 예기치 않은 라우팅 동작을 방지합니다. 만료된 세션 IDs 재사용하지 않는 것이 좋습니다.

세션 상태는 대상별로 범위가 지정됩니다. 대상마다 독립적인 세션 상태를 유지합니다.

AgentCore 런타임 및 HTTP 패스스루 대상에 대해 지원됩니다. MCP 대상에는 세션 고정이 지원되지 않습니다.