

# IVS 실시간 스트리밍과 함께 Amazon EventBridge 사용
<a name="eventbridge"></a>

Amazon EventBridge를 사용하여 Amazon Interactive Video Service(IVS) 스트림을 모니터링할 수 있습니다.

Amazon IVS는 스트림의 상태에 대한 변경 이벤트를 Amazon EventBridge로 전송합니다. 전송되는 모든 이벤트가 유효합니다. 다만 이벤트는 '최선의 노력'을 기준으로 전송됩니다. 즉, 다음을 보장하지 않습니다.
+ 이벤트 전송 - 지정된 이벤트(예: 참가자가 게시함)가 발생할 수 있지만 Amazon IVS가 해당 이벤트를 EventBridge로 보내지 않을 수도 있습니다. 이벤트가 전송이 될 때까지 Amazon IVS는 수 시간동안 이벤트 전송을 시도합니다.
+ 전송되는 이벤트는 지정된 기간에 도착합니다. 최대 몇 시간 이전의 이벤트도 수신할 수 있습니다.
+ 순서대로 이벤트 전송 - 특히, 이벤트가 서로 짧은 간격 안에 전송되는 경우 이벤트 순서가 잘못될 수 있습니다. 예를 들어, 참가자가 게시함 전에 참가자가 게시 취소함을 볼 수 있습니다.

이벤트가 누락되거나 늦거나 순서가 맞지 않는 경우는 드물지만 알림 이벤트의 순서나 존재 여부에 종속되는 비즈니스에 중요한 프로그램을 작성하는 경우 이러한 가능성을 염두에 두고 처리해야 합니다.

다음 이벤트 중 하나에 대한 Eventbridge 규칙을 생성할 수 있습니다.


| 이벤트 유형 | 이벤트 | 전송된 시간 | 
| --- | --- | --- | 
| IVS 구성 상태 변경 | 대상 실패 | 대상에 대한 출력 시도가 실패했습니다(예: S3 버킷을 찾을 수 없거나, S3 버킷에 대한 액세스가 거부되었거나, RTMP 대상에 대한 스트림이 이미 존재함). | 
| IVS 구성 상태 변경 | 대상 시작 | 대상에 출력이 성공적으로 시작되었습니다. | 
| IVS 구성 상태 변경 | 대상 종료 | 대상에 출력이 완료되었습니다. | 
| IVS 구성 상태 변경 | 대상 재연결 | 대상에 출력이 중단되어 재연결을 시도하고 있습니다. | 
| IVS 구성 상태 변경 | 세션 시작 | 구성 세션을 생성했습니다. 이 이벤트는 구성 프로세스 파이프라인이 성공적으로 초기화될 때 발생합니다. 현재 구성 파이프라인은 스테이지를 성공적으로 구독했으며 미디어를 수신하고 비디오를 작성할 수 있습니다. | 
| IVS 구성 상태 변경 | 세션 종료 | 구성 세션이 완료되었습니다. | 
| IVS 구성 상태 변경 | 세션 실패 | 스테이지 삭제, 하나 이상의 출력 실패 또는 기타 내부 오류로 인해 구성 파이프라인이 실패했습니다. | 
| IVS 참가자 레코딩 상태 변경 | 레코딩 시작 | 게시자가 스테이지에 연결되었으며 S3에 레코딩되고 있습니다. | 
| IVS 참가자 레코딩 상태 변경 | 레코딩 종료 | 게시자의 스테이지 연결이 해제되었으며 남은 모든 파일이 S3에 작성되었습니다. | 
| IVS 참가자 레코딩 상태 변경 | 레코딩 시작 실패 | 게시자는 단계에 연결하지만 오류로 인해 레코딩이 시작되지 않습니다(예: S3 버킷을 찾을 수 없거나 액세스할 수 없는 경우). 이 게시자의 라이브 스트림이 레코딩되지 않았습니다. | 
| IVS 참가자 레코딩 상태 변경 | 레코딩 종료 실패 | 레코딩 중에 발생한 오류로 인해 레코딩이 실패하면 종료됩니다(예: S3 버킷을 찾을 수 없거나 액세스할 수 없는 경우). 일부 객체는 여전히 구성된 스토리지 위치에 기록될 수 있습니다. | 
| IVS 스테이지 업데이트 | 참가자가 게시함 | 참가자가 스테이지에 게시를 시작합니다. | 
| IVS 스테이지 업데이트 | 참가자가 게시 취소함 | 참가자가 스테이지에 게시를 중지했습니다. | 
| IVS 스테이지 업데이트 | 참가자 게시 오류 | 스테이지에 게시하려는 참가자의 시도가 실패했습니다. | 
| IVS 스테이지 업데이트 | 참가자 복제 시작 | 참가자 복제가 시작됩니다. | 
| IVS 스테이지 업데이트 | 참가자 복제 종료 | 참가자 복제가 종료됩니다. 게시자가 게시를 중지했거나 게시자가 게시를 중지하고 재연결 기간이 만료된 경우 StopParticipantReplication API 작업으로 인해 복제가 종료될 수도 있습니다. | 
| IVS 스테이지 업데이트 | 토큰 교환됨  | 기존 참가자 토큰은 새 참가자 토큰으로 교환됩니다. 이렇게 교환하면 토큰 기능이 업그레이드되거나 다운그레이드되거나 토큰 속성이 업데이트됩니다. | 

