

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Amazon GameLift Servers용 Go 서버 SDK - 작업
<a name="integration-server-sdk-go-actions"></a>

해당 서버 SDK 5.x 참조를 사용하여 Amazon GameLift Servers와 함께 호스팅할 멀티플레이어 게임을 통합합니다. 통합 프로세스에 대한 지침은 [서버 SDK를 사용하여 게임 서버에 Amazon GameLift Servers를 추가합니다.](gamelift-sdk-server-api.md) 페이지를 참조하세요.

`GameLiftServerAPI.go`는 Go 서버 SDK 작업을 정의합니다.

[Amazon GameLift Servers용 Go 서버 SDK - 데이터 유형](integration-server-sdk-go-datatypes.md)

**Topics**
+ [Amazon GameLift Servers용 Go 서버 SDK - 데이터 유형](integration-server-sdk-go-datatypes.md)
+ [GetSdkVersion()](#integration-server-sdk-go-getsdkversion)
+ [InitMetrics()](#integration-server-sdk-go-initmetrics)
+ [InitMetricsFromEnvironment()](#integration-server-sdk-go-initmetricsfromenv)
+ [InitSDK()](#integration-server-sdk-go-initsdk)
+ [ProcessReady()](#integration-server-sdk-go-processready)
+ [ProcessEnding()](#integration-server-sdk-go-processending)
+ [ActivateGameSession()](#integration-server-sdk-go-activategamesession)
+ [UpdatePlayerSessionCreationPolicy()](#integration-server-sdk-go-updateplayersessioncreationpolicy)
+ [GetGameSessionId()](#integration-server-sdk-go-getgamesessionid)
+ [GetTerminationTime()](#integration-server-sdk-go-getterm)
+ [AcceptPlayerSession()](#integration-server-sdk-go-acceptplayersession)
+ [RemovePlayerSession()](#integration-server-sdk-go-removeplayersession)
+ [DescribePlayerSessions()](#integration-server-sdk-go-describeplayersessions)
+ [StartMatchBackfill()](#integration-server-sdk-go-startmatchbackfill)
+ [StopMatchBackfill()](#integration-server-sdk-go-stopmatchbackfill)
+ [GetComputeCertificate()](#integration-server-sdk-go-getcomputecertificate)
+ [GetFleetRoleCredentials()](#integration-server-sdk-go-getfleetrolecredentials)
+ [Destroy()](#integration-server-sdk-go-destroy)

## GetSdkVersion()
<a name="integration-server-sdk-go-getsdkversion"></a>

현재 서버 프로세스에 빌드된 SDK 버전 번호를 반환합니다.

### 구문
<a name="integration-server-sdk-go-getsdkversion-syntax"></a>

```
func GetSdkVersion() (string, error)
```

### 반환 값
<a name="integration-server-sdk-go-getsdkversion-return"></a>

성공하면 현재 SDK 버전을 문자열로 반환합니다. 반환된 문자열에는 버전 번호(예: `5.0.0`)가 포함됩니다. 실패하면 오류 메시지(예: `common.SdkVersionDetectionFailed`)를 반환합니다.

### 예제
<a name="integration-server-sdk-go-getsdkversion-example"></a>

```
version, err := server.GetSdkVersion()
```

## InitMetrics()
<a name="integration-server-sdk-go-initmetrics"></a>

Amazon GameLift Servers SDK에 대한 지표 수집을 초기화합니다. 이 메서드는 서버 성능 및 상태를 모니터링하는 데 도움이 되는 지표 보고를 설정합니다. [InitSDK()](#integration-server-sdk-go-initsdk) 이후 [ProcessReady()](#integration-server-sdk-go-processready) 이전에 이 메서드를 호출합니다.

### 구문
<a name="integration-server-sdk-go-initmetrics-syntax"></a>

```
func InitMetrics() error
func InitMetrics(metricsParameters MetricsParameters) error
```

### 파라미터
<a name="integration-server-sdk-go-initmetrics-parameter"></a>

MetricsParameters(선택 사항)  
지표 수집을 구성하는 `MetricsParameters` 객체입니다. 제공되지 않은 경우 기본 지표 구성이 사용됩니다. MetricsParameters 구조는 다음 필드를 포함합니다.  
+ `StatsdHost` - StatsD 서버의 호스트 이름 또는 IP 주소.
+ `StatsdPort` - StatsD 서버의 포트 번호.
+ `CrashReporterHost` - 충돌 리포터 서비스의 호스트 이름 또는 IP 주소.
+ `CrashReporterPort` - 충돌 리포터 서비스의 포트 번호.
+ `FlushIntervalMs` - 지표 데이터 플러시에 대한 밀리초 단위의 간격.
+ `MaxPacketSize` - 바이트 단위의 지표 패킷 최대 크기.
MetricsParameters 구조에 대한 자세한 내용은 [C\# 서버 SDK 5.x - 데이터 유형](https://docs.aws.amazon.com/gameliftservers/latest/developerguide/integration-server-sdk5-csharp-datatypes.html)을 참조하세요.

### 반환 값
<a name="integration-server-sdk-go-initmetrics-return"></a>

성공하면 지표 수집이 성공적으로 초기화되었음을 나타내는 `nil` 오류가 반환됩니다.

### 예제
<a name="integration-server-sdk-go-initmetrics-example"></a>

기본 구성으로 지표 초기화:

```
err := server.InitMetrics()
```

사용자 지정 구성으로 지표 초기화:

```
metricsParams := MetricsParameters{
    StatsdHost:        "localhost",
    StatsdPort:        8125,
    CrashReporterHost: "localhost",
    CrashReporterPort: 9125,
    FlushIntervalMs:   5000,
    MaxPacketSize:     1024,
}

err := server.InitMetrics(metricsParams)
```

## InitMetricsFromEnvironment()
<a name="integration-server-sdk-go-initmetricsfromenv"></a>

환경 변수에서 구성을 사용하여 Amazon GameLift Servers SDK에 대한 지표 수집을 초기화합니다. 이 메서드는 런타임 환경에서 파생된 기본 설정을 사용하여 지표 보고를 설정합니다.

[InitSDK()](#integration-server-sdk-go-initsdk) 이후 [ProcessReady()](#integration-server-sdk-go-processready) 이전에 이 메서드를 호출합니다.

### 구문
<a name="integration-server-sdk-go-initmetricsfromenv-syntax"></a>

```
func InitMetricsFromEnvironment() error
```

### 반환 값
<a name="integration-server-sdk-go-initmetricsfromenv-return"></a>

성공하면 지표 수집이 환경 구성을 사용하여 성공적으로 초기화되었음을 나타내는 `nil` 오류가 반환됩니다.

### 예제
<a name="integration-server-sdk-go-initmetricsfromenv-example"></a>

```
err := server.InitMetricsFromEnvironment()
```

## InitSDK()
<a name="integration-server-sdk-go-initsdk"></a>

Amazon GameLift Servers SDK를 초기화합니다. Amazon GameLift Servers와 관련된 다른 초기화가 발생하기 전에 시작 시 이 메서드를 호출합니다. 이 메서드는 서버와 Amazon GameLift Servers 서비스 간의 통신을 설정합니다.

### 구문
<a name="integration-server-sdk-go-initsdk-syntax"></a>

```
func InitSDK(params ServerParameters) error 
```

### 파라미터
<a name="integration-server-sdk-go-initsdk-parameter"></a>

[ServerParameters](integration-server-sdk-go-datatypes.md#integration-server-sdk-go-dataypes-serverparameters)  
Amazon GameLift Servers Anywhere 플릿에서 게임 서버를 초기화하려면 다음 정보를 사용하여 `ServerParameters` 객체를 구성합니다.  
+ 게임 서버에 연결하는 데 사용되는 WebSocket의 URL입니다.
+ 게임 서버를 호스팅하는 데 사용되는 프로세스의 ID입니다.
+ 게임 서버 프로세스를 호스팅하는 컴퓨팅의 ID입니다.
+ Amazon GameLift Servers Anywhere 컴퓨팅이 포함된 Amazon GameLift Servers 플릿의 ID입니다.
+ Amazon GameLift Servers 작업을 통해 생성된 인증 토큰입니다.
Amazon GameLift Servers 관리형 EC2 플릿에서 게임 서버를 초기화하려면 파라미터 없이 `ServerParameters` 객체를 구성합니다. 이 호출을 통해, Amazon GameLift Servers 에이전트는 컴퓨팅 환경을 설정하고 자동으로 Amazon GameLift Servers 서비스에 연결합니다.

### 반환 값
<a name="integration-server-sdk-go-initsdk-return"></a>

성공하는 경우, 서버 프로세스가 [ProcessReady()](#integration-server-sdk-go-processready)를 호출할 준비가 되었음을 나타내는 `nil` 오류를 반환합니다.

**참고**  
Anywhere 플릿에 배포된 게임 빌드에 대한 `InitSDK()`로의 호출이 실패하는 경우 빌드 리소스를 생성할 때 사용된 `ServerSdkVersion` 파라미터를 확인합니다. 명시적으로 이 값을 사용 중인 Server SDK 버전으로 설정해야 합니다. 이 파라미터의 기본값은 4.x이며 호환되지 않습니다. 이 문제를 해결하려면 새 빌드를 생성하여 새 플릿에 배포해야 합니다.

### 예제
<a name="integration-server-sdk-go-initsdk-example"></a>

Amazon GameLift Servers Anywhere 예제

```
//Define the server parameters
serverParameters := ServerParameters {
  WebSocketURL: "wss://us-west-1.api.amazongamelift.com",
  ProcessID: "PID1234",
  HostID: "HardwareAnywhere",
  FleetID: "aarn:aws:gamelift:us-west-1:111122223333:fleet/fleet-9999ffff-88ee-77dd-66cc-5555bbbb44aa",
  AuthToken: "1111aaaa-22bb-33cc-44dd-5555eeee66ff"
}

//Call InitSDK to establish a local connection with the Amazon GameLift Servers Agent to enable further communication.
err := server.InitSDK(serverParameters)
```

Amazon GameLift Servers 관리형 EC2 예제

```
//Define the server parameters
serverParameters := ServerParameters {}

//Call InitSDK to establish a local connection with the Amazon GameLift Servers Agent to enable further communication.
err := server.InitSDK(serverParameters)
```

## ProcessReady()
<a name="integration-server-sdk-go-processready"></a>

Amazon GameLift Servers에 서버 프로세스가 게임 세션을 호스팅할 준비가 되었음을 알립니다. [InitSDK()](#integration-server-sdk-go-initsdk) 호출 후 이 메서드를 호출합니다. 이 메서드는 프로세스당 한 번만 호출해야 합니다.

### 구문
<a name="integration-server-sdk-go-processready-syntax"></a>

```
func ProcessReady(param ProcessParameters) error
```

### 파라미터
<a name="integration-server-sdk-go-processready-parameter"></a>

**ProcessParameters**  
다음 서버 프로세스 관련 정보를 전달하는 [ProcessParameters](integration-server-sdk-go-datatypes.md#integration-server-sdk-go-dataypes-process) 객체입니다.  
+ 게임 서버 코드에 구현되어 있는 콜백 메서드의 이름으로, 서버 프로세스와 통신할 수 있도록 Amazon GameLift Servers 서비스가 간접 호출하는 메서드입니다.
+ 서버 프로세스가 수신하는 포트 번호입니다.
+ Amazon GameLift Servers가 캡처 및 저장하도록 하려는 모든 게임 세션별 파일에 대한 경로를 포함하는 [LogParameters](integration-server-sdk-go-datatypes.md#integration-server-sdk-go-dataypes-log) 데이터 유형입니다.

### 반환 값
<a name="integration-server-sdk-go-processready-return"></a>

메서드가 실패하면 오류 메시지와 함께 오류를 반환합니다. 메서드가 성공한 경우 `nil`를 반환합니다.

### 예제
<a name="integration-server-sdk-go-processready-example"></a>

이 예에서는 [ProcessReady()](#integration-server-sdk-go-processready) 호출 및 위임 함수 구현을 모두 보여줍니다.

```
// Define the process parameters
processParams := ProcessParameters {
  OnStartGameSession: gameProcess.OnStartGameSession,
  OnUpdateGameSession: gameProcess.OnGameSessionUpdate,
  OnProcessTerminate: gameProcess.OnProcessTerminate,
  OnHealthCheck: gameProcess.OnHealthCheck,
  Port: port,
  LogParameters: LogParameters {    // logging and error example
    []string {"C:\\game\\logs", "C:\\game\\error"}
  }
}

err := server.ProcessReady(processParams)
```

## ProcessEnding()
<a name="integration-server-sdk-go-processending"></a>

서버 프로세스가 종료 중임을 Amazon GameLift Servers에 알립니다. 활성 게임 세션의 종료 등 다른 모든 정리 작업 이후 및 프로세스를 종료하기 전에 이 메서드를 호출합니다. `ProcessEnding()`의 결과에 따라 프로세스가 성공(0) 또는 오류(-1)로 종료되고 플릿 이벤트가 생성됩니다. 오류가 발생하여 프로세스가 종료되는 경우 생성되는 플릿 이벤트는 `SERVER_PROCESS_TERMINATED_UNHEALTHY`입니다.

### 구문
<a name="integration-server-sdk-go-processending-syntax"></a>

```
func ProcessEnding() error
```

### 반환 값
<a name="integration-server-sdk-go-processending-return"></a>

0 오류 코드 또는 정의된 오류 코드를 반환합니다.

### 예제
<a name="integration-server-sdk-go-processending-example"></a>

```
// operations to end game sessions and the server process
defer func() {
  err := server.ProcessEnding()
  server.Destroy()
  if err != nil {
    fmt.Println("ProcessEnding() failed. Error: ", err)
    os.Exit(-1)
  } else {
    os.Exit(0)
  }
}
```

## ActivateGameSession()
<a name="integration-server-sdk-go-activategamesession"></a>

Amazon GameLift Servers에 서버 프로세스가 게임 세션을 활성화했으며 이제 플레이어 연결을 수신할 준비가 되었음을 알립니다. 이 작업은 모든 게임 세션 초기화 후 `onStartGameSession()` 콜백 함수의 일부로 호출됩니다.

### 구문
<a name="integration-server-sdk-go-activategamesession-syntax"></a>

```
func ActivateGameSession() error
```

### 반환 값
<a name="integration-server-sdk-go-activategamesession-return"></a>

메서드가 실패하면 오류 메시지와 함께 오류를 반환합니다.

### 예제
<a name="integration-server-sdk-go-activategamesession-example"></a>

이 예에서는 `onStartGameSession()` 위임 함수의 일부로 `ActivateGameSession()`이 호출되는 것을 보여줍니다.

```
func OnStartGameSession(GameSession gameSession) {
  // game-specific tasks when starting a new game session, such as loading map   
  // Activate when ready to receive players   
  err := server.ActivateGameSession();
}
```

## UpdatePlayerSessionCreationPolicy()
<a name="integration-server-sdk-go-updateplayersessioncreationpolicy"></a>

현재 게임 세션의 새 플레이어 세션 수락 가능성을 업데이트합니다. 모든 새 플레이어 세션을 수락하거나 거부하도록 게임 세션을 설정할 수 있습니다.

### 구문
<a name="integration-server-sdk-go-updateplayersessioncreationpolicy-syntax"></a>

```
func UpdatePlayerSessionCreationPolicy(policy model.PlayerSessionCreationPolicy) error
```

### 파라미터
<a name="integration-server-sdk-go-updateplayersessioncreationpolicy-parameter"></a>

**playerSessionCreationPolicy**  
게임 세션이 새 플레이어를 수락하는지 여부를 나타내는 문자열 값입니다.  
유효한 값으로는 다음이 포함됩니다.  
+ **`model.AcceptAll`** - 모든 새 플레이어 세션을 수락합니다.
+ **`model.DenyAll`** - 모든 새 플레이어 세션을 거부합니다.

### 반환 값
<a name="integration-server-sdk-go-updateplayersessioncreationpolicy-return"></a>

오류가 발생하면 오류 메시지와 함께 오류를 반환합니다.

### 예제
<a name="integration-server-sdk-go-updateplayersessioncreationpolicy-example"></a>

이 예는 모든 플레이어를 수락하도록 현재 게임 세션의 참여 정책을 설정합니다.

```
err := server.UpdatePlayerSessionCreationPolicy(model.AcceptAll)
```

## GetGameSessionId()
<a name="integration-server-sdk-go-getgamesessionid"></a>

활성 서버 프로세스가 호스팅된 게임 세션의 ID를 가져옵니다.

### 구문
<a name="integration-server-sdk-go-getgamesessionid-syntax"></a>

```
func GetGameSessionID() (string, error)
```

### 파라미터
<a name="integration-server-sdk-go-getgamesessionid-parameter"></a>

이 작업에는 파라미터가 없습니다.

### 반환 값
<a name="integration-server-sdk-go-getgamesessionid-return"></a>

성공하면 게임 세션 ID 및 nil 오류를 반환합니다. 게임 세션으로 활성화되지 않은 유휴 프로세스의 경우 호출은 빈 문자열과 `nil` 오류를 반환합니다.

### 예제
<a name="integration-server-sdk-go-getgamesessionid-example"></a>

```
gameSessionID, err := server.GetGameSessionID()
```

## GetTerminationTime()
<a name="integration-server-sdk-go-getterm"></a>

종료 시간을 사용할 수 있는 경우 서버 프로세스가 종료되도록 예약된 시간을 반환합니다. 서버 프로세스는 Amazon GameLift Servers에서 `onProcessTerminate()` 콜백을 수신한 후 이 작업을 수행합니다. 다음과 같은 이유로 Amazon GameLift Servers가 `onProcessTerminate()`를 호출합니다.
+ 서버 프로세스가 상태 불량을 보고했거나 Amazon GameLift Servers에 응답하지 않은 경우
+ 스케일 다운 이벤트 중에 인스턴스를 종료하는 경우
+ [스팟 인스턴스 중단](spot-tasks.md)으로 인해 인스턴스가 종료되는 경우

### 구문
<a name="integration-server-sdk-go-getterm-syntax"></a>

```
func GetTerminationTime() (int64, error)
```

### 반환 값
<a name="integration-server-sdk-go-getterm-return"></a>

성공하면 서버 프로세스가 종료될 예정인 타임스탬프(Epoch 초) 및 `nil` 오류 종료를 반환합니다. 값은 종료 시간이며, `0001 00:00:00`에서 경과된 틱 수로 표시됩니다. 예를 들어, 날짜 시간 값 `2020-09-13 12:26:40 -000Z`는 `637355968000000000` 틱 수와 같습니다. 사용 가능한 종료 시간이 없는 경우 오류 메시지를 반환합니다.

### 예제
<a name="integration-server-sdk-go-getterm-example"></a>

```
terminationTime, err := server.GetTerminationTime()
```

## AcceptPlayerSession()
<a name="integration-server-sdk-go-acceptplayersession"></a>

Amazon GameLift Servers에 지정된 플레이어 세션 ID의 플레이어가 서버 프로세스에 연결되었고 검증이 필요함을 알립니다. Amazon GameLift Servers는 플레이어 세션 ID가 유효한지 확인합니다. 플레이어 세션이 검증된 후 Amazon GameLift Servers는 플레이어 슬롯의 상태를 `RESERVED`에서 `ACTIVE`로 변경합니다.

### 구문
<a name="integration-server-sdk-go-acceptplayersession-syntax"></a>

```
func AcceptPlayerSession(playerSessionID string) error
```

### 파라미터
<a name="integration-server-sdk-go-acceptplayersession-parameter"></a>

`playerSessionId`  
새로운 플레이어 세션이 생성되었을 때 Amazon GameLift Servers가 발행한 고유 ID입니다.

### 반환 값
<a name="integration-server-sdk-go-acceptplayersession-return"></a>

성공 또는 실패와 함께 오류 메시지로 구성된 일반적인 결과를 반환합니다.

### 예제
<a name="integration-server-sdk-go-acceptplayersession-example"></a>

이 예제는 유효하지 않은 플레이어 세션 ID의 검증 및 거부를 포함하는 연결 요청을 처리합니다.

```
func ReceiveConnectingPlayerSessionID(conn Connection, playerSessionID string) {
    err := server.AcceptPlayerSession(playerSessionID)
    if err != nil {
        connection.Accept()
    } else {
        connection.Reject(err.Error())
    }
}
```

## RemovePlayerSession()
<a name="integration-server-sdk-go-removeplayersession"></a>

플레이어가 서버 프로세스와의 연결이 끊겼음을 Amazon GameLift Servers에 알립니다. 이에 따라 Amazon GameLift Servers는 플레이어 슬롯을 사용 가능한 것으로 변경합니다.

### 구문
<a name="integration-server-sdk-go-removeplayersession-syntax"></a>

```
func RemovePlayerSession(playerSessionID string) error
```

### 파라미터
<a name="integration-server-sdk-go-removeplayersession-parameter"></a>

**`playerSessionId`**  
새로운 플레이어 세션이 생성되었을 때 Amazon GameLift Servers가 발행한 고유 ID입니다.

### 반환 값
<a name="integration-server-sdk-go-removeplayersession-return"></a>

성공 또는 실패와 함께 오류 메시지로 구성된 일반적인 결과를 반환합니다.

### 예제
<a name="integration-server-sdk-go-removeplayersession-example"></a>

```
err := server.RemovePlayerSession(playerSessionID)
```

## DescribePlayerSessions()
<a name="integration-server-sdk-go-describeplayersessions"></a>

설정, 세션 메타데이터 및 플레이어 데이터 등의 플레이어 세션 데이터를 가져옵니다. 이 메서드를 사용하여 다음에 대한 정보를 얻을 수 있습니다.
+ 단일 플레이어 세션
+ 게임 세션의 모든 플레이어 세션
+ 단일 플레이어 ID와 연결된 모든 플레이어 세션

### 구문
<a name="integration-server-sdk-go-describeplayersessions-syntax"></a>

```
func DescribePlayerSessions(req request.DescribePlayerSessionsRequest) (result.DescribePlayerSessionsResult, error) {
	return srv.describePlayerSessions(&req)
}
```

### 파라미터
<a name="integration-server-sdk-go-describeplayersessions-parameter"></a>

**[DescribePlayerSessionsRequest](integration-server-sdk-go-datatypes.md#integration-server-sdk-go-dataypes-playersessions)**  
검색할 플레이어 세션을 설명하는 `DescribePlayerSessionsRequest` 객체입니다.

### 반환 값
<a name="integration-server-sdk-go-describeplayersessions-return"></a>

성공하는 경우, 요청 파라미터에 적합한 플레이어 세션 객체 집합이 들어 있는 `DescribePlayerSessionsResult` 객체를 반환합니다.

### 예제
<a name="integration-server-sdk-go-describeplayersessions-example"></a>

다음은 지정된 게임 세션에 활성 상태로 연결되어 있는 모든 플레이어 세션을 요청하는 예입니다. *NextToken*을 생략하고 *Limit* 값을 10으로 설정하면, Amazon GameLift Servers가 요청과 일치하는 처음 10개의 플레이어 세션 레코드를 반환합니다.

```
// create request
describePlayerSessionsRequest := request.NewDescribePlayerSessions() 
describePlayerSessionsRequest.GameSessionID, _ = server.GetGameSessionID() // get ID for the current game session
describePlayerSessionsRequest.Limit = 10                                 // return the first 10 player sessions
describePlayerSessionsRequest.PlayerSessionStatusFilter = "ACTIVE"         // Get all player sessions actively connected to the game session

describePlayerSessionsResult, err := server.DescribePlayerSessions(describePlayerSessionsRequest)
```

## StartMatchBackfill()
<a name="integration-server-sdk-go-startmatchbackfill"></a>

FlexMatch를 통해 생성된 게임 세션에서 열린 슬롯에 참여할 새로운 플레이어를 찾는 요청을 보냅니다. 자세한 내용은 [FlexMatch 채우기 기능](https://docs.aws.amazon.com/gameliftservers/latest/flexmatchguide/match-backfill.html)을 참조하세요.

이 작업은 비동기식입니다. 새로운 플레이어가 매치되면 Amazon GameLift Servers는 콜백 함수 `OnUpdateGameSession()`을 사용하여 업데이트된 매치메이커 데이터를 전달합니다.

서버 프로세스는 한 번에 하나의 활성 매치 채우기 요청만 할 수 있습니다. 새 요청을 보내려면 먼저 [StopMatchBackfill()](#integration-server-sdk-go-stopmatchbackfill)을 호출하여 원본 요청을 취소해야 합니다.

### 구문
<a name="integration-server-sdk-go-startmatchbackfill-syntax"></a>

```
func StartMatchBackfill(req request.StartMatchBackfillRequest) (result.StartMatchBackfillResult, error)
```

### 파라미터
<a name="integration-server-sdk-go-startmatchbackfill-parameter"></a>

**[StartMatchBackfillRequest](integration-server-sdk-go-datatypes.md#integration-server-sdk-go-dataypes-startmatchbackfillrequest)**  
다음 정보를 전달하는 StartMatchBackfillRequest 객체입니다.  
+ 채우기 요청에 할당할 티켓 ID. 이 정보를 선택 사항입니다. ID를 제공하지 않으면 Amazon GameLift Servers가 ID를 생성합니다.
+ 요청을 보낼 매치메이커. 전체 구성 ARN이 필요합니다. 이 값은 게임 세션의 매치메이커 데이터에 있습니다.
+ 채울 게임 세션의 ID입니다.
+ 게임 세션의 현재 플레이어에 대해 사용 가능한 매치메이킹 데이터입니다.

### 반환 값
<a name="integration-server-sdk-go-startmatchbackfill-return"></a>

매치 채우기 티켓 ID와 함께 `StartMatchBackfillResult` 객체나 오류 메시지를 포함한 결함을 반환합니다.

### 예제
<a name="integration-server-sdk-go-startmatchbackfill-example"></a>

```
// form the request
startBackfillRequest := request.NewStartMatchBackfill()
startBackfillRequest.RequestID = "1111aaaa-22bb-33cc-44dd-5555eeee66ff"          // optional
startBackfillRequest.MatchmakingConfigurationArn = "arn:aws:gamelift:us-west-2:111122223333:matchmakingconfiguration/MyMatchmakerConfig"
var matchMaker model.MatchmakerData
if err := matchMaker.UnmarshalJSON([]byte(gameSession.MatchmakerData)); err != nil {    
    return
}
startBackfillRequest.Players = matchMaker.Players
res, err := server.StartMatchBackfill(startBackfillRequest)

// Implement callback function for backfill
func OnUpdateGameSession(myGameSession model.GameSession) {
    // game-specific tasks to prepare for the newly matched players and update matchmaker data as needed
}
```

## StopMatchBackfill()
<a name="integration-server-sdk-go-stopmatchbackfill"></a>

활성 매치 채우기 요청을 취소합니다. 자세한 내용은 [FlexMatch 채우기 기능](https://docs.aws.amazon.com/gameliftservers/latest/flexmatchguide/match-backfill.html)을 참조하세요.

### 구문
<a name="integration-server-sdk-go-stopmatchbackfill-syntax"></a>

```
func StopMatchBackfill(req request.StopMatchBackfillRequest) error
```

### 파라미터
<a name="integration-server-sdk-go-stopmatchbackfill-parameter"></a>

**[StopMatchBackfillRequest](integration-server-sdk-go-datatypes.md#integration-server-sdk-go-dataypes-stopmatchbackfillrequest)**  
다음은 취소할 매치메이킹 티켓을 식별하는 StopMatchBackfillRequest 객체입니다.  
+ 채우기 요청에 할당된 티켓 ID
+ 채우기 요청을 보낸 매치메이커
+ 채우기 요청과 연결된 게임 세션

### 반환 값
<a name="integration-server-sdk-go-stopmatchbackfill-return"></a>

성공 또는 실패와 함께 오류 메시지로 구성된 일반적인 결과를 반환합니다.

### 예제
<a name="integration-server-sdk-go-stopmatchbackfill-example"></a>

```
stopBackfillRequest := request.NewStopMatchBackfill()  // Use this function to create request
stopBackfillRequest.TicketID = "1111aaaa-22bb-33cc-44dd-5555eeee66ff"
stopBackfillRequest.MatchmakingConfigurationArn = "arn:aws:gamelift:us-west-2:111122223333:matchmakingconfiguration/MyMatchmakerConfig"
                
//error
err := server.StopMatchBackfill(stopBackfillRequest)
```

## GetComputeCertificate()
<a name="integration-server-sdk-go-getcomputecertificate"></a>

게임 서버 및 게임 클라이언트 간의 네트워크 연결을 암호화하는 데 사용되는 TLS 인증서의 경로를 검색합니다. Amazon GameLift Servers Anywhere 플릿에 컴퓨팅 디바이스를 등록할 때 인증서 경로를 사용할 수 있습니다. 자세한 내용은 [RegisterCompute](https://docs.aws.amazon.com/gameliftservers/latest/apireference/API_RegisterCompute.html)를 참조하세요.

### 구문
<a name="integration-server-sdk-go-getcomputecertificate-syntax"></a>

```
func GetComputeCertificate() (result.GetComputeCertificateResult, error)
```

### 반환 값
<a name="integration-server-sdk-go-getcomputecertificate-return"></a>

다음을 포함하는 `GetComputeCertificateResult` 객체를 반환합니다.
+  CertificatePath: 컴퓨팅 리소스에 있는 TLS 인증서의 경로입니다. Amazon GameLift Servers 관리형 플릿을 사용하는 경우 이 경로에는 다음이 포함됩니다.
  + `certificate.pem`: 최종 사용자 인증서입니다. 전체 인증서 체인은 이 인증서에 추가된 `certificateChain.pem`의 조합입니다.
  + `certificateChain.pem`: 루트 인증서와 중간 인증서를 포함하는 인증서 체인입니다.
  + `rootCertificate.pem`: 루트 인증서입니다.
  + `privateKey.pem`: 최종 사용자 인증서의 프라이빗 키입니다.
+ ComputeName: 컴퓨팅 리소스의 이름입니다.

### 예제
<a name="integration-server-sdk-go-getcomputecertificate-example"></a>

```
tlsCertificate, err := server.GetFleetRoleCredentials(getFleetRoleCredentialsRequest)
```

## GetFleetRoleCredentials()
<a name="integration-server-sdk-go-getfleetrolecredentials"></a>

권한을 다른 로 확장하기 위해 생성한 서비스 역할 자격 증명을 검색합니다 AWS 서비스 Amazon GameLift Servers. 이러한 자격 증명을 통해 게임 서버는 AWS 리소스를 사용할 수 있습니다. 자세한 내용은 [Amazon GameLift Servers의 IAM 서비스 역할 설정](setting-up-role.md) 섹션을 참조하세요.

### 구문
<a name="integration-server-sdk-go-getfleetrolecredentials-syntax"></a>

```
func GetFleetRoleCredentials(
  req request.GetFleetRoleCredentialsRequest,
) (result.GetFleetRoleCredentialsResult, error) {
  return srv.getFleetRoleCredentials(&req)
}
```

### 파라미터
<a name="integration-server-sdk-go-getfleetrolecredentials-parameters"></a>

[GetFleetRoleCredentialsRequest](integration-server-sdk-go-datatypes.md#integration-server-sdk-go-dataypes-getfleetrolecredentialsrequest)  
 AWS 리소스에 대한 제한된 액세스를 게임 서버로 확장하는 역할 자격 증명입니다.

### 반환 값
<a name="integration-server-sdk-go-getfleetrolecredentials-return"></a>

다음을 포함하는 `GetFleetRoleCredentialsResult` 객체를 반환합니다.
+ AssumedRoleUserArn - 사용자가 맡을 서비스 역할의 Amazon 리소스 이름(ARN)입니다.
+ AssumedRoleId - 서비스 역할이 속한 사용자의 ID입니다.
+ AccessKeyId - 인증하고 AWS 리소스에 액세스를 제공하기 위한 액세스 키 ID입니다.
+ SecretAccessKey - 인증에 대한 비밀 액세스 키 ID를 지정합니다.
+ SessionToken - AWS 리소스와 상호 작용하는 현재 활성 세션을 식별하는 토큰입니다.
+ Expiration - 세션 자격 증명이 만료될 때까지 남은 시간입니다.

### 예제
<a name="integration-server-sdk-go-getfleetrolecredentials-example"></a>

```
// form the customer credentials request
getFleetRoleCredentialsRequest := request.NewGetFleetRoleCredentials()
getFleetRoleCredentialsRequest.RoleArn = "arn:aws:iam::123456789012:role/service-role/exampleGameLiftAction"

credentials, err := server.GetFleetRoleCredentials(getFleetRoleCredentialsRequest)
```

## Destroy()
<a name="integration-server-sdk-go-destroy"></a>

Amazon GameLift Servers Game Server SDK를 메모리에서 분리합니다. `ProcessEnding()` 이후 및 프로세스를 종료하기 전에 이 메서드를 호출하는 것이 가장 좋습니다. Anywhere 플릿을 사용 중이고 게임 세션 이후마다 서버 프로세스를 종료하지 않는 경우, `Destroy()` 및 `InitSDK()`를 차례로 호출하여 Amazon GameLift Servers가 게임 세션을 `ProcessReady()`로 호스팅할 준비가 되었음을 알리기 전에 다시 초기화합니다.

### 구문
<a name="integration-server-sdk-go-destroy-syntax"></a>

```
func Destroy() error {
	return srv.destroy()
}
```

### 반환 값
<a name="integration-server-sdk-go-destroy-return"></a>

메서드가 실패하면 오류 메시지와 함께 오류를 반환합니다.

### 예제
<a name="integration-server-sdk-go-destroy-example"></a>

```
// operations to end game sessions and the server process
defer func() {
  err := server.ProcessEnding()
  server.Destroy()
  if err != nil {
    fmt.Println("ProcessEnding() failed. Error: ", err)
    os.Exit(-1)
  } else {
    os.Exit(0)
  }
}
```