

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

# SageMaker Edge Manager에서 디바이스 및 플릿 설정
<a name="edge-device-fleet"></a>

플릿은 데이터 수집 및 분석 시 사용 가능한 논리적으로 그룹화된 디바이스 컬렉션입니다. SageMaker Edge Manager로 스마트 카메라, 스마트 스피커, 로봇 및 기타 엣지 디바이스에서 기계 학습 모델을 가동할 수 있습니다.

를 AWS SDK for Python (Boto3) 사용하거나 SageMaker AI 콘솔을 통해 프로그래밍 방식으로 플릿을 생성하고 디바이스를 등록합니다.

**Topics**
+ [플릿 생성](edge-device-fleet-create.md)
+ [디바이스 등록](edge-device-fleet-register.md)
+ [상태 확인](edge-device-fleet-check-status.md)

# 플릿 생성
<a name="edge-device-fleet-create"></a>

 AWS SDK for Python (Boto3) 또는 SageMaker AI 콘솔 [https://console.aws.amazon.com/sagemaker](https://console.aws.amazon.com/sagemaker/) 통해 프로그래밍 방식으로 플릿을 생성할 수 있습니다.

## 플릿 만들기(Boto3)
<a name="edge-device-fleet-create-boto3"></a>

`CreateDeviceFleet` API로 플릿을 생성합니다. 플릿의 이름, `RoleArn` 필드의 AWS IoT 역할 ARN, 디바이스가 샘플링된 데이터를 저장할 Amazon S3 URI를 지정합니다.

선택적으로 플릿, 태그 및 AWS KMS 키 ID에 대한 설명을 포함할 수 있습니다.

```
import boto3

# Create SageMaker client so you can interact and manage SageMaker resources
sagemaker_client = boto3.client("sagemaker", region_name="aws-region")

sagemaker_client.create_device_fleet(
    DeviceFleetName="sample-fleet-name",
    RoleArn="arn:aws:iam::999999999:role/rolename", # IoT Role ARN
    Description="fleet description",
    OutputConfig={
        S3OutputLocation="s3://bucket/",
        KMSKeyId: "1234abcd-12ab-34cd-56ef-1234567890ab",
    },
        Tags=[
        {
            "Key": "string", 
            "Value" : "string"
         }
     ],
)
```

디바이스 플릿을 생성할 때 AWS IoT 역할 별칭이 생성됩니다. 역할 별칭은 AWS IoT 연결된 디바이스가 X.509 인증서를 AWS IoT 사용하여에 인증한 다음 역할 별 AWS IoT 칭과 연결된 IAM 역할에서 수명이 짧은 AWS 자격 증명을 얻는 메커니즘을 제공합니다.

`DescribeDeviceFleet`(으)로 역할 별칭 이름 및 ARN을 가져옵니다.

```
# Print Amazon Resource Name (ARN) and alias that has access 
# to AWS Internet of Things (IoT).
sagemaker_client.describe_device_fleet(DeviceFleetName=device_fleet_name)['IotRoleAlias']
```

`DescribeDeviceFleet` API로 생성한 플릿에 대한 설명을 가져옵니다.

```
sagemaker_client.describe_device_fleet(
    DeviceFleetName="sample-fleet-name"
)
```

기본적으로 플릿 이름, 디바이스 플릿 ARN, Amazon S3 버킷 URI, IAM 역할, 생성된 역할 별칭 AWS IoT, 플릿이 생성된 시점의 타임스탬프, 플릿이 마지막으로 수정된 시점의 타임스탬프를 반환합니다.

```
{ "DeviceFleetName": "sample-fleet-name",
  "DeviceFleetArn": "arn:aws:sagemaker:us-west-2:9999999999:device-fleet/sample-fleet-name",
  "IAMRole": "arn:aws:iam::999999999:role/rolename",
  "Description": "this is a sample fleet",
  "IoTRoleAlias": "arn:aws:iot:us-west-2:9999999999:rolealias/SagemakerEdge-sample-fleet-name"
  "OutputConfig": {
              "S3OutputLocation": "s3://bucket/folder",
              "KMSKeyId": "1234abcd-12ab-34cd-56ef-1234567890ab"
   },
   "CreationTime": "1600977370",
   "LastModifiedTime": "1600977370"}
```

## 플릿 만들기(콘솔)
<a name="edge-device-fleet-create-console"></a>

Amazon SageMaker AI 콘솔([https://console.aws.amazon.com/sagemaker](https://console.aws.amazon.com/sagemaker/))로 Edge Manager 패키징 작업을 만들 수 있습니다.

1. SageMaker AI 콘솔에서 **Edge Manager**를 선택한 다음 **엣지 디바이스 플릿**을 선택합니다.

1. **디바이스 플릿 생성**을 선택합니다.  
![\[콘솔에서 디바이스 생성 플릿의 위치입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/smith/create-device-button-edited.png)

1. **디바이스 플릿 이름** 필드에 디바이스 플릿 이름을 입력합니다. **다음**을 선택합니다.  
![\[콘솔의 디바이스 플릿 속성 섹션에서 다음 버튼의 위치입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/smith/create-device-fleet-filled.png)

1. **출력 구성** 페이지에서 디바이스 플릿의 샘플 데이터를 저장할 Amazon S3 버킷 URI를 지정합니다. 필요에 따라 드롭다운 목록에서 기존 키를 선택하거나 AWS KMS 키의 ARN을 입력하여 암호화 키를 추가할 수도 있습니다. **제출**을 선택합니다.  
![\[콘솔의 출력 구성 페이지 예시.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/smith/create-device-fleet-output-filled.png)

1. 디바이스 플릿 세부 정보로 리디렉션될 디바이스 플릿 이름을 선택합니다. 이 페이지에는 디바이스 플릿 이름, ARN, 설명(입력 시), 플릿 생성 날짜, 플릿 최종 수정 시간, Amazon S3 버킷 URI, AWS KMS 키 ID(입력 시), AWS IoT 별칭(입력 시) 및 IAM 역할이 표시됩니다. 태그를 추가하면 **디바이스 플릿 태그** 섹션에 해당 태그가 표시됩니다.

# 디바이스 등록
<a name="edge-device-fleet-register"></a>

**중요**  
SageMaker Edge Manager의 모든 부분을 사용하려면 디바이스 등록이 필요합니다.

를 AWS SDK for Python (Boto3) 사용하거나 [https://console.aws.amazon.com/sagemaker](https://console.aws.amazon.com/sagemaker/) SageMaker AI 콘솔을 통해 프로그래밍 방식으로 플릿을 생성할 수 있습니다.

## 디바이스 등록(Boto3)
<a name="edge-device-fleet-register-boto3"></a>

디바이스를 등록하려면 먼저 AWS IoT 사물 객체를 생성 및 등록하고 IAM 역할을 구성합니다. SageMaker Edge Manager는 AWS IoT Core 서비스를 활용하여 엣지 디바이스와 클라우드 간의 연결을 용이하게 합니다. Edge Manager와 함께 작동하도록 디바이스를 설정한 후 기존 AWS IoT 기능을 활용할 수 있습니다.

디바이스를에 연결하려면 AWS IoT 사물 객체를 생성하고, 클라이언트 인증서를 생성 및 등록하고 AWS IoT, 디바이스에 대한 IAM 역할을 생성 및 구성 AWS IoT 해야 합니다.

자세한 예제는 [시작 안내서](https://docs.aws.amazon.com/sagemaker/latest/dg/edge-manager-getting-started.html)를 참조하거나 [실습 자습서의 Explore AWS IoT Core 서비스를](https://docs.aws.amazon.com/iot/latest/developerguide/iot-gs-first-thing.html) 참조하세요.

`RegisterDevices` API로 디바이스를 등록합니다. 디바이스를 포함하려는 플릿의 이름과 디바이스의 이름을 입력합니다. 선택적으로 디바이스, 태그 및 디바이스와 연결된 AWS IoT 사물 이름에 설명을 추가할 수 있습니다.

```
sagemaker_client.register_devices(
    DeviceFleetName="sample-fleet-name",
    Devices=[
        {          
            "DeviceName": "sample-device-1",
            "IotThingName": "sample-thing-name-1",
            "Description": "Device #1"
        }
     ],
     Tags=[
        {
            "Key": "string", 
            "Value" : "string"
         }
     ],
)
```

## 디바이스 등록(콘솔)
<a name="edge-device-fleet-register-console"></a>

SageMaker AI 콘솔([https://console.aws.amazon.com/sagemaker](https://console.aws.amazon.com/sagemaker/))로 디바이스를 등록할 수 있습니다.

1. SageMaker AI 콘솔에서 **엣지 추론**을 선택한 다음 **엣지 디바이스**를 선택합니다.

1. **디바이스 등록**을 선택합니다.  
![\[콘솔의 엣지 디바이스 섹션에서 디바이스 등록 위치입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/smith/register-device-button.png)

1. **디바이스 속성** 섹션에서 디바이스가 속한 플릿 이름을 **디바이스 플릿 이름** 필드 아래에 입력합니다. **다음**을 선택합니다.  
![\[콘솔의 디바이스 속성 섹션.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/smith/register-devices-empty.png)

1. **디바이스 소스** 섹션에서 디바이스를 하나씩 추가합니다. 플릿에 있는 개별 디바이스의 **디바이스 이름**을 포함해야 합니다. 선택적으로 설명(**설명** 필드)과 사물 인터넷(IoT) 객체 이름(**IoT 이름** 필드)을 입력할 수 있습니다. 디바이스를 모두 추가한 후 **제출**을 선택합니다.  
![\[콘솔의 디바이스 소스 섹션입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/smith/register-devices-device-source.png)

   **디바이스** 페이지에는 추가한 디바이스의 이름, 디바이스가 속한 플릿, 등록된 시간, 마지막 하트비트, 제공한 경우 설명 및 AWS IoT 이름이 표시됩니다.

   디바이스를 선택하면 디바이스 이름, 플릿, ARN, 설명, IoT 사물 이름, 디바이스 등록 시기, 마지막 하트비트 등 디바이스 세부 정보를 볼 수 있습니다.

# 상태 확인
<a name="edge-device-fleet-check-status"></a>

디바이스 또는 플릿이 연결되어 있고 데이터 샘플링 중인지 확인합니다. 수동 또는 자동 정기 점검을 통해 디바이스나 플릿의 정상 작동 여부를 확인할 수 있습니다.

Amazon S3 콘솔([https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/))로 상태 확인 시 사용할 플릿을 대화식으로 선택합니다. AWS SDK for Python (Boto3)도 사용할 수 있습니다. 다음은 디바이스 또는 플릿 상태 확인 시 사용 가능한 Boto3의 다양한 API에 대한 설명입니다. 사용 사례에 가장 적합한 API를 사용합니다.
+ **개별 디바이스를 확인합니다.**

  개별 디바이스 상태를 확인하려면 `DescribeDevice` API를 사용합니다. 모델이 디바이스에 배포된 경우 하나 이상의 모델이 포함된 목록이 입력됩니다.

  ```
  sagemaker_client.describe_device(
      DeviceName="sample-device-1",
      DeviceFleetName="sample-fleet-name"
  )
  ```

  `DescribeDevice` 반환 실행:

  ```
  { "DeviceName": "sample-device".
    "Description": "this is a sample device",
    "DeviceFleetName": "sample-device-fleet",
    "IoTThingName": "SampleThing",
    "RegistrationTime": 1600977370,
    "LatestHeartbeat": 1600977370,
    "Models":[
          {
           "ModelName": "sample-model", 
           "ModelVersion": "1.1",
           "LatestSampleTime": 1600977370,
           "LatestInference": 1600977370 
          }
     ]
  }
  ```
+ **디바이스 플릿을 확인합니다.**

  `GetDeviceFleetReport` API를 사용하여 플릿 상태를 확인합니다. 디바이스 플릿 이름을 입력하여 플릿 요약을 가져옵니다.

  ```
  sagemaker_client.get_device_fleet_report(
      DeviceFleetName="sample-fleet-name"
  )
  ```
+ **하트비트를 확인합니다.**

  플릿 내 개별 디바이스는 주기적으로 신호, 즉 “하트비트”를 생성합니다. 하트비트로 디바이스가 Edge Manager와 통신하고 있는지 확인할 수 있습니다. 마지막 하트비트의 타임스탬프가 업데이트되지 않는 경우 디바이스에 장애가 발생한 것일 수 있습니다.

  디바이스에서 만든 마지막 하트비트를 `DescribeDevice` API로 확인합니다. 디바이스와 엣지 디바이스가 속한 플릿 이름을 지정합니다.

  ```
  sagemaker_client.describe_device(
      DeviceName="sample-device-1",
      DeviceFleetName="sample-fleet-name"
  )
  ```