

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

# 디바이스 프로비저닝 MQTT API
<a name="fleet-provision-api"></a><a name="provision-mqtt-api"></a>

플릿 프로비저닝 서비스는 다음과 같은 MQTT API 작업을 지원합니다.
+ `CreateCertificateFromCsr`
+ `CreateKeysAndCertificate`
+ `RegisterThing`

이 API는 주제의 *payload-format*에 따라 Concise Binary Object Representation(CBOR) 형식 및 JavaScript Object Notation(JSON) 형식의 응답 버퍼를 지원합니다. 명확성을 위해 이 섹션의 응답 및 요청 예제는 JSON 형식으로 표시됩니다.


| *payload-format* | 응답 형식 데이터 유형 | 
| --- | --- | 
| cbor | Concise Binary Object Representation(CBOR) | 
| json | JavaScript Object Notation(JSON) | 

**중요**  
요청 메시지 주제를 게시하기 전에 응답 주제를 구독하여 응답을 수신합니다. 이 API에서 사용되는 메시지는 MQTT의 게시/구독 프로토콜을 사용하여 요청 및 응답 상호 작용을 제공합니다.  
요청을 게시하기 *전에* 응답 주제를 구독하지 않으면 해당 요청의 결과가 수신되지 않을 수 있습니다.  
IoT Core 플릿 프로비저닝은 API 요청을 게시하는 데 사용된 것과 동일한 MQTT 연결을 통해 디바이스 프로비저닝 MQTT API 결과를 반환합니다.

## CreateCertificateFromCsr
<a name="create-cert-csr"></a>

인증서 서명 요청(CSR)에서 인증서를 생성합니다.는 Amazon Root 인증 기관(CA)에서 서명한 클라이언트 인증서를 AWS IoT 제공합니다. 새 인증서의 상태는 `PENDING_ACTIVATION`입니다. 이 인증서로 사물을 프로비저닝하도록 `RegisterThing`를 호출하면 템플릿에 설명된 대로 인증서 상태가 `ACTIVE` 또는 `INACTIVE`로 변경됩니다.

인증 기관 인증서 및 인증서 서명 요청을 사용하여 클라이언트 인증서를 생성하는 방법에 대한 자세한 내용은 [CA 인증서를 사용하여 클라이언트 인증서 생성](create-device-cert.md) 섹션을 참조하세요.

**참고**  
보안을 위해 `CreateCertificateFromCsr`에 의해 반환된 `certificateOwnershipToken`은 1시간 후에 만료됩니다. `RegisterThing`은 `certificateOwnershipToken`이 만료되기 전에 호출되어야 합니다. `CreateCertificateFromCsr`에서 생성된 인증서가 활성화되지 않았으며 토큰이 만료될 때까지 정책 또는 사물에 연결되지 않은 경우 인증서가 삭제됩니다. 토큰이 만료되면 디바이스는 `CreateCertificateFromCsr`을 호출하여 새 인증서를 생성할 수 있습니다.

### CreateCertificateFromCsr 요청
<a name="create-cert-csr-request"></a>

`$aws/certificates/create-from-csr/payload-format` 주제와 함께 메시지를 게시합니다.

`payload-format`  
`cbor` 또는 `json`와 같은 메시지 페이로드 형식입니다.

#### CreateCertificateFromCsr 요청 페이로드
<a name="create-cert-csr-request-payload"></a>

```
{
    "certificateSigningRequest": "string"
}
```

`certificateSigningRequest`  
PEM 형식의 CSR입니다.

### CreateCertificateFromCsr 응답
<a name="create-cert-csr-response"></a>

`$aws/certificates/create-from-csr/payload-format/accepted`을 구독합니다.

`payload-format`  
`cbor` 또는 `json`와 같은 메시지 페이로드 형식입니다.

#### CreateCertificateFromCsr 응답 페이로드
<a name="create-cert-csr-response-payload"></a>

```
{
    "certificateOwnershipToken": "string",
    "certificateId": "string",
    "certificatePem": "string"
}
```

`certificateOwnershipToken`  
프로비저닝하는 동안 인증서의 소유권을 증명하는 토큰입니다.

`certificateId`  
인증서 ID입니다. 인증서 관리 작업에서는 certificateId만 필요합니다.

`certificatePem`  
PEM 형식의 인증서 데이터입니다.

### CreateCertificateFromCsr 오류
<a name="create-cert-csr-error"></a>

오류 응답을 수신하려면 `$aws/certificates/create-from-csr/payload-format/rejected`를 구독합니다.

`payload-format`  
`cbor` 또는 `json`와 같은 메시지 페이로드 형식입니다.

#### CreateCertificateFromCsr 오류 페이로드
<a name="create-cert-csr-error-payload"></a>

```
{
    "statusCode": int,
    "errorCode": "string",
    "errorMessage": "string"
}
```

`statusCode`  
상태 코드

`errorCode`  
오류 코드입니다.

`errorMessage`  
오류 메시지입니다.

## CreateKeysAndCertificate
<a name="create-keys-cert"></a>