## Amazon IVS에 대한 Amazon EventBridge 규칙 생성
<a name="eventbridge-creating-rules"></a>

Amazon IVS에서 생성되는 이벤트에서 트리거되는 규칙을 생성할 수 있습니다. *Amazon EventBridge 사용 설명서*의[Create a rule in Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-get-started.html) 단계를 따르세요. 서비스를 선택할 때 **Interactive Video Service(IVS)**를 선택합니다.

## 예제: 구성 상태 변경
<a name="eventbridge-examples-mediapublish-state-change"></a>

**대상 실패**: 이 이벤트는 대상에 대한 출력 시도가 실패할 때 수신됩니다(예: S3 버킷을 찾을 수 없거나, S3 버킷에 대한 액세스가 거부되었거나, RTMP 대상에 대한 스트림이 이미 존재함).

```
{
   "version": "0",
   "id": "01234567-0123-0123-0123-012345678901",
   "detail-type": "IVS Composition State Change",
   "source": "aws.ivs",
   "account": "aws_account_id",
   "time": "2017-06-12T10:23:43Z",
   "region": "us-east-1",
   "resources": [
     "arn:aws:ivs:us-east-1:aws_account_id:composition/123456789012"
   ],
   "detail": {
     "event_name": "Destination Failure",
     "stage_arn": "<stage-arn>",
     "id": "<Destination-id>", 
     "error_code": "e.g., AccessDeniedException", 
     "reason": "e.g., Access denied to S3 bucket. Please verify your bucket policy" 
   }
}
```

다음 표에는 문제 해결 지침과 함께 대상 실패 이벤트의 `error_code` 및 `reason` 값이 나열되어 있습니다.


| error\$1code  | reason | 문제 해결 팁 | 
| --- | --- | --- | 
| ResourceNotFoundException | S3 버킷을 찾을 수 없습니다. 버킷이 존재하는지 확인합니다. | S3 버킷이 존재하고 올바른 리전에 있는지 확인합니다. | 
| AccessDeniedException | S3 버킷에 대한 액세스가 거부되었습니다. 버킷 정책을 확인합니다. | S3 버킷 정책이 IVS 서비스에 필요한 권한을 부여하는지 확인합니다. | 
| ConflictException | 스트림이 이미 있음 | 동일한 RTMP 대상 채널에서 활성 상태인 다른 브로드캐스트가 없는지 확인합니다. | 
| InternalServerException | 서비스 내부 오류 | 작업을 다시 시도합니다. 문제가 지속되면 AWS Support에 문의하십시오. | 

