기술 자료

지원

Cloud Code

Cloud Code

HTTP API

Manage Cloud Code scripts using raw HTTP APIs and the Admin API.
읽는 시간 2분최근 업데이트: 한 달 전

원시 HTTP API를 사용하여 Cloud Code 스크립트를 관리할 수 있습니다.

API 사용

  • 관리자 API 기술 자료에는 스크립트 생성, 읽기, 업데이트, 삭제 등의 관리자 작업이 자세히 설명되어 있습니다.
  • 클라이언트 API 기술 자료에는 스크립트 실행을 비롯한 클라이언트 측 작업이 자세히 설명되어 있습니다.
두 API 기술 자료 모두 인증, 엔드포인트, 요청, 응답 포맷에 대한 정보와 예시를 소개합니다. OpenAPI 포맷으로 기술 자료를 다운로드하여 직접 자동화를 설정하는 데 활용할 수 있습니다. 관리자 API를 사용하려면 서비스 계정을 사용하여 인증해야 합니다.

인증 헤더

요청을 인증하려면 기본 인증)을 사용합니다. 서비스 계정을 생성하고
<KEY_ID>:<SECRET_KEY>
를 base64로 인코딩하여 해당 값을
Authorization
헤더 값으로 사용합니다.
--header 'Authorization: Basic <SERVICE_ACCOUNT_CREDENTIALS_ENCODED>' \

스크립트 배포

다음 요청을 전송하여 스크립트를 생성할 수 있습니다.
curl 'https://services.api.unity.com/cloud-code/v1/projects/<PROJECT_ID>/environments/<ENVIRONMENT_ID>/scripts' \--header 'Content-Type: application/json' \--header 'Authorization: Basic <SERVICE_ACCOUNT_CREDENTIALS_ENCODED>' \--data '{ "name": "test-script", "type": "API", "code": "module.exports = () => {return \"Result from standalone API script\";}", "language": "JS"}'
게임 클라이언트에서 스크립트를 사용하려면 다음과 같이 스크립트를 퍼블리시해야 합니다.
curl --request POST 'https://services.api.unity.com/cloud-code/v1/projects/<PROJECT_ID>/environments/<ENVIRONMENT_ID>/scripts/<SCRIPT_NAME>/publish' \--header 'Authorization: Basic <SERVICE_ACCOUNT_CREDENTIALS_ENCODED>'
스크립트를 퍼블리시할 때마다 스크립트 버전의 숫자가 늘어납니다. 성공적인 응답의 예시는 다음과 같습니다.
{ "version": 1, "datePublished": "2023-06-23T10:39:20Z"}
마지막 퍼블리시 이후 변경 사항이 없는 스크립트는 퍼블리시할 수 없습니다.

스크립트 업데이트

다음 요청을 전송하여 스크립트 코드, 파라미터, 또는 둘 다 업데이트할 수 있습니다.
curl --request PATCH 'https://services.api.unity.com/cloud-code/v1/projects/<PROJECT_ID>/environments/<ENVIRONMENT_ID>/scripts/<SCRIPT_NAME>' \--header 'Content-Type: application/json' \--header 'Authorization: Basic <SERVICE_ACCOUNT_CREDENTIALS_ENCODED>' \--data '{ "params": [ { "name": "parameter", "type": "STRING", "required": false } ], "code": "module.exports = () => {return \"Updated result from standalone API script\";}"}'
업데이트된 버전의 스크립트를 게임 클라이언트에서 사용하려면, 스크립트를 다시 퍼블리시해서 버전 2를 생성해야 합니다.
{ "version": 2, "datePublished": "2023-06-23T10:40:00Z"}

스크립트 롤백

스크립트를 퍼블리시했는데 새로운 버전이 마음에 들지 않으면, 지정된 버전 번호로 요청을 전송하여 이전 버전으로 롤백할 수 있습니다.
curl --request POST 'https://services.api.unity.com/cloud-code/v1/projects/<PROJECT_ID>/environments/<ENVIRONMENT_ID>/scripts/<SCRIPT_NAME>/publish' \--header 'Content-Type: application/json' \--header 'Authorization: Basic <SERVICE_ACCOUNT_CREDENTIALS_ENCODED>'--data '{ "version": 1}'
그러면 다음과 같이 첫 번째 스크립트 버전이 버전 3으로 다시 퍼블리시됩니다.
{ "version": 3, "datePublished": "2023-06-23T10:50:00Z"}

스크립트 검색

