

# IVS 서버 측 구성 시작하기
<a name="ssc-getting-started"></a>

이 문서에서는 IVS 서버 측 구성 시작과 관련된 단계를 안내합니다.

## 사전 조건
<a name="ssc-getting-started-prerequisites"></a>

서버 측 구성을 사용하려면 활성 게시자가 있는 스테이지가 있어야 하며 IVS 채널 및/또는 S3 버킷을 구성 대상으로 사용해야 합니다.

S3 버킷을 생성하려면 S3 설명서에서 [버킷 생성 방법](https://docs.aws.amazon.com/AmazonS3/latest/userguide/creating-bucket.html)을 참조하세요. S3 버킷이 IVS 스테이지와 동일한 AWS 리전에 있어야 합니다.

**중요**: 기존 S3 버킷을 사용하는 경우:
+ **객체 소유권** 설정은 **버킷 소유자 적용** 또는 **버킷 소유자 기본 설정**이어야 합니다.
+ **기본 암호화** 설정은 **Amazon S3 관리형 키를 사용한 서버 측 암호화(SSE-S3)**여야 합니다.

자세한 내용은 S3 설명서에서 [객체 소유권 제어](https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html) 및 [암호화로 데이터 보호](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingEncryption.html)를 참조하세요.

## API 지침
<a name="ssc-getting-started-api-instructions"></a>

아래에서는 참가자가 게시할 때 EventBridge 이벤트를 사용하여 IVS 채널에 스테이지를 브로드캐스트하는 구성을 시작하는 한 가지 가능한 워크플로를 설명합니다. 그 대신 자체 앱 로직에 따라 구성을 시작하고 중지할 수 있습니다. 서버 측 구성을 사용하여 스테이지를 S3 버킷에 직접 레코드하는 방법을 보여주는 또 다른 예제는 [복합 레코딩](rt-composite-recording.md)을 참조하세요.

1. IVS 채널을 생성하세요. [Amazon IVS Low-Latency Streaming 시작하기](https://docs.aws.amazon.com//ivs/latest/LowLatencyUserGuide/getting-started.html)를 참조하세요.

1. 각 게시자를 위한 IVS 스테이지와 참가자 토큰을 생성하세요.

1. [EncoderConfiguration](https://docs.aws.amazon.com//ivs/latest/RealTimeAPIReference/API_EncoderConfiguration.html)을 생성하세요.

1. 스테이지에 참여하고 스테이지에 게시하세요. (실시간 스트리밍 Broadcast SDK 가이드의 "게시 및 구독" 섹션: [웹](https://docs.aws.amazon.com//ivs/latest/RealTimeUserGuide/web-publish-subscribe.html), [Android](https://docs.aws.amazon.com//ivs/latest/RealTimeUserGuide/android-publish-subscribe.html), [iOS](https://docs.aws.amazon.com//ivs/latest/RealTimeUserGuide/ios-publish-subscribe.html)를 참조하세요.)

1. 참가자가 게시한 EventBridge 이벤트를 받으면 원하는 레이아웃 구성으로 [StartComposition](https://docs.aws.amazon.com//ivs/latest/RealTimeAPIReference/API_StartComposition.html)을 직접적으로 호출합니다.

1. 몇 초간 기다린 후 채널 재생에서 합성된 보기를 확인하세요.

![\[참가자가 게시할 때 EventBridge 이벤트를 사용하여 구성을 시작하는 서버 측 구성 워크플로입니다.\]](http://docs.aws.amazon.com/ko_kr/ivs/latest/RealTimeUserGuide/images/ssc_Workflow.png)


**참고:** 스테이지에 있는 게시자 참가자가 60초 동안 활동이 없으면 구성이 자동 종료됩니다. 이때 구성이 종료되고 `STOPPED` 상태로 전환합니다. `STOPPED` 상태로 몇 분 지나면 구성을 자동으로 삭제합니다.

## CLI 지침
<a name="ssc-getting-started-cli"></a>

AWS CLI를 사용하는 것은 고급 옵션이며, 먼저 시스템에 CLI를 다운로드하고 구성해야 합니다. 자세한 내용은 [AWS 명령줄 인터페이스 사용 설명서](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)를 참조하세요.

이제 CLI를 사용하여 리소스를 생성하고 관리할 수 있습니다. 구성 작업은 `ivs-realtime` 네임스페이스 아래에 있습니다.

### EncoderConfiguration 리소스 생성
<a name="ssc-getting-started-cli-create-encoderconfiguration"></a>

EncoderConfiguration은 생성된 비디오의 형식(높이, 너비, 비트레이트 및 기타 스트리밍 파라미터)을 사용자 지정할 수 있는 객체입니다. 다음 단계에서 설명하는 대로 Composition 작업을 직접적으로 호출할 때마다 EncoderConfiguration을 재사용할 수 있습니다.

아래 명령은 비디오 비트레이트, 프레임 속도 및 해상도와 같은 서버 측 비디오 구성 파라미터를 구성하는 EncoderConfiguration 리소스를 생성합니다.

```
aws ivs-realtime create-encoder-configuration --name "MyEncoderConfig" --video "bitrate=2500000,height=720,width=1280,framerate=30"
```

다음과 같이 응답합니다.

```
{
"encoderConfiguration": {
  "arn": "arn:aws:ivs:us-east-1:927810967299:encoder-configuration/9W59OBY2M8s4",
  "name": "MyEncoderConfig",
  "tags": {},
  "video": {
	 "bitrate": 2500000,
	 "framerate": 30,
	 "height": 720,
	 "width": 1280
    }
  }
}
```

### 구성 시작
<a name="ssc-getting-started-cli-start-mediapublish"></a>

위 응답에 제공된 EncoderConfiguration ARN을 사용하여 구성 리소스를 생성합니다.

**그리드 레이아웃 예제**

```
aws ivs-realtime start-composition --stage-arn "arn:aws:ivs:us-east-1:927810967299:stage/8faHz1SQp0ik" --destinations '[{"channel": {"channelArn": "arn:aws:ivs:us-east-1:927810967299:channel/DOlMW4dfMR8r", "encoderConfigurationArn": "arn:aws:ivs:us-east-1:927810967299:encoder-configuration/9W59OBY2M8s4"}}]' --layout '{"grid":{"participantOrderAttribute":"order","featuredParticipantAttribute":"isFeatured","videoFillMode":"COVER","gridGap":0}}'
```

**PiP 레이아웃 예제**

```
aws ivs-realtime start-composition --stage-arn "arn:aws:ivs:us-east-1:927810967299:stage/8faHz1SQp0ik" --destinations '[{"channel": {"channelArn": "arn:aws:ivs:us-east-1:927810967299:channel/DOlMW4dfMR8r", "encoderConfigurationArn": "arn:aws:ivs:us-east-1:927810967299:encoder-configuration/DEkQHWPVaOwO"}}]' --layout '{"pip":{"participantOrderAttribute":"priority","pipParticipantAttribute":"isPip","pipOffset":10,"pipPosition":"TOP_RIGHT"}}'
```

**참고:** [이 도구](https://composition.ivsdemos.com/)를 사용하여 레이아웃 선택 항목에 따라 `--layout` 구성을 더 쉽게 생성할 수 있습니다.

응답은 구성이 `STARTING` 상태로 생성되었음을 보여줍니다. 구성이 구성을 게시하기 시작하면 상태가 `ACTIVE`로 전환됩니다. (ListCompositions 또는 GetComposition 작업을 직접적으로 호출하여 상태를 확인할 수 있습니다.)

구성이 `ACTIVE`가 되면 IVS 채널에서 ListCompositions를 사용하여 IVS 스테이지의 복합 보기를 볼 수 있습니다.

```
aws ivs-realtime list-compositions
```

다음과 같이 응답합니다.

```
{
"compositions": [
  {
	 "arn": "arn:aws:ivs:us-east-1:927810967299:composition/YVoaXkKdEdRP",
	 "destinations": [
		{
		   "id": "bD9rRoN91fHU",
		   "startTime": "2023-09-21T15:38:39+00:00",
		   "state": "ACTIVE"
		}
	 ],
	 "stageArn": "arn:aws:ivs:us-east-1:927810967299:stage/8faHz1SQp0ik",
	 "startTime": "2023-09-21T15:38:37+00:00",
	 "state": "ACTIVE",
	 "tags": {}
    }
  ]
}
```

**참고**: 구성을 계속 유지하려면 게시자 참가자가 스테이지에 적극적으로 게시하도록 해야 합니다. 자세한 내용은 실시간 스트리밍 Broadcast SDK 가이드의 "게시 및 구독" 섹션([웹](https://docs.aws.amazon.com//ivs/latest/RealTimeUserGuide/web-publish-subscribe.html), [Android](https://docs.aws.amazon.com//ivs/latest/RealTimeUserGuide/android-publish-subscribe.html), [iOS](https://docs.aws.amazon.com//ivs/latest/RealTimeUserGuide/ios-publish-subscribe.html))을 참조하세요. 각 참가자에 대해 별도의 스테이지 토큰을 생성해야 합니다.