

# Amazon Sidewalk용 AWS IoT Core에 연결


이 섹션에서는 Sidewalk 엔드 디바이스를 온보딩한 다음 디바이스를 Sidewalk 네트워크에 연결하는 방법을 설명합니다. [Sidewalk 디바이스 온보딩 소개](sidewalk-gs-workflow.md)에 설명된 대로 온보딩 자습서에서 수행하는 단계를 설명합니다. AWS IoT 콘솔과 Amazon Sidewalk용 AWS IoT Core API 작업을 사용하여 디바이스를 온보딩하는 방법을 배우게 됩니다. 또한 이러한 작업을 수행하는 AWS CLI 명령에 대해서도 알아봅니다.

## 필수 조건


엔드 디바이스와 대상을 Amazon Sidewalk용 AWS IoT Core에 추가하려면 AWS 계정을 설정해야 합니다. AWS IoT 무선 API 또는 AWS CLI 명령을 사용하여 이러한 작업을 수행하려면 AWS CLI도 설정해야 합니다. 사전 조건 및 설정에 대한 자세한 내용은 [Python 및 AWS CLI 설치](setting-up-iotwireless.md#wireless-onboard-prereq) 섹션을 참조하세요.

**참고**  
엔드 디바이스를 프로비저닝 및 등록하고 Hardware Development Kit(HDK)에 연결하는 전체 온보딩 워크플로를 수행하려면 Sidewalk 게이트웨이 및 HDK도 설정해야 합니다. 자세한 내용은 **Amazon Sidewalk 설명서의 [Hardware Development Kit(HDK) 설정](https://docs.sidewalk.amazon/getting-started/sidewalk-onboard-prereq-hdk.html) 및 [Sidewalk 게이트웨이 설정](https://docs.sidewalk.amazon/getting-started/sidewalk-onboard-prereq-gateway.html)을 참조하세요.

## Sidewalk 리소스 설명


시작하고 리소스를 생성하기 전에 Sidewalk 엔드 디바이스, 디바이스 프로필 및 대상의 명명 규칙을 고려하세요. Amazon Sidewalk용 AWS IoT Core는 생성한 리소스에 고유 식별자를 할당합니다. 그러나 좀 더 설명이 가미된 이름을 지정하거나, 설명을 추가하거나, 식별 및 관리에 도움이 되는 선택적 태그를 추가할 수 있습니다.

**참고**  
대상 이름은 생성되고 나면 변경할 수 없습니다. AWS 계정 및 AWS 리전에 고유한 이름을 사용하세요.

자세한 내용은 [AWS IoT 무선 리소스 설명](iotwireless-describe-resources.md) 단원을 참조하십시오.

**Topics**
+ [

## 필수 조건
](#sidewalk-connect-prereq)
+ [

## Sidewalk 리소스 설명
](#sidewalk-connect-resources)
+ [

# Amazon Sidewalk용 AWS IoT Core에 디바이스 추가
](iot-sidewalk-create-device.md)
+ [

# Sidewalk 엔드 디바이스의 대상 추가
](iot-sidewalk-qsg-destination.md)
+ [

# Sidewalk 디바이스 연결 및 업링크 메타데이터 형식 보기
](iot-sidewalk-connect-uplink-metadata.md)

# Amazon Sidewalk용 AWS IoT Core에 디바이스 추가
Sidewalk 디바이스 추가

무선 디바이스를 만들기 전에 먼저 디바이스 프로필을 만드세요. 디바이스 프로필은 Sidewalk 디바이스의 디바이스 기능 및 기타 파라미터를 정의합니다. 단일 디바이스 프로필을 여러 디바이스에 연결할 수 있습니다.

디바이스 프로필을 만든 후 프로필에 대한 정보를 검색하면 `DeviceTypeId`가 반환됩니다. 엔드 디바이스를 프로비저닝할 때는 이 ID, 디바이스 인증서, 애플리케이션 서버 퍼블릭 키 및 SMSN을 사용하게 됩니다.

## 디바이스 생성 및 추가 방법


1. Sidewalk 엔드 디바이스의 디바이스 프로필을 생성합니다. Sidewalk 디바이스에 사용할 프로필 이름을 영숫자 문자열로 지정합니다. 프로필은 해당 프로필과 연결할 디바이스를 식별하는 데 도움이 됩니다.
   + (콘솔) Sidewalk 디바이스를 추가할 때 새 프로필을 만들 수도 있습니다. 이렇게 하면 디바이스를 Amazon Sidewalk용 AWS IoT Core에 빠르게 추가하고 프로필에 연결할 수 있습니다.
   + (API) 프로필 이름과 Sidewalk 객체 `sidewalk {}`를 지정하여 `CreateDeviceProfile` API 작업을 사용합니다. API 응답에는 프로필 ID와 Amazon 리소스 이름(ARN)이 포함됩니다.

1. Amazon Sidewalk용 AWS IoT Core에 무선 디바이스 추가 대상 이름을 지정하고 이전 단계에서 생성한 디바이스 프로필을 선택합니다.
   + (콘솔) Sidewalk 디바이스를 추가할 때 대상 이름을 입력하고 생성한 프로필을 선택합니다.
   + (API) `CreateWirelessDevice` API 작업을 사용합니다. 대상 이름과 이전에 얻은 디바이스 프로필의 ID를 지정합니다.  
**무선 디바이스 파라미터**    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/iot-wireless/latest/developerguide/iot-sidewalk-create-device.html)

1. 엔드 디바이스를 프로비저닝하는 데 필요한 정보가 들어 있는 JSON 파일을 확보합니다.
   + (콘솔) 생성한 Sidewalk 디바이스의 세부 정보 페이지에서 이 파일을 다운로드합니다.
   + (API) `GetDeviceProfile` 및 `GetWirelessDevice` API 작업을 사용하여 디바이스 프로필 및 무선 디바이스에 대한 정보를 검색합니다. API 응답 정보를 JSON 파일(예: *`device_profile.json`* 및 *`wireless_device.json`*)로 저장합니다.

# 디바이스 프로필 및 Sidewalk 엔드 디바이스 추가


이 섹션에서는 디바이스 프로필을 생성하는 방법을 소개합니다. 또한 AWS IoT 콘솔 및 AWS CLI를 사용하여 Sidewalk 엔드 디바이스를 Amazon Sidewalk용 AWS IoT Core에 추가하는 방법도 보여 줍니다.

## Sidewalk 디바이스 추가 (콘솔)


AWS IoT 콘솔을 사용하여 Sidewalk 디바이스를 추가하려면 [디바이스 허브의 Sidewalk 탭](https://console.aws.amazon.com/iot/home#/wireless/devices?tab=sidewalk)으로 이동하여 **디바이스 프로비저닝**을 선택한 후 다음 단계를 수행하세요.

![\[alt text not found\]](http://docs.aws.amazon.com/ko_kr/iot-wireless/latest/developerguide/images/iot-sidewalk-provision-device.PNG)


1. 

**디바이스 세부 정보 지정**

   Sidewalk 디바이스의 구성 정보를 지정합니다. 새 디바이스 프로필을 만들거나 Sidewalk 디바이스의 기존 프로필을 선택할 수도 있습니다.

   1. 디바이스 이름 및 선택적 설명을 지정합니다. 설명은 최대 2,048자입니다. 이러한 필드는 디바이스를 만든 후에 편집할 수 있습니다.

   1. Sidewalk 디바이스와 연결할 디바이스 프로필을 선택합니다. 기존 디바이스 프로필이 있는 경우 프로필을 선택할 수 있습니다. 새 프로젝트를 생성하려면 **새 프로필 생성**을 선택하고 프로필의 이름을 입력합니다.
**참고**  
디바이스 프로필에 태그를 부착하려면 프로필을 만든 후 [프로필 허브](https://console.aws.amazon.com/iot/home#/wireless/profiles)로 이동한 다음 프로필을 편집하여 이 정보를 추가합니다.

   1. 디바이스의 메시지를 다른 AWS 서비스로 라우팅할 대상 이름을 지정합니다. 아직 대상을 만들지 않았다면 [대상 허브](https://console.aws.amazon.com/iot/home#/wireless/destinations)로 이동하여 대상을 만듭니다. 그런 다음 Sidewalk 디바이스의 대상을 선택할 수 있습니다. 자세한 내용은 [Sidewalk 엔드 디바이스의 대상 추가](iot-sidewalk-qsg-destination.md) 단원을 참조하십시오.

   1. Sidewalk 디바이스를 계속 추가하려면 **다음**을 선택합니다.

1. 

**Sidewalk 디바이스를 AWS IoT 사물과 연결 (선택 사항)**

   원하는 경우 Sidewalk 디바이스를 AWS IoT 사물에 연결할 수도 있습니다. IoT는 AWS IoT 디바이스 레지스트리의 항목입니다. 사물을 사용하면 디바이스를 더 쉽게 검색하고 관리할 수 있습니다. 사물을 디바이스에 연결하면 디바이스에서 다른 AWS IoT Core 기능에 액세스할 수 있습니다.

   디바이스를 사물과 연결하려면 **자동 사물 등록**을 선택합니다.

   1. Sidewalk 디바이스를 연결하려는 IoT 사물의 고유한 이름을 입력합니다. 사물 이름은 대소문자를 구분하며 AWS 계정 및 AWS 리전에서 고유해야 합니다.

   1. 사물 유형이나 사물 목록에서 필터링하는 데 사용할 수 있는 검색 가능한 속성을 사용하는 등 IoT 사물에 대한 추가 구성을 제공합니다.

   1. **다음**을 선택하고 Sidewalk 디바이스에 대한 정보를 확인한 다음 **생성**을 선택합니다.

## Sidewalk 디바이스 추가 (CLI)


Sidewalk 디바이스를 추가하고 Sidewalk 디바이스를 프로비저닝하는 데 사용할 JSON 파일을 다운로드하려면 다음 API 작업을 수행하세요.

**Topics**
+ [

### 1단계: 디바이스 프로필 생성
](#iot-sidewalk-profile-create)
+ [

### 2단계: Sidewalk 디바이스 추가
](#iot-sidewalk-device-create)

### 1단계: 디바이스 프로필 생성


AWS 계정에서 디바이스 프로필을 생성하려면 [https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_CreateDeviceProfile.html](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_CreateDeviceProfile.html) API 작업 또는 [https://docs.aws.amazon.com/cli/latest/reference/create-device-profile.html](https://docs.aws.amazon.com/cli/latest/reference/create-device-profile.html) CLI 명령을 사용합니다. 디바이스 프로필을 생성할 때 이름을 지정하고 선택적으로 태그를 이름-값 페어로 제공하세요.

예를 들어 다음 명령을 실행하면 Sidewalk 디바이스의 디바이스 프로필이 생성됩니다.

```
aws iotwireless create-device-profile \ 
    --name sidewalk_profile --sidewalk {}
```

이 명령을 실행하면 디바이스 프로필의 Amazon 리소스 이름(ARN)과 ID가 출력으로 반환됩니다.

```
{
    "DeviceProfileArn": "arn:aws:iotwireless:us-east-1:123456789012:DeviceProfile/12345678-a1b2-3c45-67d8-e90fa1b2c34d",
    "DeviceProfileId": "12345678-a1b2-3c45-67d8-e90fa1b2c34d"
}
```

### 2단계: Sidewalk 디바이스 추가


Amazon Sidewalk용 AWS IoT Core 계정에 Sidewalk 디바이스를 추가하려면 [https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_CreateWirelessDevice.html](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_CreateWirelessDevice.html) API 작업 또는 [https://docs.aws.amazon.com/cli/latest/reference/create-wireless-device.html](https://docs.aws.amazon.com/cli/latest/reference/create-wireless-device.html) CLI 명령을 사용합니다. 디바이스를 생성할 때 다음 파라미터와 함께 선택적으로 Sidewalk 디바이스의 이름과 설명을 지정하세요.

**참고**  
Sidewalk 디바이스를 AWS IoT 사물과 연결하려면 [https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_AssociateWirelessDeviceWithThing.html](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_AssociateWirelessDeviceWithThing.html) API 작업 또는 [https://docs.aws.amazon.com/cli/latest/reference/associate-wireless-device-with-thing.html](https://docs.aws.amazon.com/cli/latest/reference/associate-wireless-device-with-thing.html) CLI 명령을 사용합니다.

다음 명령은 Sidewalk 디바이스 생성의 예시를 보여줍니다.

```
aws iotwireless create-wireless-device \ 
     --cli-input-json "file://device.json"
```

다음은 `device.json` 파일의 콘텐츠를 보여줍니다.

**device.json의 내용**

```
{
  "Type": "Sidewalk",
  "Name": "SidewalkDevice",  
  "DestinationName": "SidewalkDestination",
  "Sidewalk": {
    "DeviceProfileId": "12345678-a1b2-3c45-67d8-e90fa1b2c34d"    
    }
}
```

이 명령을 실행하면 디바이스 ID와 Amazon 리소스 이름(ARN)이 출력으로 반환됩니다.

```
{
    "Arn": "arn:aws:iotwireless:us-east-1:123456789012:WirelessDevice/23456789-abcd-0123-bcde-fabc012345678",
    "Id": "23456789-abcd-0123-bcde-fabc012345678"
}
```

# 프로비저닝에 사용할 디바이스 JSON 파일 확보


Sidewalk 디바이스를 Amazon Sidewalk용 AWS IoT Core에 추가한 후 엔드 디바이스를 프로비전하는 데 필요한 정보가 들어 있는 JSON 파일을 다운로드하세요. AWS IoT 콘솔이나 AWS CLI를 사용하여 이 정보를 검색할 수 있습니다. 디바이스를 프로비저닝하는 방법에 대한 자세한 내용은 **Amazon Sidewalk 설명서의 [엔드 디바이스 프로비저닝 및 등록](https://docs.sidewalk.amazon/provisioning/)을 참조하세요.

## JSON 파일 확보 (콘솔)


Sidewalk 디바이스를 프로비저닝하기 위한 JSON 파일을 확보하는 방법:

1. [Sidewalk 디바이스 허브](https://console.aws.amazon.com/iot/home#/wireless/devices?tab=sidewalk)로 이동합니다.

1. AWS IoT Core에 추가한 디바이스를 선택하여 세부 정보를 확인합니다.

1. 추가한 디바이스의 세부 정보 페이지에서 **디바이스 JSON 파일 다운로드**를 선택하여 JSON 파일을 확보합니다.

   엔드 디바이스를 프로비저닝하는 데 필요한 정보가 포함된 `certificate.json` 파일이 다운로드됩니다. 다음은 샘플 JSON 파일을 보여줍니다. 여기에는 디바이스 인증서, 프라이빗 키, Sidewalk 제조 일련번호(SMSN), `DeviceTypeID`가 포함됩니다.

   ```
   {
     "p256R1": "grg8izXoVvQ86cPVm0GMyWuZYHEBbbH ... DANKkOKoNT3bUGz+/f/pyTE+xMRdIUBZ1Bw==",
     "eD25519": "grg8izXoVvQ86cPVm0GMyWuZYHEBbbHD ... UiZmntHiUr1GfkTOFMYqRB+Aw==",
     "metadata": {    
       "devicetypeid": "fe98",
       "applicationDeviceArn": "arn:aws:iotwireless:us-east-1:123456789012:WirelessDevice/897ce68e-3ca2-4ed0-85a2-30b0666c4052",
       "applicationDeviceId": "897ce68e-3ca2-4ed0-85a2-30b0666c4052",
       "smsn": "82B83C8B35E856F43CE9C3D59B418CC96B996071016DB1C3BE5901F0F3071A4A",
       "devicePrivKeyP256R1": "3e704bf8d319b3a475179f1d68c60737b28c708f845d0198f2d00d00c88ee018",
       "devicePrivKeyEd25519": "17dacb3a46ad9a42d5c520ca5f47f0167f59ce54d740aa13918465faf533b8d0"
     },
     "applicationServerPublicKey": "5ce29b89c2e3ce6183b41e75fe54e45f61b8bb320efbdd2abd7aefa5957a316b"
   }
   ```

Sidewalk 디바이스의 세부 정보 페이지에는 다음에 대한 정보도 표시됩니다.
+ 디바이스 ID, Amazon 리소스 이름(ARN) 및 디바이스와 연결된 모든 AWS IoT 사물의 세부 정보.
+ 디바이스 프로필 및 대상 세부 정보.
+ 디바이스로부터 마지막 업링크 메시지를 수신한 시간.
+ 디바이스가 프로비저닝되었는지 또는 등록되었는지를 나타내는 상태.

## JSON 파일 확보 (CLI)


Amazon Sidewalk용 AWS IoT Core API 또는 AWS CLI를 사용하여 Sidewalk 엔드 디바이스를 프로비저닝하는 데 필요한 JSON 파일을 확보하려면 디바이스 프로필 및 무선 디바이스에 대한 정보를 검색한 결과 얻은 API 응답을 JSON 파일(예: *`wireless_device.json`* 및 *`device_profile.json`*)로 임시 저장합니다. 이를 사용하여 Sidewalk 디바이스를 프로비저닝합니다.

다음은 JSON 파일을 검색하는 방법을 보여줍니다.

**Topics**
+ [

### 1단계: 디바이스 프로필 정보를 JSON 파일로 가져오기
](#iot-sidewalk-profile-get)
+ [

### 2단계: Sidewalk 디바이스 정보를 JSON 파일로 가져오기
](#iot-sidewalk-get-device)

### 1단계: 디바이스 프로필 정보를 JSON 파일로 가져오기


[https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_GetDeviceProfile.html](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_GetDeviceProfile.html) API 작업 또는 [https://docs.aws.amazon.com/cli/latest/reference/get-device-profile.html](https://docs.aws.amazon.com/cli/latest/reference/get-device-profile.html) CLI 명령을 사용하여 Amazon Sidewalk용 AWS IoT Core 계정에 추가한 디바이스 프로필에 대한 정보를 가져옵니다. 디바이스 프로필에 대한 정보를 검색하려면 프로필 ID를 지정합니다.

그러면 API가 지정된 식별자 및 디바이스 ID와 일치하는 디바이스 프로필에 대한 정보를 반환합니다. 이 응답 정보를 파일로 저장하고 *`device_profile.json`*과 같은 이름을 지정합니다.

다음은 CLI 명령의 예시입니다.

```
aws iotwireless get-device-profile \ 
    --id "12345678-a1b2-3c45-67d8-e90fa1b2c34d" > device_profile.json
```

이 명령을 실행하면 디바이스 프로필, 애플리케이션 서버 퍼블릭 키 및 `DeviceTypeID`의 파라미터가 반환됩니다. 다음은 API의 샘플 응답 정보가 포함된 JSON 파일을 보여줍니다. API 응답의 파라미터에 대한 자세한 내용은 [https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_GetDeviceProfile.html](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_GetDeviceProfile.html) 섹션을 참조하세요.

**`GetDeviceProfile` API 응답(`device_profile.json`의 내용)**

```
{
    "Arn": "arn:aws:iotwireless:us-east-1:123456789012:DeviceProfile/12345678-a1b2-3c45-67d8-e90fa1b2c34d",
    "Id": "12345678-a1b2-3c45-67d8-e90fa1b2c34d",
    "Name": "Sidewalk_profile",
    "LoRaWAN": null,
    "Sidewalk":
    {        
        "ApplicationServerPublicKey": "a123b45c6d78e9f012a34cd5e6a7890b12c3d45e6f78a1b234c56d7e890a1234",
        "DAKCertificateMetadata": [
            {                
                "DeviceTypeId: "fe98",
                "CertificateId": "43564A6D2D50524F544F54595045",
                "FactorySupport": false,
                "MaxAllowedSignature": 1000                
            }
        ],
        "QualificationStatus": false
    }
}
```

### 2단계: Sidewalk 디바이스 정보를 JSON 파일로 가져오기


[https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_GetWirelessDevice.html](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_GetWirelessDevice.html) API 작업 또는 [https://docs.aws.amazon.com/cli/latest/reference/get-wireless-device.html](https://docs.aws.amazon.com/cli/latest/reference/get-wireless-device.html) CLI 명령을 사용하여 Amazon Sidewalk용 AWS IoT Core 계정에 추가한 Sidewalk 디바이스에 대한 정보를 가져옵니다. 엔드 디바이스에 대한 정보를 가져오려면 디바이스를 추가할 때 얻은 무선 디바이스의 식별자를 제공합니다.

그러면 API가 지정된 식별자 및 디바이스 ID와 일치하는 디바이스에 대한 정보를 반환합니다. 이 응답 정보를 JSON 파일로 저장합니다. 파일에 의미 있는 이름을 지정합니다(예 *`wireless_device.json`*).

다음은 CLI르 사용한 명령 실행의 예시를 보여줍니다.

```
aws iotwireless get-wireless-device --identifier-type WirelessDeviceId \ 
    --identifier "23456789-abcd-0123-bcde-fabc012345678" > wireless_device.json
```

이 명령을 실행하면 디바이스 세부 정보, 디바이스 인증서, 프라이빗 키 및 Sidewalk 제조 일련번호(SMSN)가 반환됩니다. 다음은 이 명령 실행의 예시 출력을 보여줍니다. API 응답의 파라미터에 대한 자세한 내용은 [https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_GetWirelessDevice.html](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_GetWirelessDevice.html) 섹션을 참조하세요.

**`GetWirelessDevice` API 응답(`wireless_device.json`의 내용)**

```
{
    "Arn": "arn:aws:iotwireless:us-east-1:123456789012:WirelessDevice/23456789-abcd-0123-bcde-fabc012345678",
    "Id": "23456789-abcd-0123-bcde-fabc012345678",
    "DestinationName": "SidewalkDestination",   
    "Type": "Sidewalk",
    "Sidewalk": {        
        "CertificateId": "4C7438772D50524F544F54595045",
        "DeviceCertificates": [
            {
                "SigningAlg": "Ed25519",
                "Value": "hDdkJw9L2uMCORjImjMHqzNR6nYYh6QKncSl5GthQNl7NKe4ounb5UMQtLjnm7zOUPYOqghCeVOLCBUiQe2ZiMBEW18JDUXIhffPobqZgohK91+LKFJ10X/F+GeltcafZcFKhS+O5NPcVNR/fHYaf/cn5iUbRwlz/T+ODXvGdwkBkgDyFgoUJgn7JdzFjaneE5qzTWXUbL79i1sXToGGjP8hiD9jJhidPWhIswleydAWgO1OZGA4CjzIaSGVM1VtaLB0VDphAkEpjMkZrtVDH3S8U1vDZTVi6YSbnkYZgfWv/uMMBfgAeL8Tdv5LkFIPIB3ZX9zt8zzmAuFRzI4MuNjWfIDnOF6AKu37WWU6/QYhZoQrW9D/wndiCcsRGl+ANn367r/HE02Re4DOiCfs9f2rjc4LT1LKt7g/KW2ii+W+9HYvvY0bBAI+AHx6Cx4j+djabTsvrgW2k6NU2zUSM7bdDP3z2a2+Z4WzBji/jYwt/OP8rpsy5Ee4ywXUfCsfQ0rKOr0zay6yh27p3I3MZle2oCO4JIlqK0VbIQqsXzSSyp6XXS0lhmuGugZ1AAADGz+gFBeX/ZNN8VJwnsNfgzj4me1HgVJdUo4W9kvx9cr2jHWkC3Oj/bdBTh1+yBjOC53yHlQK/l1GHrEWiWPPnE434LRxnWkwr8EHD4oieJxC8fkIxkQfj+gHhU79Z+oAAYAAAzsnf9SDIZPoDXF0TdC9POqTgld0oXDl2XPaVD4CvvLearrOSlFv+lsNbC4rgZn23MtIBM/7YQmJwmQ+FXRup6Tkubg1hpz04J/09dxg8UiZmntHiUr1GfkTOFMYqRB+Aw=="
            },
            {
                "SigningAlg": "P256r1",
                "Value": "hDdkJw9L2uMCORjImjMHqzNR6nYYh6QKncSl5GthQNmHmGU8a+SOqDXWwDNt3VSntpbTTQl7cMIusqweQo+JPXXWElbGh7eaxPGz4ZeF5yM2cqVNUrQr1lX/6lZ+OLuycrFrLzzB9APi0NIMLqV/Rt7XJssHQs2RPcT1ul/2XVpa6ztULJeQi2JwhTb/k48wbh/EvafG/ibrIBIx9v7/dwGRAPKHq7Uwb9hHnhpa8qNOUtjeUdIwJNh9vCBFX9s22t4PdortoFxbXo9C149PDDD4wqUHJGYlCsVX/Sqqjf7Aug3h5dwdYN6cDgsuuiOm0+aBcXBGpkh7OxVxlwXkIP+11dt23TkrSUKd0B01sc9Mc/0yEBCzx5RutKBwsefzyOl4vQX3AHgV7oD/XV73THMgGiDxQ55CPaaxN/pm791VkQ76BSZaBeF+Su6tg0k/eQneklt8Du5uqkyBHVxy8MvxsBIMZ73vIFwUrLHjDeq3+nOOyQqSBMnrHKU2mAwN3zb2LolwjPkKNOh1+NNnv99L2pBcNCnhnoBULWmWAZNXJpMx9QrcSwI9AHylcgUbGQJgf9Ryun+BgewzYNdWrXyKkp4O3ZDa4f+5SVWvbY5eyDDXcohvz/OcCtuRjAkzKBCvIjBDnCv1McjVdCO3+utizGntfhAo1RZstnOoRkgVF2WuMT9IrUmzYximuTXUmWtjyFSTqgNBZwHWUTlMmjlpLCVzZQWM4zOisXUAAALPsP34BS6EzJO5AsS5pC7QTpjBtAbLN9SdXOT9w4H1x8Nkp0ujLxWRN37IEy0V9DrPK2w1g74uqWPfUPnSBjtvM55JnQpmm23WQNvHa1Vr6zmWDjzjHpcNirPbzXyBlKEhkX4xylaSMnm4UrVXtAMaAJ/csC4HPTKr3dazdvEkhwGAAAIFByCjSp/5WHc4AhsyjMvKCsZQiKgiI8ECwjfXBaSZdY4zYsRlO3FC428H1atrFChFCZT0Bqt5LPXD38bMSB+vAUJiP8XqiEdXeqf2mYMJ5ykoDpwkve/cUQfPpjzFQlQfvwjBwiJDANKkOKoNT3bUGz+/f/pyTE+xMRdIUBZ1Bw=="
            }
        ],
        "DeviceProfileId": "0ff5b0c6-f149-4498-af34-21993acd52a7",
        "PrivateKeys": [
            {
                "SigningAlg": "Ed25519",
                "Value": "2c24d4572327f23b9bef38097137c29224a9e979081b3d90124ac9dfa477934e"
            },
            {
                "SigningAlg": "P256r1",
                "Value": "38d526f29cfaf142f596deca187bd809ef71bc13435eedc885b63bb825d63def"
            }
        ],        
        "SidewalkManufacturingSn": "843764270F4BDAE3023918C89A3307AB3351EA761887A40A9DC4A5E46B6140D9",
        "Status": "PROVISIONED"
    },
    
    ...
    
}
```

## 다음 단계


JSON 파일 *`wireless_device.json`* 및 *`device_profile.json`*을 임시로 저장합니다. 이 파일은 다음 단계에서 하드웨어 플랫폼에 연결하기 위해 엔드 디바이스를 프로비저닝하고 등록하는 데 사용됩니다. 자세한 내용은 **Amazon Sidewalk 설명서의 [엔드 디바이스 프로비저닝 및 등록](https://docs.sidewalk.amazon/provisioning/)을 참조하세요.

# Sidewalk 엔드 디바이스의 대상 추가
Sidewalk 디바이스의 대상 추가

AWS IoT 규칙을 사용하여 데이터 및 디바이스 메시지를 처리하고 이를 다른 서비스로 라우팅하세요. 다른 서비스에서 메시지를 쉽게 사용할 수 있도록 디바이스에서 받은 바이너리 메시지를 처리하여 메시지를 다른 형식으로 변환하는 규칙도 정의할 수 있습니다. 대상은 Sidewalk 엔드 디바이스를 디바이스의 데이터를 처리하여 다른 AWS 서비스로 보내는 규칙과 연결합니다.

## 대상을 만들고 사용하는 방법


1. 대상에 대한 AWS IoT 규칙과 IAM 역할을 생성합니다. AWS IoT 규칙은 디바이스의 데이터를 처리하고 다른 AWS 서비스 및 애플리케이션에서 사용할 수 있도록 라우팅하는 규칙을 지정합니다. IAM 역할은 이 규칙에 액세스하는 권한을 부여합니다.

1. `CreateDestination` API 작업을 사용하여 Sidewalk 디바이스의 대상을 생성합니다. 대상 이름, 규칙 이름, 역할 이름 및 기타 선택적 파라미터를 지정합니다. API는 대상의 고유 식별자를 반환하며, 이 식별자는 엔드 디바이스를 Amazon Sidewalk용 AWS IoT Core에 추가할 때 지정할 수 있습니다.

다음은 대상, 대상에 대한 AWS IoT 규칙 및 IAM 역할을 생성하는 방법을 보여줍니다.

**Topics**
+ [

## 대상을 만들고 사용하는 방법
](#iot-sidewalk-destination-how)
+ [

# Sidewalk 디바이스의 대상 생성
](iot-sidewalk-destination-create.md)
+ [

# 대상에 대한 IAM 역할 및 IoT 규칙 생성
](sidewalk-destination-rule-role.md)

# Sidewalk 디바이스의 대상 생성


[대상 허브](https://console.aws.amazon.com/iot/home#/wireless/destinations)를 사용하거나 `CreateDestination`을 사용하여 Amazon Sidewalk용 AWS IoT Core 계정에 대상을 추가할 수 있습니다. 대상을 만들 때 다음을 지정하세요.
+ Sidewalk 엔드 디바이스에 사용할 대상의 고유한 이름.
**참고**  
대상 이름을 사용하여 디바이스를 이미 추가한 경우 대상을 만들 때 해당 이름을 사용해야 합니다. 자세한 내용은 [2단계: Sidewalk 디바이스 추가](iot-sidewalk-add-device.md#iot-sidewalk-device-create) 단원을 참조하십시오.
+ 디바이스 데이터를 처리하는 AWS IoT 규칙의 이름 및 메시지가 게시되는 주제.
+ 규칙에 액세스하도록 디바이스의 데이터에 권한을 부여하는 IAM 역할.

다음 섹션에서는 대상에 대한 AWS IoT 규칙 및 IAM 역할을 생성하는 방법을 설명줍니다.

## 대상 생성 (콘솔)


AWS IoT 콘솔을 사용하여 대상을 만들려면 [대상 허브](https://console.aws.amazon.com/iot/home#/wireless/destinations)로 이동하여 **대상 추가**를 선택합니다.

![\[alt text not found\]](http://docs.aws.amazon.com/ko_kr/iot-wireless/latest/developerguide/images/iot-sidewalk-add-destination.PNG)


디바이스의 데이터를 처리하려면, 대상을 생성할 때 다음 필드를 지정하고 **대상 추가**를 선택합니다.
+ 

**대상 세부 사항**  
**대상 이름**을 입력하고 대상의 설명(선택 사항)을 입력합니다.
+ 

**규칙 이름**  
디바이스에서 보낸 메시지를 평가하고 디바이스의 데이터를 처리하도록 구성된 AWS IoT 규칙입니다. 규칙 이름이 대상에 매핑됩니다. 대상은 수신하는 메시지를 처리하기 위한 규칙이 필요합니다. AWS IoT 규칙을 호출하거나 AWS IoT 메시지 브로커에 게시하여 메시지를 처리하도록 선택할 수 있습니다.
  + **규칙 이름 입력(Enter a rule name)**을 선택하는 경우 이름을 입력한 다음 **복사(Copy)**를 선택하여 규칙 이름(AWS IoT 규칙을 생성할 때 입력)을 복사합니다. **규칙 생성**을 선택하여 지금 규칙을 생성하거나, AWS IoT 콘솔의 [규칙](https://console.aws.amazon.com/iot/home#/create/rule) 허브로 이동하여 해당 이름으로 규칙을 생성할 수 있습니다.

    규칙을 입력하고 **고급(Advanced)** 설정을 사용하여 주제 이름을 지정할 수도 있습니다. 주제 이름은 규칙 호출 중에 제공되며 규칙 내에서 `topic` 표현식을 사용하여 액세스됩니다. AWS IoT 규칙에 대한 자세한 내용은 [AWS IoT 규칙](https://docs.aws.amazon.com/iot/latest/developerguide/iot-rules.html)을 참조하세요.
  + **AWS IoT 메시지 브로커에 게시**를 선택하는 경우 주제 이름을 입력합니다. 그런 다음 MQTT 주제 이름을 복사하면 여러 구독자가 이 주제를 구독하여 해당 주제에 게시된 메시지를 받을 수 있습니다. 자세한 내용은 [MQTT 주제](https://docs.aws.amazon.com/iot/latest/developerguide/topics.html)를 참조하세요.

  대상에 대한 AWS IoT 규칙을 자세히 알아보려면 [LoRaWAN 디바이스 메시지를 처리하는 규칙 생성](https://docs.aws.amazon.com/iot/latest/developerguide/connect-iot-lorawan-destination-rules.html)을 참조하세요.
+ 

**역할 이름**  
**규칙 이름(Rule name)**에서 명명된 규칙에 액세스할 수 있는 디바이스의 데이터 권한을 부여하는 IAM 역할입니다. 콘솔에서 새 서비스 역할을 생성하거나 기존 서비스 역할을 선택합니다. 새 서비스 역할을 생성하는 경우 역할 이름(예: **SidewalkDestinationRole**)을 입력하거나 AWS IoT Core for LoRaWAN이 새 역할 이름을 생성할 수 있도록 비워 둘 수 있습니다. 그러면 AWS IoT Core for LoRaWAN이 사용자를 대신하여 적절한 권한이 있는 IAM 역할을 자동으로 생성합니다.

## 대상 생성 (CLI)


디바이스 프로필을 생성하려면 [https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_CreateDestination.html](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_CreateDestination.html) API 작업 또는 [https://docs.aws.amazon.com/cli/latest/reference/create-destination.html](https://docs.aws.amazon.com/cli/latest/reference/create-destination.html) CLI 명령을 사용합니다. 예를 들어 다음 명령을 실행하면 Sidewalk 엔드 디바이스에 대한 대상이 생성됩니다.

```
aws iotwireless create-destination --name SidewalkDestination \
    --expression-type RuleName --expression SidewalkRule \
    --role-arn arn:aws:iam::123456789012:role/SidewalkRole
```

이 명령을 실행하면 Amazon 리소스 이름(ARN)과 대상 이름 등 대상 세부 정보가 반환됩니다.

```
{
    "Arn": "arn:aws:iotwireless:us-east-1:123456789012:Destination/SidewalkDestination",
    "Name": "SidewalkDestination"
}
```

대상 생성에 대한 자세한 내용은 [LoRaWAN 디바이스 메시지를 처리하는 규칙 생성](https://docs.aws.amazon.com/iot/latest/developerguide/connect-iot-lorawan-destination-rules.html)을 참조하세요.

# 대상에 대한 IAM 역할 및 IoT 규칙 생성


AWS IoT 규칙은 디바이스 메시지를 다른 서비스로 전송합니다. 또한 AWS IoT 규칙은 Sidewalk 엔드 디바이스에서 수신한 바이너리 메시지를 처리하여 다른 서비스가 사용할 수 있도록 합니다. Amazon Sidewalk용 AWS IoT Core 대상은 무선 디바이스를 디바이스 메시지 데이터를 처리하여 다른 서비스로 전송하는 규칙과 연결합니다. 규칙은 Amazon Sidewalk용 AWS IoT Core에서 수신하는 즉시 디바이스의 데이터에 적용됩니다. 동일한 서비스에 데이터를 보내는 모든 디바이스가 공유하는 대상을 만들 수 있습니다. 또한 규칙에 데이터를 전송할 권한을 부여하는 IAM 역할을 생성해야 합니다.

## 대상에 대한 IAM 역할 생성


AWS IoT 규칙에 데이터를 전송할 권한을 Amazon Sidewalk용 AWS IoT Core에 부여하는 IAM 역할을 생성합니다. 역할을 생성하려면 [https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateRole.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateRole.html) API 작업 또는 [https://docs.aws.amazon.com/cli/latest/reference/iam/create-role](https://docs.aws.amazon.com/cli/latest/reference/iam/create-role) CLI 명령을 사용합니다. 역할 이름을 *`SidewalkRole`*로 지정할 수 있습니다.

```
aws iam create-role --role-name SidewalkRole \ 
    --assume-role-policy-document '{"Version": "2012-10-17","Statement": [{ "Effect": "Allow", "Principal": {"Service": "lambda.amazonaws.com"}, "Action": "sts:AssumeRole"}]}'
```

JSON 파일을 사용하여 역할에 대한 신뢰 정책을 정의할 수도 있습니다.

```
aws iam create-role --role-name SidewalkRole \ 
    --assume-role-policy-document file://trust-policy.json
```

다음은 JSON 파일의 내용을 보여줍니다.

**trust-policy.json의 내용**

```
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "lambda.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

## 대상에 대한 규칙 생성


AWS IoT Core API 작업 [https://docs.aws.amazon.com/iot/latest/apireference/API_CreateTopicRule.html](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateTopicRule.html) 또는 AWS CLI 명령 [https://docs.aws.amazon.com/cli/latest/reference/iot/create-topic-rule.html](https://docs.aws.amazon.com/cli/latest/reference/iot/create-topic-rule.html)을 사용하여 규칙을 생성합니다. 대상은 주제 규칙을 사용하여 Sidewalk 엔드 디바이스에서 수신한 데이터를 다른 AWS 서비스로 라우팅합니다. 예를 들어, Lambda 함수에 메시지를 보내는 규칙 작업을 생성할 수 있습니다. 디바이스로부터 애플리케이션 데이터를 수신하고 다른 애플리케이션에서 사용할 수 있도록 base64를 사용하여 페이로드 데이터를 디코딩하도록 Lambda 함수를 정의할 수 있습니다.

다음 단계는 Lambda 함수를 생성한 다음 이 함수에 메시지를 보내는 주제 규칙을 생성하는 방법을 보여줍니다.

1. 

**실행 역할 및 정책 생성**

   함수에 AWS 리소스에 액세스할 수 있는 권한을 제공하는 IAM 역할을 만듭니다. JSON 파일을 사용하여 역할에 대한 신뢰 정책을 정의할 수도 있습니다.

   ```
   aws iam create-role --role-name lambda-ex \ 
       --assume-role-policy-document file://lambda-trust-policy.json
   ```

   다음은 JSON 파일의 내용을 보여줍니다.

   **lambda-trust-policy.json의 내용**

   ```
   {
     "Version": "2012-10-17",
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "Service": "lambda.amazonaws.com"
         },
         "Action": "sts:AssumeRole"
       }
     ]
   }
   ```

1. 

**Lambda 함수 생성 및 테스트**

   base64가 페이로드 데이터를 디코딩하는 AWS Lambda 함수를 생성하려면 다음 단계를 수행하세요.

   1. 페이로드 데이터를 디코딩하기 위한 코드를 작성합니다. 예를 들어, 다음 샘플 Python 코드를 사용할 수 있습니다. 스크립트 이름을 지정합니다(예: *`base64_decode.py`*).

      **base64\$1decode.py의 내용**

      ```
      // -----------------------------------------------------------
      // ----- Python script to decode incoming binary payload -----
      // -----------------------------------------------------------
      import json
      import base64
      
      def lambda_handler(event, context):
      
          message = json.dumps(event)
          print (message)
      
          payload_data = base64.b64decode(event["PayloadData"])
          print(payload_data)
          print(int(payload_data,16))
      ```

   1. Python 파일이 포함된 zip 파일로 배포 패키지를 만들고 이름을 `base64_decode.zip`으로 지정합니다. `CreateFunction` API 또는 `create-function` CLI 명령을 사용하여 샘플 코드 *`base64_decode.py`*용 Lambda 함수를 생성합니다.

   1. 

      ```
      aws lambda create-function --function-name my-function \
      --zip-file fileb://base64_decode.zip --handler index.handler \ 
      --runtime python3.9 --role arn:aws:iam::123456789012:role/lambda-ex
      ```

      다음과 같이 출력되어야 합니다. 주제 규칙을 생성할 때 출력의 Amazon 리소스 이름(ARN)인 `FunctionArn` 값을 사용합니다.

      ```
      {
          "FunctionName": "my-function",
          "FunctionArn": "arn:aws:lambda:us-east-1:123456789012:function:my-function",
          "Runtime": "python3.9",
          "Role": "arn:aws:iam::123456789012:role/lambda-ex",
          "Handler": "index.handler",
          "CodeSha256": "FpFMvUhayLkOoVBpNuNiIVML/tuGv2iJQ7t0yWVTU8c=",
          "Version": "$LATEST",
          "TracingConfig": {
              "Mode": "PassThrough"
          },
          "RevisionId": "88ebe1e1-bfdf-4dc3-84de-3017268fa1ff",
          ...
      }
      ```

   1. 명령줄에서 호출에 대한 로그를 가져오려면 `invoke` 명령과 함께 `--log-type` 옵션을 사용하세요. 호출에서 base64로 인코딩된 로그를 최대 4KB까지 포함하는 LogResult 필드가 응답에 포함됩니다.

      ```
      aws lambda invoke --function-name my-function out --log-type Tail
      ```

      `StatusCode`가 200인 응답을 받게 됩니다. AWS CLI를 통한 Lambda 함숨 생성 및 사용에 대한 자세한 내용은 [AWS CLI에서 Lambda 사용](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-awscli.html)을 참조하세요.

1. 주제 규칙 생성

   `CreateTopicRule` API 또는 `create-topic-rule` CLI 명령을 사용하여 이 Lambda 함수에 메시지를 보내는 주제 규칙을 생성합니다. AWS IoT 주제에 다시 게시하는 두 번째 규칙 작업을 추가할 수도 있습니다. 이 주제 규칙의 이름을 `Sidewalkrule`로 지정합니다.

   ```
   aws iot create-topic-rule --rule-name Sidewalkrule \ 
       --topic-rule-payload file://myrule.json
   ```

   `myrule.json` 파일을 사용하여 규칙에 대한 자세한 내용을 지정할 수 있습니다. 예를 들어, 다음 JSON 파일은 AWS IoT 주제에 다시 게시하고 Lambda 함수에 메시지를 보내는 방법을 보여줍니다.

   ```
   {
       "sql": "SELECT * ",
       "actions": [
          {
               // You obtained this functionArn when creating the Lambda function using the 
               // create-function command.
               "lambda": {
                   "functionArn": "arn:aws:lambda:us-east-1:123456789012:function:my-function"
                }
           },
           {
               // This topic can be used to observe messages exchanged between the device and 
               // AWS IoT Core for Amazon Sidewalk after the device is connected.
                "republish": {
                    "roleArn": "arn:aws:iam::123456789012:role/service-role/SidewalkRepublishRole",
                    "topic": "project/sensor/observed"
                }
           }
       ],
   }
   ```

# Sidewalk 디바이스 연결 및 업링크 메타데이터 형식 보기
Sidewalk 디바이스 연결

이 자습서에서는 MQTT 테스트 클라이언트를 사용하여 연결성을 테스트하고 엔드 디바이스와 AWS 클라우드 간에 교환되는 메시지를 확인합니다. 메시지를 수신하려면 MQTT 테스트 클라이언트에서 대상에 대한 IoT 규칙을 생성할 때 지정한 주제를 구독하세요. `SendDataToWirelessDevice` API 작업을 사용하여 Amazon Sidewalk용 AWS IoT Core에서 디바이스에 다운링크 메시지를 보낼 수도 있습니다. 메시지 전송 상태 이벤트 알림을 활성화하여 메시지가 전송되었는지 확인할 수 있습니다.

**참고**  
하드웨어 플랫폼 연결 및 설정에 대한 자세한 내용은 **Amazon Sidewalk 설명서의 [엔드 디바이스 프로비저닝 및 등록](https://docs.sidewalk.amazon/provisioning/) 및 [Hardware Development Kit(HDK) 설정](https://docs.sidewalk.amazon/getting-started/sidewalk-onboard-prereq-hdk.html)을 참조하세요.

## 엔드 디바이스로 다운링크 메시지 전송


[https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_SendDataToWirelessDevice.html](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_SendDataToWirelessDevice.html) API 작업 또는 [https://docs.aws.amazon.com/cli/latest/reference/iotwireless/send-data-to-wireless-device.html](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/send-data-to-wireless-device.html) CLI 명령을 사용하여 Amazon Sidewalk용 AWS IoT Core에서 Sidewalk 엔드 디바이스로 다운링크 메시지를 보냅니다. 다음은 이 명령을 실행하는 방법의 예시를 보여줍니다. 페이로드 데이터는 base64로 인코딩된, 전송할 바이너리입니다.

```
aws iotwireless send-data-to-wireless-device \
    --id "<Wireless_Device_ID>" \
    --payload-data "SGVsbG8gVG8gRGV2c2lt" \
    --wireless-metadata Sidewalk={Seq=1,AckModeRetryDurationSecs=10}
```

다음은 디바이스로 전송된 다운링크 메시지의 ID인 이 명령 실행의 샘플 출력입니다.

```
{
    MessageId: "6011dd36-0043d6eb-0072-0008"
}
```

**참고**  
`SendDataToWirelessDevice` API는 메시지 ID를 반환할 수 있지만 메시지가 성공적으로 전송되지 않을 수 있습니다. 디바이스로 전송된 메시지의 상태를 확인하려면 Sidewalk 계정 및 디바이스에 대한 메시지 전송 상태 이벤트를 활성화할 수 있습니다. 이러한 이벤트를 활성화하는 방법에 대한 자세한 내용은 [Sidewalk 리소스에 대한 이벤트 알림](iot-sidewalk-events.md) 섹션을 참조하세요. 이 이벤트 유형에 대한 자세한 내용은 [메시지 전송 이벤트](https://docs.aws.amazon.com/iot/latest/developerguide/iot-sidewalk-message-delivery-events.html)를 참조하세요.

## 디바이스의 업링크 메시지 형식 보기


디바이스를 연결한 후 대상 규칙을 생성할 때 지정한 주제(예: *`project/sensor/observed`*)를 구독하고 디바이스의 업링크 메시지를 관찰할 수 있습니다.

대상을 만들 때 주제 이름을 지정한 경우 주제를 구독하여 엔드 디바이스의 업링크 메시지를 모니터링할 수 있습니다. AWS IoT 콘솔의 **테스트** 페이지에 있는 [MQTT 테스트 클라이언트](https://console.aws.amazon.com/iot/home#/test)로 이동하여 주제 이름(예: *`project/sensor/observed`*)을 입력한 다음 **구독**을 선택합니다.

다음 예에서는 Sidewalk 디바이스에서 AWS IoT로 전송한 업링크 메시지의 형식을 보여줍니다. `WirelessMetadata`에는 메시지 요청에 대한 메타데이터가 포함되어 있습니다.

```
{
   "PayloadData":"ZjRlNjY1ZWNlNw==",
   "WirelessDeviceId":"wireless_device_id",   
   "WirelessMetadata":{
      "Sidewalk":{
         "CmdExStatus":"Cmd",
         "SidewalkId":"device_id",
         "Seq":0,
         "MessageType":"messageType"
      }
    }
}
```

다음 표에서는 업링크 메타데이터의 여러 파라미터에 대한 정의를 보여 줍니다. 이 `device-id`는 `ABCDEF1234`와 같은 무선 디바이스의 ID이며, `messageType`은 디바이스에서 수신된 업링크 메시지의 유형입니다.


**업링크 메타데이터 파라미터**  

| 파라미터 | 설명 | 유형 | 필수 | 
| --- | --- | --- | --- | 
| PayloadData |  무선 디바이스에서 전송되는 메시지 페이로드입니다.  | String | 예 | 
| WirelessDeviceID | 데이터를 전송하는 무선 디바이스의 식별자입니다. | String | 예 | 
| Sidewalk.CmdExStatus |  명령 런타임 상태입니다. 응답 유형 메시지는 상태 코드 `COMMAND_EXEC_STATUS_SUCCESS`를 포함해야 합니다. 그러나 알림은 상태 코드를 포함하지 않을 수 있습니다.  | 열거 | 아니요 | 
| Sidewalk.NackExStatus |  응답 nack 상태(`RADIO_TX_ERROR` 또는 `MEMORY_ERROR`)입니다.  | 문자열 배열 | 아니요 | 