새 키와 certificate를 생성합니다.는 Amazon Root 인증 기관(CA)에서 서명한 클라이언트 인증서를 AWS IoT 제공합니다. 새 인증서의 상태는 `PENDING_ACTIVATION`입니다. 이 인증서로 사물을 프로비저닝하도록 `RegisterThing`를 호출하면 템플릿에 설명된 대로 인증서 상태가 `ACTIVE` 또는 `INACTIVE`로 변경됩니다.

**참고**  
보안을 위해 `CreateKeysAndCertificate`에 의해 반환된 `certificateOwnershipToken`은 1시간 후에 만료됩니다. `RegisterThing`은 `certificateOwnershipToken`이 만료되기 전에 호출되어야 합니다. `CreateKeysAndCertificate`에서 생성된 인증서가 활성화되지 않았으며 토큰이 만료될 때까지 정책 또는 사물에 연결되지 않은 경우 인증서가 삭제됩니다. 토큰이 만료되면 디바이스는 `CreateKeysAndCertificate`을 호출하여 새 인증서를 생성할 수 있습니다.

### CreateKeysAndCertificate 요청
<a name="create-keys-cert-request"></a>

빈 메시지 페이로드와 함께 `$aws/certificates/create/payload-format`에 메시지를 게시합니다.

`payload-format`  
`cbor` 또는 `json`와 같은 메시지 페이로드 형식입니다.

### CreateKeysAndCertificate 응답
<a name="create-keys-cert-response"></a>

`$aws/certificates/create/payload-format/accepted`을 구독합니다.

`payload-format`  
`cbor` 또는 `json`와 같은 메시지 페이로드 형식입니다.

#### CreateKeysAndCertificate 응답
<a name="create-keys-cert-response-payload"></a>

```
{
    "certificateId": "string",
    "certificatePem": "string",
    "privateKey": "string",
    "certificateOwnershipToken": "string"
}
```

`certificateId`  
인증서 ID입니다.

`certificatePem`  
PEM 형식의 인증서 데이터입니다.

`privateKey`  
프라이빗 키입니다.

`certificateOwnershipToken`  
프로비저닝하는 동안 인증서의 소유권을 증명하는 토큰입니다.

### CreateKeysAndCertificate 오류
<a name="create-keys-cert-error"></a>

오류 응답을 수신하려면 `$aws/certificates/create/payload-format/rejected`를 구독합니다.

`payload-format`  
`cbor` 또는 `json`와 같은 메시지 페이로드 형식입니다.

#### CreateKeysAndCertificate 오류 페이로드
<a name="create-keys-cert-error-payload"></a>

```
{
    "statusCode": int,
    "errorCode": "string",
    "errorMessage": "string"
}
```

`statusCode`  
상태 코드

`errorCode`  
오류 코드입니다.

`errorMessage`  
오류 메시지입니다.

## RegisterThing
<a name="register-thing"></a>

미리 정의된 템플릿을 사용하여 사물을 프로비저닝합니다.

### RegisterThing 요청
<a name="register-thing-request"></a>

`$aws/provisioning-templates/templateName/provision/payload-format`에 메시지를 게시합니다.

`payload-format`  
`cbor` 또는 `json`와 같은 메시지 페이로드 형식입니다.

`templateName`  
프로비저닝 템플릿 이름입니다.

#### RegisterThing request 페이로드
<a name="register-thing-request-payload"></a>

```
{
    "certificateOwnershipToken": "string",
    "parameters": {
        "string": "string",
        ...
    }
}
```

`certificateOwnershipToken`  
인증서 소유권을 증명하는 토큰입니다. AWS IoT 는 MQTT를 통해 인증서를 생성할 때 토큰을 생성합니다.

`parameters`  
선택 사항. 등록 요청을 평가하기 위해 [사전 프로비저닝 후크](pre-provisioning-hook.md)에서 사용되는 디바이스의 키-값 페어입니다.

### RegisterThing 응답
<a name="register-thing-response"></a>

`$aws/provisioning-templates/templateName/provision/payload-format/accepted`을 구독합니다.

`payload-format`  
`cbor` 또는 `json`와 같은 메시지 페이로드 형식입니다.

`templateName`  
프로비저닝 템플릿 이름입니다.

#### RegisterThing 응답 페이로드
<a name="register-thing-response-payload"></a>

```
{
    "deviceConfiguration": {
        "string": "string",
        ...
    },
    "thingName": "string"
}
```

`deviceConfiguration`  
템플릿에 정의된 디바이스 구성입니다.

`thingName`  
프로비저닝 중에 생성된 IoT 사물의 이름입니다.

### RegisterThing 오류 응답
<a name="register-thing-error"></a>

오류 응답을 수신하려면 `$aws/provisioning-templates/templateName/provision/payload-format/rejected`를 구독합니다.

`payload-format`  
`cbor` 또는 `json`와 같은 메시지 페이로드 형식입니다.

`templateName`  
프로비저닝 템플릿 이름입니다.

#### RegisterThing 오류 응답 페이로드
<a name="register-thing-error-payload"></a>

```
{
    "statusCode": int,
    "errorCode": "string",
    "errorMessage": "string"
}
```

`statusCode`  
상태 코드

`errorCode`  
오류 코드입니다.

`errorMessage`  
오류 메시지입니다.