다음 요청을 전송하면 스크립트의 콘텐츠를 확인할 수 있습니다.
curl 'https://services.api.unity.com/cloud-code/v1/projects/<PROJECT_ID>/environments/<ENVIRONMENT_ID>/scripts/<SCRIPT_NAME>' \--header 'Authorization: Basic <SERVICE_ACCOUNT_CREDENTIALS_ENCODED>'
응답의 예시는 다음과 같습니다.
{ "name": "test", "type": "API", "language": "JS", "activeScript": { "code": "module.exports=async (cloudCode) =>{cloudCode.logger.info('this message confirms that the logging client is functional!'); return cloudCode.params.someThing;}", "params": [ { "name": "someThing", "type": "STRING", "required": true } ], "version": 2, "datePublished": "2021-07-23T16:08:35Z" }, "versions": [ { "code": "module.exports=async (cloudCode) =>{cloudCode.logger.info('this message confirms that the logging client is functional!'); return cloudCode.params.someThing;}", "params": [ { "name": "someThing", "type": "STRING", "required": true } ], "isDraft": true, "version": null, "dateUpdated": "2021-07-23T15:59:32Z" }, { "code": "module.exports=async (cloudCode) =>{cloudCode.logger.info('this message confirms that the logging client is functional!'); return cloudCode.params.someThing;}", "params": [ { "name": "someThing", "type": "STRING", "required": true } ], "isDraft": false, "version": 2, "dateUpdated": "2021-07-23T16:08:35Z", "dateCreated": "2021-07-23T16:08:35Z" }, { "code": "module.exports=async (cloudCode) =>{cloudCode.logger.info('this message confirms that the logging client is functional!'); return cloudCode.params.someThing;}", "params": [ { "name": "someThing", "type": "STRING", "required": true } ], "isDraft": false, "version": 1, "dateUpdated": "2021-07-23T15:59:58Z", "dateCreated": "2021-07-23T15:59:58Z" } ], "params": [ { "name": "someThing", "type": "STRING", "required": true } ]}
응답에는 다음과 같은 정보가 포함됩니다.
  • name
    : 스크립트 이름입니다.
  • type
    : 스크립트 유형입니다. Cloud Code 스크립트는 API 스크립트만 지원합니다.
  • language
    : 스크립트 언어입니다. Cloud Code 스크립트는 JavaScript만 지원합니다.
activeScript
는 게임 클라이언트에서 사용할 수 있는 현재 퍼블리시된 스크립트 버전을 나타냅니다. 여기에는 해당 스크립트의 코드와 파라미터, 버전 번호, 퍼블리시 날짜가 포함됩니다.
versions
배열에는 현재 퍼블리시된 버전, 작업 중인 사본, 이전에 퍼블리시된 모든 버전 등 스크립트의 모든 버전이 포함됩니다. 작업 중인 사본은 최신 변경 사항이 포함되어 있지만, 아직 게임 클라이언트에서 사용할 수는 없는 버전입니다. 이 버전의 경우,
isDraft
속성은
true
로,
version
은 null로 각각 설정됩니다. 작업 중인 사본은 다음에 퍼블리시 요청을 보낼 때 퍼블리시됩니다.
다음 요청을 전송하면 지금까지 생성한 모든 스크립트를 볼 수 있습니다.
curl 'https://services.api.unity.com/cloud-code/v1/projects/<PROJECT_ID>/environments/<ENVIRONMENT_ID>/scripts' \--header 'Authorization: Basic <SERVICE_ACCOUNT_CREDENTIALS_ENCODED>'
목록 응답의 예시는 다음과 같습니다.
{ "results": [ { "name": "script", "language": "JS", "type": "API", "published": true, "lastPublishedDate": "2022-03-08T12:37:48Z", "lastPublishedVersion": 40 }, { "name": "test", "language": "JS", "type": "API", "published": true, "lastPublishedDate": "2023-06-20T15:14:58Z", "lastPublishedVersion": 4 } ], "links": { "next": null }}
응답에는 생성한 모든 스크립트의 간략한 개요가 포함되어 있습니다. 파라미터로 결과의 범위를 좁히고 다음 결과 페이지로 연결되는 링크를 확보하면 페이지 매김을 사용할 수 있습니다.
curl 'https://services.api.unity.com/cloud-code/v1/projects/<PROJECT_ID>/environments/<ENVIRONMENT_ID>/scripts?limit=2' \--header 'Authorization: Basic <SERVICE_ACCOUNT_CREDENTIALS_ENCODED>'
다음 결과 링크의 예시는 다음과 같습니다.
{ "links": { "next": "/v1/projects/<PROJECT_ID>/environments/<ENVIRONMENT_ID>/scripts?after=<SCRIPT_NAME>" }}

스크립트 삭제

다음 요청을 전송하면 스크립트를 삭제할 수 있습니다.
curl --request DELETE 'https://services.api.unity.com/cloud-code/v1/projects/<PROJECT_ID>/environments/<ENVIRONMENT_ID>/scripts/<SCRIPT_NAME>' \--header 'Authorization: Basic <SERVICE_ACCOUNT_CREDENTIALS_ENCODED>'
빈 응답은 삭제에 성공했음을 나타냅니다.