# CLI를 통해 CCD 사용

> Follow this workflow to use CCD through the UGS command line interface, such as to authenticate, create buckets, manage entries, and handle releases.

이 섹션에서는 다음 주제를 포함하여 CLI(커맨드 라인 인터페이스)를 통해 CCD(Cloud Content Delivery)를 사용하는 방법에 대한 예제를 제공합니다.

* [인증](#authentication)
* [버킷 생성](#creating-a-bucket)
* [로컬 파일 세트에서 엔트리 생성](#creating-entries-in-the-bucket)
* [릴리스 생성](#creating-a-release)
* [배지 관리](#managing-badges)

> **Note:**
>
> v0.11.0 미만의 CLI 버전에는 `--environment` 또는 `--project` 플래그가 필요하지 않습니다.

## 인증##authentication

API 키를 사용하여 서비스에 로그인합니다. API 키를 찾는 데 도움이 필요하면 [시작하기](./cli.md#get-started) 섹션을 참고하십시오.

*인증*

```powershell
$ ucd auth login XXXXXXXXXXXX
Login successful.
```

`auth info` 커맨드로 로그인했는지 확인합니다.

*로그인 확인*

```powershell
$ ucd auth info
Current user: Joe Smith
```

## 버킷 생성##creating-a-bucket

첫 번째 버킷을 생성합니다. 버킷은 단일 프로젝트와 연결됩니다. 이 예제의 프로젝트 ID는 `e1942cea-12df-4220-aa6d-f8c9c3ab7526`이지만 실제 프로젝트 ID 중 하나를 사용해야 합니다. 프로젝트 ID를 찾는 데 도움이 필요한 경우 [시작하기](./cli.md#get-started) 섹션을 참고하십시오.

이 예제의 프로젝트 ID는 `b5179fae-d9be-4cd4-8afb-7bfdd691eb06`이지만 실제 개발 환경 ID 중 하나를 사용해야 합니다. 프로젝트 환경 및 해당 ID 목록을 찾으려면 대시보드를 방문하여 **Projects** > **Project Settings** > **Environments**로 이동합니다.

이 프로젝트의 버킷(이 시점에서는 비어 있어야 함)을 나열합니다.

*버킷 나열*

```powershell
$ ucd buckets list e1942cea-12df-4220-aa6d-f8c9c3ab7526 --environment=b5179fae-d9be-4cd4-8afb-7bfdd691eb06 
No buckets found for given project and environment.
```

이 프로젝트에 대해 `example_bucket`이라는 버킷을 생성합니다.

*버킷 생성*

```powershell
$ ucd buckets create e1942cea-12df-4220-aa6d-f8c9c3ab7526 example_bucket --environment=b5179fae-d9be-4cd4-8afb-7bfdd691eb06
Created bucket: example_bucket (aee9ee5f-fa01-46d3-a293-731d15f066cf)
```

> **Note:**
>
> [대시보드](./dashboard.md)를 통해서만 버킷 이름을 편집하고 설명을 추가할 수 있습니다.

버킷과 엔트리 이름은 대소문자를 구분합니다.

새로 생성된 버킷을 보려면 이 프로젝트의 버킷을 다시 나열합니다.

*버킷 나열*

```powershell
$ ucd buckets list e1942cea-12df-4220-aa6d-f8c9c3ab7526 --environment=b5179fae-d9be-4cd4-8afb-7bfdd691eb06
Buckets for project (e1942cea-12df-4220-aa6d-f8c9c3ab7526) in environment (b5179fae-d9be-4cd4-8afb-7bfdd691eb06):
- example_bucket (aee9ee5f-fa01-46d3-a293-731d15f066cf)
```

엔트리와 릴리스 생성 작업을 더 쉽게 하려면 개발 환경과 새로 생성된 버킷을 로컬 구성에 저장합니다. (모든 작업에 대해 CLI에 파라미터로 제공하지 마십시오.)

개발 환경 ID를 복사합니다(이 예제에서는 `b5179fae-d9be-4cd4-8afb-7bfdd691eb06`).

```powershell
$ ucd config set environment b5179fae-d9be-4cd4-8afb-7bfdd691eb06 --project=e1942cea-12df-4220-aa6d-f8c9c3ab7526
Successfully switched to environment b5179fae-d9be-4cd4-8afb-7bfdd691eb06.
Currently active project: e1942cea-12df-4220-aa6d-f8c9c3ab7526.
```

위의 버킷 생성 메시지에서 버킷 ID(버킷 이름 아님)를 복사합니다(이 예제에서는 `aee9ee5f-fa01-46d3-a293-731d15f066cf`).

*구성 설정*

```powershell
$ ucd config set bucket aee9ee5f-fa01-46d3-a293-731d15f066cf
Successfully switched to bucket aee9ee5f-fa01-46d3-a293-731d15f066cf.
Currently active project: e1942cea-12df-4220-aa6d-f8c9c3ab7526.
Currently active environment: b5179fae-d9be-4cd4-8afb-7bfdd691eb06.
Currently active bucket: aee9ee5f-fa01-46d3-a293-731d15f066cf (example_bucket).
```

CCD는 사용자가 지정한 개발 환경 및 버킷의 엔트리 및 릴리스와 관련된 모든 커맨드를 자동으로 수행합니다.

## 버킷에 엔트리 생성##creating-entries-in-the-bucket

새로 생성된 버킷(비어 있어야 함)의 엔트리를 나열합니다.

*엔트리 나열*

```powershell
$ ucd entries list
No Entries found for current bucket.
```

로컬 폴더의 모든 파일을 동기화합니다. 이 예제에서 로컬 폴더에는 콘텐츠로 생성된 [에셋 번들](https://docs.unity3d.com/Manual/AssetBundlesIntro.html)이 포함되어 있습니다.

*파일 동기화*

```powershell
$ ucd entries sync ./ServerData/StandaloneOSX
Calculating...
Added Entry: catalog_2019.07.30.18.24.34.hash
Added Entry: catalog_2019.07.30.18.24.34.json
Added Entry: remotedemodata_green.bundle
Added Entry: remotedemodata_mat1.bundle
Added Entry: remotedemodata_sphere.bundle
Added Entry: remotedemodata_unitylogo.bundle
Added Entry: remotedemodata_unitylogoprefab.bundle
Added Entry: remotedemodata_scenes_scene2.bundle
Added Entry: remotedemodata_scenes_scene.bundle
Added Entry: spaceshooterdata_done_asteroid01.bundle
Added Entry: spaceshooterdata_done_asteroid02.bundle
Added Entry: spaceshooterdata_done_asteroid03.bundle
Added Entry: spaceshooterdata_done_bolt-enemy.bundle
Added Entry: spaceshooterdata_done_bolt.bundle
Added Entry: spaceshooterdata_done_enemyship.bundle
Added Entry: spaceshooterdata_done_player.bundle
Added Entry: spaceshooterdata_engines_enemy.bundle
Added Entry: spaceshooterdata_engines_player.bundle
Added Entry: spaceshooterdata_explosion_asteroid.bundle
Added Entry: spaceshooterdata_explosion_enemy.bundle
Added Entry: spaceshooterdata_explosion_player.bundle
Added Entry: spaceshooterdata_starfield.bundle
Complete! Bytes uploaded: 5346781
```

이를 통해 파일이 버킷에 엔트리로 추가됩니다. 버킷의 콘텐츠를 나열하고 각 엔트리에 대한 몇 가지 기본 정보를 확인할 수 있습니다.

*버킷의 콘텐츠 나열*

```powershell
$ ucd entries list
22 entries for current bucket (aee9ee5f-fa01-46d3-a293-731d15f066cf):
2019-08-21 14:27:03       167915 spaceshooterdata_starfield.bundle
2019-08-21 14:27:00       573539 spaceshooterdata_explosion_player.bundle
2019-08-21 14:26:56       412235 spaceshooterdata_explosion_enemy.bundle
2019-08-21 14:26:52       382630 spaceshooterdata_explosion_asteroid.bundle
2019-08-21 14:26:49       177018 spaceshooterdata_engines_player.bundle
2019-08-21 14:26:45       157215 spaceshooterdata_engines_enemy.bundle
2019-08-21 14:26:42      1085518 spaceshooterdata_done_player.bundle
2019-08-21 14:26:38      1070297 spaceshooterdata_done_enemyship.bundle
2019-08-21 14:26:34        27178 spaceshooterdata_done_bolt.bundle
2019-08-21 14:26:31        28362 spaceshooterdata_done_bolt-enemy.bundle
2019-08-21 14:26:28       231658 spaceshooterdata_done_asteroid03.bundle
2019-08-21 14:26:24       221450 spaceshooterdata_done_asteroid02.bundle
2019-08-21 14:26:20       227842 spaceshooterdata_done_asteroid01.bundle
2019-08-21 14:26:17        23016 remotedemodata_scenes_scene.bundle
2019-08-21 14:26:13        23064 remotedemodata_scenes_scene2.bundle
2019-08-21 14:26:10        10568 remotedemodata_unitylogoprefab.bundle
2019-08-21 14:26:07       462522 remotedemodata_unitylogo.bundle
2019-08-21 14:26:03         7864 remotedemodata_sphere.bundle
2019-08-21 14:26:00         6320 remotedemodata_mat1.bundle
2019-08-21 14:25:57         6320 remotedemodata_green.bundle
2019-08-21 14:25:53        44218 catalog_2019.07.30.18.24.34.json
2019-08-21 14:25:50           32 catalog_2019.07.30.18.24.34.hash
```

특정 엔트리에 대한 자세한 정보를 가져오려면 `entries info` 커맨드를 엔트리 경로와 함께 사용합니다.

*엔트리 정보 가져오기*

```powershell
$ ucd entries info spaceshooterdata_starfield.bundle`
Entry Info:
Path: spaceshooterdata_starfield.bundle
Id: 8ac46783-be01-4a47-b23e-74233fc7cc09
Last Modified: 2019-08-21 14:27:03
Content Size: 167915
Content Hash: 4a3ad5b69bd489699d1909e8868a7cb1
Content Type: application/octet-stream
Content Link: …
Labels:
Metadata:
Current Version: aa0304db-fd9f-4772-9549-dfeb44cc6d6f
```

이제 게임 클라이언트는 엔트리와 연결된 경로를 사용하여 버킷의 개별 파일에 대한 콘텐츠를 요청할 수 있습니다. 모든 게임 클라이언트 요청을 `<project_guid>.client-api.unity3dusercontent.com`의 프로젝트별 하위 도메인에 수행합니다. URL은 모두 요청 경로에서 `/client_api/v1/`로 시작됩니다. 이러한 클라이언트 요청에는 인증이 필요하지 않습니다.

`spaceshooterdata_starfield.bundle`과 같은 엔트리의 콘텐츠를 경로별로 가져오려면 다음을 입력합니다.

`https://<project_guid>.client-api.unity3dusercontent.com/client_api/v1/buckets/aee9ee5f-fa01-46d3-a293-731d15f066cf/entry_by_path/content/?path=spaceshooterdata_starfield.bundle`

또는 엔트리의 콘텐츠를 엔트리 ID별로 가져오려면 다음을 입력합니다.

`https://<project_guid>.client-api.unity3dusercontent.com/client_api/v1/buckets/aee9ee5f-fa01-46d3-a293-731d15f066cf/entries/8ac46783-be01-4a47-b23e-74233fc7cc09/content/`

## 릴리스 생성##creating-a-release

엔트리의 현재 상태에서 릴리스를 생성합니다.

*릴리스 생성*

```powershell
$ ucd releases create -n "This is a sample note"
Created release (#1) in bucket (aee9ee5f-fa01-46d3-a293-731d15f066cf).
Id: 80653663-eb39-45e7-9323-e34b23df0d75
Created: 2019-08-21 14:27:30
...
```

이를 통해 나중에 해당 엔트리를 업데이트하거나 제거하더라도 콘텐츠를 요청할 때 해당 엔트리의 정확한 버전을 사용할 수 있습니다.

> **Note:**
>
> `-n` 플래그를 사용하여 릴리스를 생성하는 동안 노트를 추가할 수 있지만 이후에 [대시보드](./dashboard.md#releases)를 통해서만 편집할 수 있습니다.

릴리스에 대한 자세한 정보를 가져오려면 `releases info` 커맨드를 사용하고 방금 생성한 릴리스의 ID를 제공합니다.

*릴리스 정보 가져오기*

```powershell
$ ucd releases info 80653663-eb39-45e7-9323-e34b23df0d75
Release #1:
Id: 80653663-eb39-45e7-9323-e34b23df0d75
Created: 2019-08-21 14:27:30
Content Size: 123456
Content Hash: b62343cb3582a7de1286dd3cf23c3592
Notes: This is a sample note
Metadata:
Entries:
- remotedemodata_scenes_scene2.bundle  (version: d7c69bc0-5c0b-4625-8a7d-94a4972aa236)
- remotedemodata_unitylogo.bundle  (version: 97d3659f-0b74-403a-be67-02641ce2dc91)
- spaceshooterdata_done_enemyship.bundle  (version: edcedc81-80b6-4006-9732-0444898fcffa)
- remotedemodata_unitylogoprefab.bundle  (version: 4edfa2be-7fae-44c9-bb45-f601cc1130db)
- spaceshooterdata_done_bolt-enemy.bundle  (version: ef36bfa8-8b24-4b81-a329-b3fad0a0939b)
...
```

이 버킷에서 생성한 모든 릴리스 목록을 가져오려면 다음을 입력합니다.

*버킷의 릴리스 나열*

```powershell
$ ucd releases list
Releases for current bucket (aee9ee5f-fa01-46d3-a293-731d15f066cf):
2019-08-21 14:27:30  #1 (80653663-eb39-45e7-9323-e34b23df0d75)
```

이제 이 릴리스에 포함된 콘텐츠를 직접 참조할 수 있습니다. 이렇게 하면 나중에 버킷에서 엔트리를 변경하더라도 CCD가 릴리스를 생성하는 데 사용하는 정확한 콘텐츠 세트를 얻을 수 있습니다.

`spaceshooterdata_starfield.bundle`과 같은 엔트리의 콘텐츠를 경로별로 가져오려면 다음을 입력합니다.

`https://<project_guid>.client-api.unity3dusercontent.com/client_api/v1/buckets/aee9ee5f-fa01-46d3-a293-731d15f066cf/releases/80653663-eb39-45e7-9323-e34b23df0d75/entry_by_path/content/?path=spaceshooterdata_starfield.bundle`

또는 엔트리의 콘텐츠를 엔트리 ID별로 가져오려면 다음을 입력합니다.

`https://<project_guid>.client-api.unity3dusercontent.com/client_api/v1/buckets/aee9ee5f-fa01-46d3-a293-731d15f066cf/releases/80653663-eb39-45e7-9323-e34b23df0d75/entries/8ac46783-be01-4a47-b23e-74233fc7cc09/content/`

버킷의 최신 릴리스에 해당하는 콘텐츠를 요청할 수도 있으므로 CCD가 새 릴리스를 생성할 때마다 클라이언트가 변경할 필요가 없습니다. 이렇게 하려면 `release_by_badge` 경로를 사용하도록 요청을 업데이트하고 `latest`의 배지 이름을 지정합니다([배지 관리](#managing-badges) 참고). 예를 들면 다음과 같습니다.

`https://<project_guid>.client-api.unity3dusercontent.com/client_api/v1/buckets/aee9ee5f-fa01-46d3-a293-731d15f066cf/release_by_badge/latest/entry_by_path/content/?path=spaceshooterdata_starfield.bundle`

## 배지 관리##managing-badges

릴리스를 생성한 후 릴리스를 고유하게 식별하는 배지를 적용할 수 있습니다. 배지는 버킷 내의 단일 릴리스만 가리킬 수 있지만 릴리스 간에 배지를 이동할 수 있습니다. 런타임 시 특정 릴리스 ID 대신 배지 이름을 사용하여 콘텐츠를 쿼리할 수 있으므로 워크플로의 유연성이 향상됩니다.

예를 들어 QA 팀이 사용할 최신 릴리스에 `qa_latest`라는 배지를 적용하고 프로세스(수동 또는 자동)의 일부로 해당 배지를 각 새 릴리스로 이동할 수 있습니다.

[릴리스 생성](#creating-a-release)에서 생성한 릴리스에 `my_first_badge`라는 배지를 추가하려면 `badge_name` 및 `release_ID`를 인수로 사용하여 다음을 입력합니다.

*배지 추가*

```powershell
$ ucd badges add my_first_badge 80653663-eb39-45e7-9323-e34b23df0d75
Added badge 'my_first_badge' to release (80653663-eb39-45e7-9323-e34b23df0d75).
```

이 버킷에 적용한 모든 배지를 나열하려면 다음을 수행합니다.

*버킷의 배지 나열*

```powershell
$ ucd badges list
Badges for current bucket (aee9ee5f-fa01-46d3-a293-731d15f066cf):
2020-01-07 12:55:41  my_first_badge  (80653663-eb39-45e7-9323-e34b23df0d75)
```

배지가 참조하는 릴리스와 관련된 콘텐츠를 다운로드할 준비가 되었습니다. 엔트리 ID로 콘텐츠를 직접 다운로드하는 것과 비슷한 방식으로 이 작업을 수행할 수 있습니다.

`spaceshooterdata_starfield.bundle`과 같은 엔트리의 콘텐츠를 경로별로 가져오려면 다음을 입력합니다.

`https://<project_guid>.client-api.unity3dusercontent.com/client_api/v1/buckets/aee9ee5f-fa01-46d3-a293-731d15f066cf/release_by_badge/my_first_badge/entry_by_path/content/?path=spaceshooterdata_starfield.bundle`

또는 엔트리의 콘텐츠를 엔트리 ID별로 가져오려면 다음을 입력합니다.

`https://<project_guid>.client-api.unity3dusercontent.com/client_api/v1/buckets/aee9ee5f-fa01-46d3-a293-731d15f066cf/release_by_badge/my_first_badge/entries/8ac46783-be01-4a47-b23e-74233fc7cc09/content/`