**대상 시작**: 이 이벤트는 대상에 출력이 성공적으로 시작되었을 때 전송됩니다.

```
{
   "version": "0",
   "id": "01234567-0123-0123-0123-012345678901",
   "detail-type": "IVS Composition State Change",
   "source": "aws.ivs",
   "account": "aws_account_id",
   "time": "2017-06-12T10:23:43Z",
   "region": "us-east-1",
   "resources": [
     "arn:aws:ivs:us-east-1:aws_account_id:composition/123456789012"
   ],
   "detail": {
     "event_name": "Destination Start",
     "stage_arn": "<stage-arn>",
     "id": "<destination-id>",
   }
}
```

**대상 종료**: 이 이벤트는 대상에 출력이 완료되면 전송됩니다.

```
{
   "version": "0",
   "id": "01234567-0123-0123-0123-012345678901",
   "detail-type": "IVS Composition State Change",
   "source": "aws.ivs",
   "account": "aws_account_id",
   "time": "2017-06-12T10:23:43Z",
   "region": "us-east-1",
   "resources": [
     "arn:aws:ivs:us-east-1:aws_account_id:composition/123456789012"
   ],
   "detail": {
     "event_name": "Destination End",
     "stage_arn": "<stage-arn>",
     "id": "<Destination-id>",
   }
}
```

**대상 재연결**: 이 이벤트는 대상에 출력이 중단되어 재연결을 시도할 때 전송됩니다.

```
{
   "version": "0",
   "id": "01234567-0123-0123-0123-012345678901",
   "detail-type": "IVS Composition State Change",
   "source": "aws.ivs",
   "account": "aws_account_id",
   "time": "2017-06-12T10:23:43Z",
   "region": "us-east-1",
   "resources": [
     "arn:aws:ivs:us-east-1:aws_account_id:composition/123456789012"
   ],
   "detail": {
     "event_name": "Destination Reconnecting",
     "stage_arn": "<stage-arn>",
     "id": "<Destination-id>",
   }
}
```

**세션 시작**: 이 이벤트는 구성 세션이 생성될 때 전송됩니다. 이 이벤트는 구성 프로세스 파이프라인이 성공적으로 초기화될 때 발생합니다. 현재 구성 파이프라인은 스테이지를 성공적으로 구독했으며 미디어를 수신하고 비디오를 작성할 수 있습니다.

```
{
   "version": "0",
   "id": "01234567-0123-0123-0123-012345678901",
   "detail-type": "IVS Composition State Change",
   "source": "aws.ivs",
   "account": "aws_account_id",
   "time": "2017-06-12T10:23:43Z",
   "region": "us-east-1",
   "resources": [
     "arn:aws:ivs:us-east-1:aws_account_id:composition/123456789012"
   ],
   "detail": {
     "event_name": "Session Start",
     "stage_arn": "<stage-arn>"
   }
}
```

**세션 종료**: 이 이벤트는 구성 세션이 완료되고 모든 리소스가 삭제되었을 때 전송됩니다.

```
{
   "version": "0",
   "id": "01234567-0123-0123-0123-012345678901",
   "detail-type": "IVS Composition State Change",
   "source": "aws.ivs",
   "account": "aws_account_id",
   "time": "2017-06-12T10:23:43Z",
   "region": "us-east-1",
   "resources": [
     "arn:aws:ivs:us-east-1:aws_account_id:composition/123456789012"
   ],
   "detail": {
     "event_name": "Session End",
     "stage_arn": "<stage-arn>"
   }
}
```

**세션 실패**: 이 이벤트는 스테이지 삭제, 하나 이상의 출력 실패 또는 기타 내부 오류로 인해 구성 파이프라인이 실패할 때 수신됩니다.

