

# AWS CLI를 사용한 MediaLive 예시
<a name="cli_medialive_code_examples"></a>

다음 코드 예시는 MediaLive와 함께 AWS Command Line Interface를 사용하여 작업을 수행하고 일반적인 시나리오를 구현하는 방법을 보여줍니다.

*작업*은 대규모 프로그램에서 발췌한 코드이며 컨텍스트에 맞춰 실행해야 합니다. 작업은 개별 서비스 함수를 직접적으로 호출하는 방법을 보여주며 관련 시나리오의 컨텍스트에 맞는 작업을 볼 수 있습니다.

각 예시에는 전체 소스 코드에 대한 링크가 포함되어 있으며, 여기에서 컨텍스트에 맞춰 코드를 설정하고 실행하는 방법에 대한 지침을 찾을 수 있습니다.

**Topics**
+ [작업](#actions)

## 작업
<a name="actions"></a>

### `create-channel`
<a name="medialive_CreateChannel_cli_topic"></a>

다음 코드 예시에서는 `create-channel`의 사용 방법을 보여줍니다.

**AWS CLI**  
**채널 생성**  
다음 `create-channel` 예시에서는 지정하려는 파라미터가 포함된 JSON 파일을 전달하여 채널을 생성합니다.  
이 예시의 채널은 비디오, 오디오 및 임베디드 캡션이 포함된 소스에 연결하는 HLS PULL 입력을 수집합니다. 채널은 Akamai 서버를 대상으로 하는 하나의 HLS 출력 그룹을 생성합니다. 출력 그룹에는 두 개의 출력이 포함되어 있습니다. 하나는 H.265 비디오 및 AAC 오디오용이고 다른 하나는 Web-VTT 캡션용이며 영어로만 제공됩니다.  
이 예시 채널의 JSON에는 HLS PULL 입력을 사용하고 Akamai를 대상으로 하는 HLS 출력 그룹을 생성하는 채널에 필요한 최소 파라미터가 포함됩니다. JSON에는 다음과 같은 주요 섹션이 포함되어 있습니다.  
`InputAttachments`: 오디오에 대한 소스 하나와 캡션에 대한 소스 하나를 지정합니다. 비디오 선택기는 지정하지 않습니다. 즉, MediaLive가 소스에서 찾은 첫 번째 비디오를 추출합니다. `Destinations`: 이 채널의 단일 출력 그룹에 대한 두 개의 IP 주소(URL)를 포함합니다. 이러한 주소에는 암호가 필요합니다. `EncoderSettings`: 하위 섹션을 포함합니다. `AudioDescriptions`: InputAttachments의 소스를 사용하고 AAC 형식의 오디오를 생성하는 하나의 오디오 출력 자산이 채널에 포함되어 있음을 명시합니다. `CaptionDescriptions`: InputAttachments의 소스를 사용하고 Web-VTT 형식의 캡션을 생성하는 하나의 캡션 출력 자산이 포함되어 있음을 명시합니다. `VideoDescriptions`: 지정된 해상도를 가진 하나의 비디오 출력 자산이 채널에 포함되어 있음을 명시합니다. `OutputGroups`: 출력 그룹을 지정합니다. 이 예시에는 `Akamai`라는 리소스 그룹이 하나 있습니다. 연결은 HLS PUT를 사용하여 구축됩니다. 출력 그룹에는 출력 두 개가 포함되어 있습니다. 한 가지 출력은 비디오 자산(`Video_high`)과 오디오 자산(`Audio_EN`)입니다. 하나의 출력은 캡션 자산(`WebVTT_EN`)입니다.  
이 예시에서는 일부 파라미터에 값이 없거나 중첩된 빈 파라미터가 포함되어 있습니다. 예를 들어 `Video_and_audio` 출력의 OutputSettings에는 빈 파라미터 M3u8Settings로 끝나는 여러 중첩 파라미터가 포함되어 있습니다. 이 파라미터를 포함해야 하지만 하위 파라미터는 하나, 여러 개 또는 모두 생략할 수 있습니다. 즉, 하위 파라미터가 기본값을 사용하거나 null이 됩니다.  
이 예시 채널에 적용되지만 이 파일에 지정되지 않은 모든 파라미터는 기본값을 사용하거나 null로 설정되거나 MediaLive에서 생성한 고유한 값을 사용합니다.  

```
aws medialive create-channel \
    --cli-input-json file://channel-in-hls-out-hls-akamai.json
```
`channel-in-hls-out-hls-akamai.json`의 콘텐츠:  

```
{
    "Name": "News_West",
    "RoleArn": "arn:aws:iam::111122223333:role/MediaLiveAccessRole",
    "InputAttachments": [
        {
            "InputAttachmentName": "local_news",
            "InputId": "1234567",
            "InputSettings": {
                "AudioSelectors": [
                    {
                        "Name": "English-Audio",
                        "SelectorSettings": {
                            "AudioLanguageSelection": {
                                "LanguageCode": "EN"
                            }
                        }
                    }
                ],
                "CaptionSelectors": [
                    {
                        "LanguageCode": "ENE",
                        "Name": "English_embedded"
                    }
                ]
            }
        }
    ],
    "Destinations": [
        {
            "Id": "akamai-server-west",
            "Settings": [
                {
                    "PasswordParam": "/medialive/examplecorp1",
                    "Url": "http://203.0.113.55/news/news_west",
                    "Username": "examplecorp"
                },
                {
                    "PasswordParam": "/medialive/examplecorp2",
                    "Url": "http://203.0.113.82/news/news_west",
                    "Username": "examplecorp"
                }
            ]
        }
    ],
    "EncoderSettings": {
        "AudioDescriptions": [
            {
                "AudioSelectorName": "English-Audio",
                "CodecSettings": {
                    "AacSettings": {}
                },
                "Name": "Audio_EN"
            }
        ],
        "CaptionDescriptions": [
            {
                "CaptionSelectorName": "English_embedded",
                "DestinationSettings": {
                    "WebvttDestinationSettings": {}
                },
                "Name": "WebVTT_EN"
            }
        ],
        "VideoDescriptions": [
            {
                "Height": 720,
                "Name": "Video_high",
                "Width": 1280
            }
        ],
        "OutputGroups": [
            {
                "Name": "Akamai",
                "OutputGroupSettings": {
                    "HlsGroupSettings": {
                        "Destination": {
                            "DestinationRefId": "akamai-server-west"
                        },
                        "HlsCdnSettings": {
                            "HlsBasicPutSettings": {}
                        }
                    }
                },
                "Outputs": [
                    {
                        "AudioDescriptionNames": [
                            "Audio_EN"
                        ],
                        "OutputName": "Video_and_audio",
                        "OutputSettings": {
                            "HlsOutputSettings": {
                                "HlsSettings": {
                                    "StandardHlsSettings": {
                                        "M3u8Settings": {}
                                    }
                                },
                                "NameModifier": "_1"
                            }
                        },
                        "VideoDescriptionName": "Video_high"
                    },
                    {
                        "CaptionDescriptionNames": [
                            "WebVTT_EN"
                        ],
                        "OutputName": "Captions-WebVTT",
                        "OutputSettings": {
                            "HlsOutputSettings": {
                                "HlsSettings": {
                                    "StandardHlsSettings": {
                                        "M3u8Settings": {}
                                    }
                                },
                                "NameModifier": "_2"
                            }
                        }
                    }
                ]
            }
        ],
        "TimecodeConfig": {
            "Source": "EMBEDDED"
        }
    }
}
```
**출력:**  
출력은 JSON 파일의 내용과 다음 값을 반복합니다. 모든 파라미터는 알파벳순으로 정렬됩니다.  
채널용 `ARN`입니다. ARN의 마지막 부분은 고유한 채널 ID입니다. `EgressEndpoints`는 PUSH 입력에만 사용되므로 이 예시 채널에서는 비어 있습니다. 적용하면 콘텐츠가 푸시되는 MediaLive의 주소가 표시됩니다. `OutputGroups`, `Outputs`. 포함되지 않았지만 이 채널에 관련된 파라미터를 포함하여 출력 그룹 및 출력에 대한 모든 파라미터가 표시됩니다. 파라미터가 비어 있을 수 있으며(이 채널 구성에서 파라미터 또는 특성이 비활성화되었음을 의미할 수 있음) 또는 적용될 기본값을 표시할 수 있습니다. `LogLevel`은 기본값(DISABLED)으로 설정되어 있습니다. `Tags`는 기본값(null)으로 설정되어 있습니다. `PipelinesRunningCount` 및 `State`는 채널의 현재 상태를 보여줍니다.  
자세한 내용은 *AWS Elemental MediaLive 사용자 안내서*의 [채널을 처음부터 새로 생성](https://docs.aws.amazon.com/medialive/latest/ug/creating-channel-scratch.html)을 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [CreateChannel](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/medialive/create-channel.html)을 참조하세요.

### `create-input`
<a name="medialive_CreateInput_cli_topic"></a>

다음 코드 예시에서는 `create-input`의 사용 방법을 보여줍니다.

**AWS CLI**  
**입력 생성**  
다음 `create-input` 예시에서는 이 유형의 입력에 적용되는 파라미터가 포함된 JSON 파일을 전달하여 `HLS PULL` 입력을 생성합니다. 이 예시 입력의 JSON은 수집에서 중복성을 지원하기 위해 입력에 두 개의 소스(주소)를 지정합니다. 이러한 주소에는 암호가 필요합니다.  

```
aws medialive create-input \
    --cli-input-json file://input-hls-pull-news.json
```
`input-hls-pull-news.json`의 콘텐츠:  

```
{
    "Name": "local_news",
    "RequestId": "cli000059",
    "Sources": [
            {
                    "Url": "https://203.0.113.13/newschannel/anytownusa.m3u8",
                    "Username": "examplecorp",
                    "PasswordParam": "/medialive/examplecorp1"
            },
       {
                    "Url": "https://198.51.100.54/fillervideos/oceanwaves.mp4",
                    "Username": "examplecorp",
                    "PasswordParam": "examplecorp2"
            }
    ],
    "Type": "URL_PULL"
}
```
**출력:**  
출력은 JSON 파일의 내용과 다음 값을 반복합니다. 모든 파라미터는 알파벳순으로 정렬됩니다.  
`Arn`: 입력 ARN입니다. ARN의 마지막 부분은 고유 입력 ID입니다. `Attached Channels`: 새로 생성된 입력에 대해 항상 비어 있습니다. `Destinations`: PUSH 입력에만 사용되므로 이 예시에서는 비어 있습니다. `Id`: 입력 ID입니다. ARN의 ID와 동일합니다. `MediaConnectFlows`: MediaConnect 유형의 입력에만 사용되므로 이 예시에서는 비어 있습니다. `SecurityGroups`: PUSH 입력에만 사용되므로 비어 있습니다. `State`: 이 입력의 상태입니다. `Tags`: 비어 있습니다(이 파라미터의 기본값).  
자세한 내용은 *AWS Elemental MediaLive 사용자 안내서*의 [입력 생성](https://docs.aws.amazon.com/medialive/latest/ug/create-input.html)을 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [CreateInput](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/medialive/create-input.html)을 참조하세요.