```
{
   "version": "0",
   "id": "01234567-0123-0123-0123-012345678901",
   "detail-type": "IVS Composition State Change",
   "source": "aws.ivs",
   "account": "aws_account_id",
   "time": "2017-06-12T10:23:43Z",
   "region": "us-east-1",
   "resources": [
     "arn:aws:ivs:us-east-1:aws_account_id:composition/123456789012"
   ],
   "detail": {
     "event_name": "Session Failure",
     "stage_arn": "<stage-arn>",
     "error_code": "e.g., DestinationFailure", 
     "reason": "e.g. One or more outputs failed"
   }
}
```

다음 표에는 문제 해결 지침과 함께 세션 실패 이벤트의 `error_code` 및 `reason` 값이 나열되어 있습니다.


| error\$1code  | reason | 문제 해결 팁 | 
| --- | --- | --- | 
| StageDeleted | 스테이지가 삭제되었습니다. | 구성을 시작하기 전에 단계가 존재하는지 확인합니다. | 
| DestinationFailure | 하나 이상의 출력 실패 | 개별 대상 오류를 확인합니다. | 
| InternalServerException | 서비스 내부 오류 | 작업을 다시 시도합니다. 문제가 지속되면 AWS Support에 문의하십시오. | 

## 예: 개별 참가자 레코딩 상태 변경
<a name="eventbridge-examples-individual-participant-recording-state-change"></a>

**레코딩 시작**: 이 이벤트는 게시자가 스테이지에 연결되었으며 S3에 레코딩되고 있을 때 수신됩니다.

```
{
   "version": "0",
   "id": "12345678-1a23-4567-a1bc-1a2b34567890",
   "detail-type": "IVS Participant Recording State Change",
   "source": "aws.ivs",
   "account": "123456789012",
   "time": "2024-03-13T22:09:58Z",
   "region": "us-east-1",
   "resources": ["arn:aws:ivs:us-west-2:aws_account_id:stage/AbCdef1G2hij"],
   "detail": {
      "session_id": "st-ZyXwvu1T2s",
      "event_name": "Recording Start",
      "participant_id": "xYz1c2d3e4f",
      "recording_s3_bucket_name": "bucket-name",
      "recording_s3_key_prefix": "<stage_id>/<session_id>/<participant_id>/2024-01-01T12-00-55Z"
   }
}
```

**레코딩 종료**: 이 이벤트는 게시자의 스테이지 연결이 해제되었으며 남은 모든 파일이 S3에 작성되었을 때 수신됩니다.

```
{
   "version": "0",
   "id": "12345678-1a23-4567-a1bc-1a2b34567890",
   "detail-type": "IVS Participant Recording State Change",
   "source": "aws.ivs",
   "account": "123456789012",
   "time": "2024-03-13T22:19:04Z",
   "region": "us-east-1",
   "resources": ["arn:aws:ivs:us-west-2:aws_account_id:stage/AbCdef1G2hij"],
   "detail": {
      "session_id": "st-ZyXwvu1T2s",
      "event_name": "Recording End",
      "participant_id": "xYz1c2d3e4f",
      "recording_s3_bucket_name": "bucket-name",
      "recording_s3_key_prefix": "<stage_id>/<session_id>/<participant_id>/2024-01-01T12-00-55Z",
      "recording_duration_ms": 547327
   }
}
```

**레코딩 시작 실패**: 이 이벤트는 게시자는 단계에 연결하지만 오류로 인해 레코딩이 시작되지 않을 때 수신됩니다(예: S3 버킷을 찾을 수 없거나 액세스할 수 없는 경우). 게시자의 라이브 스트림이 레코딩되지 않습니다.

```
{
   "version": "0",
   "id": "12345678-1a23-4567-a1bc-1a2b34567890",
   "detail-type": "IVS Participant Recording State Change",
   "source": "aws.ivs",
   "account": "123456789012",
   "time": "2024-03-13T22:09:58Z",
   "region": "us-east-1",
   "resources": ["arn:aws:ivs:us-west-2:aws_account_id:stage/AbCdef1G2hij"],
   "detail": {
      "session_id": "st-ZyXwvu1T2s",
      "event_name": "Recording Start Failure",
      "participant_id": "xYz1c2d3e4f",
      "recording_s3_bucket_name": "bucket-name",
      "recording_s3_key_prefix": "<stage_id>/<session_id>/<participant_id>/2024-01-01T12-00-55Z",
      "error_code": "e.g., AccessDeniedException", 
      "reason": "e.g., Access denied to S3 bucket. Please verify your bucket policy"
   }
}
```

다음 표에는 문제 해결 지침과 함께 레코딩 시작 실패 이벤트의 `error_code` 및 `reason` 값이 나열되어 있습니다.


| error\$1code  | reason | 문제 해결 팁 | 
| --- | --- | --- | 
| ResourceNotFoundException | S3 버킷을 찾을 수 없습니다. 버킷이 존재하는지 확인합니다. | S3 버킷이 존재하고 올바른 리전에 있는지 확인합니다. | 
| AccessDeniedException | S3 버킷에 대한 액세스가 거부되었습니다. 버킷 정책을 확인합니다. | S3 버킷 정책이 IVS 서비스에 필요한 권한을 부여하는지 확인합니다. | 
| ValidationException | 레코딩에 지원되지 않는 비디오 코덱 | 게시자가 지원되는 비디오 코덱을 사용하고 있는지 확인합니다. | 
| InternalServerException | 서비스 내부 오류 | 작업을 다시 시도합니다. 문제가 지속되면 AWS Support에 문의하십시오. | 

**레코딩 종료 실패**: 이 이벤트는 레코딩 중에 발생한 오류로 인해 레코딩이 실패로 종료될 때 수신됩니다(예: S3 버킷을 찾을 수 없거나 액세스할 수 없는 경우). 일부 객체는 여전히 구성된 스토리지 위치에 기록될 수 있습니다.

```
{
   "version": "0",
   "id": "12345678-1a23-4567-a1bc-1a2b34567890",
   "detail-type": "IVS Participant Recording State Change",
   "source": "aws.ivs",
   "account": "123456789012",
   "time": "2024-03-13T22:19:04Z",
   "region": "us-east-1",
   "resources": ["arn:aws:ivs:us-west-2:aws_account_id:stage/AbCdef1G2hij"],
   "detail": {
      "session_id": "st-ZyXwvu1T2s",
      "event_name": "Recording End Failure",
      "participant_id": "xYz1c2d3e4f",
      "recording_s3_bucket_name": "bucket-name",
      "recording_s3_key_prefix": "<stage_id>/<session_id>/<participant_id>/2024-01-01T12-00-55Z",
      "recording_duration_ms": 547327,
      "error_code": "e.g., AccessDeniedException", 
      "reason": "e.g., Access denied to S3 bucket. Please verify your bucket policy" 
   }
}
```

다음 표에는 문제 해결 지침과 함께 레코딩 종료 실패 이벤트의 `error_code` 및 `reason` 값이 나열되어 있습니다.


| error\$1code  | reason | 문제 해결 팁 | 
| --- | --- | --- | 
| ResourceNotFoundException | S3 버킷을 찾을 수 없습니다. 버킷이 존재하는지 확인합니다. | S3 버킷이 존재하고 올바른 리전에 있는지 확인합니다. | 
| AccessDeniedException | S3 버킷에 대한 액세스가 거부되었습니다. 버킷 정책을 확인합니다. | S3 버킷 정책이 IVS 서비스에 필요한 권한을 부여하는지 확인합니다. | 
| InternalServerException  | 서비스 내부 오류 | 작업을 다시 시도합니다. 문제가 지속되면 AWS Support에 문의하십시오. | 

참고로, 개별 참가자 레코딩 병합이 활성화되어 있는 경우와 스테이지 게시자가 스테이지에서 연결을 끊었다가 다시 연결하는 경우 IVS에서는 이전 세션과 동일한 S3 접두사에 레코딩을 시도합니다. 결과적으로 위의 예제에서는 `recording_s3_key_prefix`의 `session_id` 구성 요소에 `detail`의 `session_id` 필드와 다른 값이 있을 수 있습니다. [조각화된 개별 참가자 레코딩 병합](rt-individual-participant-recording.md#ind-part-rec-merge-frag)을 참조하세요.

## 예: 스테이지 업데이트
<a name="eventbridge-examples-stage-update"></a>

스테이지 업데이트 이벤트에는 이벤트를 분류하는 이벤트 이름과 해당 이벤트에 대한 메타데이터가 포함됩니다. 메타데이터에는 이벤트를 트리거한 참가자 ID, 연결된 스테이지 및 세션 ID, 사용자 ID가 포함됩니다.

**참가자가 게시함**: 이 이벤트는 참가자가 스테이지에 게시를 시작할 때 전송됩니다.

```
{
    "version": "0",
    "id": "12345678-1a23-4567-a1bc-1a2b34567890",
    "detail-type": "IVS Stage Update",
    "source": "aws.ivs",
    "account": "123456789012",
    "time": "2020-06-23T20:12:36Z",
    "region": "us-west-2",
    "resources": [
        "arn:aws:ivs:us-west-2:123456789012:stage/AbCdef1G2hij"
    ],
    "detail": {
        "session_id": "st-ZyXwvu1T2s",
        "event_name": "Participant Published",
        "event_time": "2025-11-18T16:40:32Z", 
        "user_id": "Your User Id",
        "participant_id": "xYz1c2d3e4f",
        "replica": true,
        "source_stage_arn": "arn:aws:ivs:us-west-2:123456789012:stage/AbCdef1G2hij",
        "source_session_id": "st-sdfdfdfgdfgh"
    }
}
```

**참가자가 게시 취소함**: 이 이벤트는 참가자가 스테이지에 게시를 중지했을 때 전송됩니다.

```
{
    "version": "0",
    "id": "12345678-1a23-4567-a1bc-1a2b34567890",
    "detail-type": "IVS Stage Update",
    "source": "aws.ivs",
    "account": "123456789012",
    "time": "2020-06-23T20:12:36Z",
    "region": "us-west-2",
    "resources": [
        "arn:aws:ivs:us-west-2:123456789012:stage/AbCdef1G2hij"
    ],
    "detail": {
        "session_id": "st-ZyXwvu1T2s",
        "event_name": "Participant Unpublished",
        "event_time": "2025-11-18T16:40:32Z", 
        "user_id": "Your User Id",
        "participant_id": "xYz1c2d3e4f",
        "replica": true,
        "source_stage_arn": "arn:aws:ivs:us-west-2:123456789012:stage/AbCdef1G2hij",
        "source_session_id": "st-sdfdfdfgdfgh"
    }
}
```

**참가자 게시 오류**: 이 이벤트는 스테이지에 게시하려는 참가자의 시도가 실패했을 때 수신됩니다.

```
{
    "version": "0",
    "id": "12345678-1a23-4567-a1bc-1a2b34567890",
    "detail-type": "IVS Stage Update",
    "source": "aws.ivs",
    "account": "123456789012",
    "time": "2020-06-23T20:12:36Z",
    "region": "us-west-2",
    "resources": [
        "arn:aws:ivs:us-west-2:123456789012:stage/AbCdef1G2hij"
    ],
    "detail": {
        "session_id": "st-ZyXwvu1T2s",
        "event_name": "Participant Publish Error",
        "event_time": "2024-08-13T14:38:17.089061676Z",
        "user_id": "Your User Id",
        "participant_id": "xYz1c2d3e4f",
        "error_code": "BITRATE_EXCEEDED",
        "replica": true,
        "source_stage_arn": "arn:aws:ivs:us-west-2:123456789012:stage/AbCdef1G2hij",
        "source_session_id": "st-sdfdfdfgdfgh"
    }
}
```

**참가자 복제 시작**: 이 이벤트는 참가자 복제가 시작될 때 전송됩니다.

```
{
    "version": "0",
    "id": "12345678-1a23-4567-a1bc-1a2b34567890",
    "detail-type": "IVS Stage Update",
    "source": "aws.ivs",
    "account": "123456789012",
    "time": "2020-06-23T20:12:36Z",
    "region": "us-west-2",
    "resources": [
        "arn:aws:ivs:us-west-2:123456789012:stage/AbCdef1G2hij"
    ],
    "detail": {
        "session_id": "st-ZyXwvu1T2s",
        "event_name": "Participant Replication Start",
        "event_time": "2025-11-18T16:40:32Z", 
        "user_id": "Your User Id",
        "participant_id": "xYz1c2d3e4f",
        "destination_stage_arn": "arn:aws:ivs:us-west-2:123456789012:stage/XYZdef1G2hij",
        "destination_session_id":  "aBC1c2d3e4f"
    }
}
```

**참가자 복제 종료**: 이 이벤트는 참가자 복제가 종료될 때 전송됩니다. 게시자가 게시를 중지했거나 게시자가 게시를 중지하고 재연결 기간이 만료된 경우 StopParticipantReplication API 작업으로 인해 복제가 종료될 수도 있습니다.

```
{
    "version": "0",
    "id": "12345678-1a23-4567-a1bc-1a2b34567890",
    "detail-type": "IVS Stage Update",
    "source": "aws.ivs",
    "account": "123456789012",
    "time": "2020-06-23T20:12:36Z",
    "region": "us-west-2",
    "resources": [
        "arn:aws:ivs:us-west-2:123456789012:stage/AbCdef1G2hij"
    ],
    "detail": {
        "session_id": "st-ZyXwvu1T2s",
        "event_name": "Participant Replication End",
        "event_time": "2025-11-18T16:40:32Z", 
        "user_id": "Your User Id",
        "participant_id": "xYz1c2d3e4f",
        "destination_stage_arn": "arn:aws:ivs:us-west-2:123456789012:stage/XYZdef1G2hij",
        "destination_session_id":  "aBC1c2d3e4f"
    }
}
```

**토큰 교환**: 이 이벤트는 기존 참가자 토큰을 새 참가자 토큰으로 교환할 때 전송되므로 토큰 기능이 업그레이드되거나 다운그레이드되거나 토큰 속성이 업데이트됩니다.

```
{ 
    "version": "0", 
    "id": "12345678-1a23-4567-a1bc-1a2b34567890", 
    "detail-type": "IVS Stage Update", 
    "source": "aws.ivs", 
    "account": "123456789012", 
    "time": "2020-06-23T20:12:36Z", 
    "region": "us-west-2" 
    "resources": [ 
        "arn:aws:ivs:us-west-2:123456789012:stage/AbCdef1G2hij" 
    ], 
    "detail": { 
        "session_id": "st-ZyXwvu1T2s", 
        "event_name": "Token Exchanged", 
        "event_time": "2025-11-12T20:54:53Z", 
        "user_id": "UpdatedUser", 
        "participant_id": "xYz1c2d3e4f", 
        "previous_token": { 
            "capabilities": ["SUBSCRIBE"], 
            "attributes": { 
                "role": "viewer" 
            }, 
            "user_id": "InitialUser", 
            "expiration_time": "2025-11-12T21:54:52Z" 
        }, 
        "new_token": { 
            "capabilities": ["SUBSCRIBE", "PUBLISH"], 
            "attributes": { 
                "role": "moderator" 
            }, 
            "user_id": "UpdatedUser", 
            "expiration_time": "2025-11-12T22:54:52Z" 
        } 
    } 
}
```