

지원 종료 공지: 2026년 10월 7일에는에 대한 지원을 중단할 AWS 예정입니다 AWS IoT Greengrass Version 1. 2026년 10월 7일 이후에는 더 이상 AWS IoT Greengrass V1 리소스에 액세스할 수 없습니다. 자세한 내용은 [에서 마이그레이션 AWS IoT Greengrass Version 1](https://docs.aws.amazon.com/greengrass/v2/developerguide/migrate-from-v1.html)을 참조하세요.

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

# Serial Stream 커넥터
<a name="serial-stream-connector"></a>

**주의**  <a name="connectors-extended-life-phase-warning"></a>
이 커넥터는 수명 연장 단계로 전환되었으며 AWS IoT Greengrass 는 기능, 기존 기능의 개선 사항, 보안 패치 또는 버그 수정을 제공하는 업데이트를 릴리스하지 않을 예정입니다.** 자세한 내용은 [AWS IoT Greengrass Version 1 유지 관리 정책](maintenance-policy.md) 단원을 참조하십시오.

직렬 스트림 [커넥터](connectors.md)는 AWS IoT Greengrass 코어 디바이스의 직렬 포트를 읽고 씁니다.

이 커넥터는 다음 두 가지 작업 모드를 지원합니다.
+ **온디맨드 읽기** MQTT 주제에 대한 읽기 및 쓰기 요청을 수신하고 읽기 작업의 응답 또는 쓰기 작업의 상태를 게시합니다.
+ **폴링 읽기** 직렬 포트에서 정기적으로 읽습니다. 이 모드에서는 온디맨드 읽기 요청도 지원합니다.

**참고**  
읽기 요청의 최대 읽기 길이는 63,994바이트로 제한됩니다. 쓰기 요청의 최대 데이터 길이는 128,000바이트로 제한됩니다.

이 커넥터의 버전은 다음과 같습니다.


| 버전 | ARN | 
| --- | --- | 
| 3 | `arn:aws:greengrass:{{region}}::/connectors/SerialStream/versions/3` | 
| 2 | `arn:aws:greengrass:{{region}}::/connectors/SerialStream/versions/2` | 
| 1 | `arn:aws:greengrass:{{region}}::/connectors/SerialStream/versions/1` | 

버전 변경 사항에 대한 자세한 내용은 [Changelog](#serial-stream-connector-changelog)를 참조하십시오.

## 요구 사항
<a name="serial-stream-connector-req"></a>

이 커넥터에는 다음과 같은 요구 사항이 있습니다.

------
#### [ Version 3 ]
+ <a name="conn-req-ggc-v1.9.3"></a>AWS IoT Greengrass 코어 소프트웨어 v1.9.3 이상.
+ <a name="conn-req-py-3.7-and-3.8"></a>코어 장치에 설치되고 PATH 환경 변수에 추가된 [Python](https://www.python.org/) 버전 3.7 또는 3.8입니다.
**참고**  <a name="use-runtime-py3.8"></a>
Python 3.8을 사용하려면 다음 명령을 실행하여 기본 Python 3.7 설치 폴더에서 설치된 Python 3.8 바이너리로 연결되는 심볼릭 링크를 만드십시오.  

  ```
  sudo ln -s {{path-to-python-3.8}}/python3.8 /usr/bin/python3.7
  ```
이렇게 하면 AWS IoT Greengrass에 대한 Python 요구 사항을 충족하도록 장치가 구성됩니다.
+ <a name="conn-serial-stream-req-serial-port-resource"></a>대상 직렬 포트를 가리키는 Greengrass 그룹의 [로컬 장치 리소스](access-local-resources.md)입니다.
**참고**  
이 커넥터를 배포하기 전에 직렬 포트를 설정하고 해당 포트에서 읽고 쓸 수 있는지 확인하는 것이 좋습니다.

------
#### [ Versions 1 - 2 ]
+ <a name="conn-req-ggc-v1.7.0"></a>AWS IoT Greengrass 코어 소프트웨어 v1.7 이상.
+ 코어 장치에 설치되고 PATH 환경 변수에 추가된 [Python](https://www.python.org/) 버전 2.7입니다.
+ <a name="conn-serial-stream-req-serial-port-resource"></a>대상 직렬 포트를 가리키는 Greengrass 그룹의 [로컬 장치 리소스](access-local-resources.md)입니다.
**참고**  
이 커넥터를 배포하기 전에 직렬 포트를 설정하고 해당 포트에서 읽고 쓸 수 있는지 확인하는 것이 좋습니다.

------

## 커넥터 파라미터
<a name="serial-stream-connector-param"></a>

이 커넥터는 다음 파라미터를 제공합니다.

`BaudRate`  
직렬 연결의 전송 속도입니다.  
 AWS IoT 콘솔의 표시 이름: **전송 속도**  
필수: `true`  
유형: `string`  
유효한 값: `110, 300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 56000, 57600, 115200, 230400`  
유효한 패턴: `^110$|^300$|^600$|^1200$|^2400$|^4800$|^9600$|^14400$|^19200$|^28800$|^38400$|^56000$|^57600$|^115200$|^230400$`

`Timeout`  
읽기 작업에 대한 제한 시간(초)입니다.  
 AWS IoT 콘솔의 표시 이름: **제한 시간**  
필수: `true`  
유형: `string`  
유효한 값: `1 - 59`  
유효한 패턴: `^([1-9]|[1-5][0-9])$`

`SerialPort`  
장치에서 물리적 직렬 포트의 절대 경로입니다. 로컬 장치 리소스에 대해 지정된 소스 경로입니다.  
 AWS IoT 콘솔의 표시 이름: **직렬 포트**  
필수: `true`  
유형: `string`  
유효한 패턴: `[/a-zA-Z0-9_-]+`

`SerialPort-ResourceId`  
물리적 직렬 포트를 나타내는 로컬 장치 리소스의 ID입니다.  
이 커넥터에는 리소스에 대한 쓰기 전용 액세스 권한이 부여됩니다.
 AWS IoT 콘솔의 표시 이름: **직렬 포트 리소스**  
필수: `true`  
유형: `string`  
유효한 패턴: `[a-zA-Z0-9_-]+`

`PollingRead`  
읽기 모드(폴링 읽기 또는 온디맨드 읽기)를 설정합니다.  
+ 폴링 읽기 모드의 경우 `true`를 지정합니다. 이 모드에서는 `PollingInterval`, `PollingReadType` 및 `PollingReadLength` 속성이 필요합니다.
+ 온디맨드 읽기 모드의 경우 `false`를 지정합니다. 이 모드에서는 유형 및 길이 값이 읽기 요청에서 지정됩니다.
 AWS IoT 콘솔의 표시 이름: **읽기 모드**  
필수: `true`  
유형: `string`  
유효한 값: `true, false`  
유효한 패턴: `^([Tt][Rr][Uu][Ee]|[Ff][Aa][Ll][Ss][Ee])$`

`PollingReadLength`  
각 폴링 읽기 작업에서 읽을 데이터(바이트)의 길이입니다. 이는 폴링 읽기 모드를 사용하는 경우에만 적용됩니다.  
 AWS IoT 콘솔의 표시 이름: **폴링 읽기 길이**  
필수: `false`. `PollingRead`가 `true`인 경우 이 속성은 필수입니다.  
유형: `string`  
유효한 패턴: `^(|[1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-2][0-9]{3}|63[0-8][0-9]{2}|639[0-8][0-9]|6399[0-4])$`

`PollingReadInterval`  
폴링 읽기를 수행하는 간격(초)입니다. 이는 폴링 읽기 모드를 사용하는 경우에만 적용됩니다.  
 AWS IoT 콘솔의 표시 이름: **폴링 읽기 간격**  
필수: `false`. `PollingRead`가 `true`인 경우 이 속성은 필수입니다.  
유형: `string`  
유효한 값은 1\~999입니다.  
유효한 패턴: `^(|[1-9]|[1-9][0-9]|[1-9][0-9][0-9])$`

`PollingReadType`  
폴링 스레드가 읽는 데이터 형식입니다. 이는 폴링 읽기 모드를 사용하는 경우에만 적용됩니다.  
 AWS IoT 콘솔의 표시 이름: **폴링 읽기 유형**  
필수: `false`. `PollingRead`가 `true`인 경우 이 속성은 필수입니다.  
유형: `string`  
유효한 값: `ascii, hex`  
유효한 패턴: `^(|[Aa][Ss][Cc][Ii][Ii]|[Hh][Ee][Xx])$`

`RtsCts`  
RTS/CTS 흐름 제어를 활성화할지 여부를 나타냅니다. 기본값은 `false`입니다. 자세한 내용은 [RTS, CTS 및 RTR](https://en.wikipedia.org/wiki/RS-232#RTS,_CTS,_and_RTR)을 참조하십시오.  
 AWS IoT 콘솔의 표시 이름: **RTS/CTS 흐름 제어**  
필수: `false`  
유형: `string`  
유효한 값: `true, false`  
유효한 패턴: `^(|[Tt][Rr][Uu][Ee]|[Ff][Aa][Ll][Ss][Ee])$`

`XonXoff`  
소프트웨어 흐름 제어를 활성화할지 여부를 나타냅니다. 기본값은 `false`입니다. 자세한 내용은 [소프트웨어 흐름 제어](https://en.wikipedia.org/wiki/Software_flow_control)를 참조하십시오.  
 AWS IoT 콘솔의 표시 이름: **소프트웨어 흐름 제어**  
필수: `false`  
유형: `string`  
유효한 값: `true, false`  
유효한 패턴: `^(|[Tt][Rr][Uu][Ee]|[Ff][Aa][Ll][Ss][Ee])$`

`Parity`  
직렬 포트의 패리티입니다. 기본값은 `N`입니다. 자세한 내용은 [패리티](https://en.wikipedia.org/wiki/Serial_port#Parity)를 참조하십시오.  
 AWS IoT 콘솔의 표시 이름: **직렬 포트 패리티**  
필수: `false`  
유형: `string`  
유효한 값: `N, E, O, S, M`  
유효한 패턴: `^(|[NEOSMneosm])$`

### 커넥터 만들기 예(AWS CLI)
<a name="serial-stream-connector-create"></a>

다음 CLI 명령은 Serial Stream 커넥터가 포함된 초기 버전을 사용하여 `ConnectorDefinition`을 생성합니다. 폴링 읽기 모드에 대해 커넥터를 구성합니다.

```
aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{
    "Connectors": [
        {
            "Id": "MySerialStreamConnector",
            "ConnectorArn": "arn:aws:greengrass:{{region}}::/connectors/SerialStream/versions/3",
            "Parameters": {
                "BaudRate" : "9600",
                "Timeout" : "25",
                "SerialPort" : "/dev/serial1",
                "SerialPort-ResourceId" : "my-serial-port-resource",
                "PollingRead" : "true",
                "PollingReadLength" : "30",
                "PollingReadInterval" : "30",
                "PollingReadType" : "hex"
            }
        }
    ]
}'
```

 AWS IoT Greengrass 콘솔의 커넥터 페이지에서 커넥터를 추가할 수 **있습니다**. 자세한 내용은 [Greengrass 커넥터 시작하기(콘솔)](connectors-console.md) 단원을 참조하십시오.

## 입력 데이터
<a name="serial-stream-connector-data-input"></a>

이 커넥터는 두 개의 MQTT 주제에서 직렬 포트에 대한 읽기 또는 쓰기 요청을 수락합니다. 입력 메시지는 JSON 형식이어야 합니다.
+ `serial/+/read/#` 주제에 대한 읽기 요청.
+ `serial/+/write/#` 주제에 대한 쓰기 요청.

이러한 주제에 게시하려면 `+` 와일드카드를 코어 사물 이름으로 바꾸고 `#` 와일드카드를 직렬 포트의 경로로 바꿉니다. 예제:

```
serial/{{core-thing-name}}/read/dev/{{serial-port}}
```

**주제 필터:** `serial/+/read/#`  
이 주제를 사용하여 온디맨드 읽기 요청을 직렬 핀에 전송합니다. 읽기 요청의 최대 읽기 길이는 63,994바이트로 제한됩니다.    
**메시지 속성**    
`readLength`  
직렬 포트에서 읽을 데이터의 길이입니다.  
필수: `true`  
유형: `string`  
유효한 패턴: `^[1-9][0-9]*$`  
`type`  
읽을 데이터의 유형입니다.  
필수: `true`  
유형: `string`  
유효한 값: `ascii, hex`  
유효한 패턴: `(?i)^(ascii|hex)$`  
`id`  
요청에 대한 임의의 ID입니다. 이 속성은 입력 요청을 출력 응답에 매핑하는 데 사용됩니다.  
필수: `false`  
유형: `string`  
유효한 패턴: `.+`  
**입력 예**  

```
{
    "readLength": "30",
    "type": "ascii",
    "id": "abc123"
}
```

**주제 필터:** `serial/+/write/#`  
이 주제를 사용하여 쓰기 요청을 직렬 핀에 전송합니다. 쓰기 요청의 최대 데이터 길이는 128,000바이트로 제한됩니다.    
**메시지 속성**    
`data`  
직렬 포트에 쓸 문자열입니다.  
필수: `true`  
유형: `string`  
유효한 패턴: `^[1-9][0-9]*$`  
`type`  
읽을 데이터의 유형입니다.  
필수: `true`  
유형: `string`  
유효한 값: `ascii, hex`  
유효한 패턴: `^(ascii|hex|ASCII|HEX)$`  
`id`  
요청에 대한 임의의 ID입니다. 이 속성은 입력 요청을 출력 응답에 매핑하는 데 사용됩니다.  
필수: `false`  
유형: `string`  
유효한 패턴: `.+`  
**입력 예: ASCII 요청**  

```
{
    "data": "{{random serial data}}",
    "type": "ascii",
    "id": "abc123"
}
```  
**입력 예: 16진수 요청**  

```
{
    "data": "{{base64 encoded data}}",
    "type": "hex",
    "id": "abc123"
}
```

## 출력 데이터
<a name="serial-stream-connector-data-output"></a>

이 커넥터는 다음 두 가지 주제에 대한 출력 데이터를 게시합니다.
+ `serial/+/status/#` 주제에 대한 커넥터의 상태 정보.
+ `serial/+/read_response/#` 주제에 대한 읽기 요청의 응답입니다.

이 주제에 게시하는 경우 커넥터는 `+` 와일드 카드를 코어 사물 이름으로 바꾸고 `#` 와일드카드를 직렬 포트 경로로 바꿉니다. 예제:

```
serial/{{core-thing-name}}/status/dev/{{serial-port}}
```

**주제 필터:** `serial/+/status/#`  
이 주제를 사용하여 읽기 및 쓰기 요청의 상태를 수신합니다. `id` 속성이 응답에 포함된 경우 속성이 응답으로 반환됩니다.    
**출력 예: 성공**  

```
{
    "response": {
        "status": "success"
    },
    "id": "abc123"
}
```  
**출력 예: 실패**  
실패 응답은 읽기 또는 쓰기 작업을 수행하는 동안 발생한 오류 또는 제한 시간을 설명하는 `error_message` 속성을 포함합니다.  

```
{
    "response": {
        "status": "fail",
        "error_message": "Could not write to port"
    },
    "id": "abc123"
}
```

**주제 필터:** `serial/+/read_response/#`  
이 주제를 사용하여 읽기 작업에서 응답 데이터를 수신합니다. 형식이 `hex`인 경우 응답 데이터는 base64로 인코딩됩니다.    
**출력 예**  

```
{
    "data": "{{output of serial read operation}}"
    "id": "abc123"
}
```

## 사용 예
<a name="serial-stream-connector-usage"></a>

<a name="connectors-setup-intro"></a>다음 상위 수준 단계를 사용하여 커넥터를 사용해 보는 데 이용할 수 있는 예제 Python 3.7 Lambda 함수를 설정합니다.

**참고**  <a name="connectors-setup-get-started-topics"></a>
다른 Python 런타임을 사용하는 경우 Python3.x에서 Python 3.7로의 심볼릭 링크를 만들 수 있습니다.
[커넥터 시작하기(콘솔)](connectors-console.md) 및 [커넥터 시작하기(CLI)](connectors-cli.md) 주제에는 예제 Twilio 알림 커넥터를 구성하고 배포하는 방법을 보여주는 자세한 단계가 포함되어 있습니다.

1. 커넥터에 대한 [요구 사항](#serial-stream-connector-req)을 충족하는지 확인합니다.

1. <a name="connectors-setup-function"></a>입력 데이터를 커넥터로 보내는 Lambda 함수를 생성하고 게시합니다.

   [예제 코드](#serial-stream-connector-usage-example)를 PY 파일로 저장합니다. <a name="connectors-setup-function-sdk"></a>[Python용AWS IoT Greengrass 코어 SDK](lambda-functions.md#lambda-sdks-core)를 다운로드하고 압축을 풉니다. 그런 다음 루트 수준에서 PY 파일과 `greengrasssdk` 폴더를 포함하는 zip 패키지를 생성합니다. 이 zip 패키지는 AWS Lambda에 업로드하는 배포 패키지입니다.

   <a name="connectors-setup-function-publish"></a>Python 3.7 Lambda 함수를 생성한 후 함수 버전을 게시하고 별칭을 만듭니다.

1. Greengrass 그룹을 구성합니다.

   1. <a name="connectors-setup-gg-function"></a>별칭으로 Lambda 함수를 추가합니다(권장). Lambda 수명 주기를 수명이 긴 함수(또는 CLI의 `"Pinned": true`)로 구성합니다.

   1. <a name="connectors-setup-device-resource"></a>필요한 로컬 장치 리소스를 추가하고 Lambda 함수에 대한 읽기/쓰기 액세스 권한을 부여합니다.

   1. 그룹에 커넥터를 추가하고 해당 [파라미터](#serial-stream-connector-param)를 구성합니다.

   1. 커넥터가 [입력 데이터](#serial-stream-connector-data-input)를 수신하고 지원되는 주제 필터에서 [출력 데이터](#serial-stream-connector-data-output)를 전송할 수 있도록 허용하는 구독을 그룹에 추가합니다.
      + <a name="connectors-setup-subscription-input-data"></a>Lambda 함수를 소스로, 커넥터를 대상으로 설정하고 지원되는 입력 주제 필터를 사용합니다.
      + <a name="connectors-setup-subscription-output-data"></a>커넥터를 소스로, AWS IoT Core 를 대상으로 설정하고 지원되는 출력 주제 필터를 사용합니다. 이 구독을 사용하여 AWS IoT 콘솔에서 상태 메시지를 볼 수 있습니다.

1. <a name="connectors-setup-deploy-group"></a>그룹을 배포합니다.

1. <a name="connectors-setup-test-sub"></a> AWS IoT 콘솔의 **테스트** 페이지에서 출력 데이터 주제를 구독하여 커넥터의 상태 메시지를 확인합니다. 예제 Lambda 함수는 수명이 긴 함수로 그룹이 배포된 직후 메시지 전송을 시작합니다.

   테스트를 마치면 Lambda 수명 주기를 온디맨드 함수(또는 CLI의 `"Pinned": false`)로 설정하고 그룹을 배포할 수 있습니다. 이렇게 하면 함수가 메시지 전송을 중지합니다.

### 예제
<a name="serial-stream-connector-usage-example"></a>

다음 예제 Lambda 함수는 커넥터에 입력 메시지를 보냅니다.

```
import greengrasssdk
import json

TOPIC_REQUEST = 'serial/CORE_THING_NAME/write/dev/serial1'

# Creating a greengrass core sdk client
iot_client = greengrasssdk.client('iot-data')

def create_serial_stream_request():
	request = {
		"data": "TEST",
		"type": "ascii",
		"id": "abc123"
	}
	return request

def publish_basic_request():
	iot_client.publish(payload=json.dumps(create_serial_stream_request()), topic=TOPIC_REQUEST)

publish_basic_request()

def lambda_handler(event, context):
	return
```

## 라이선스
<a name="serial-stream-connector-license"></a>

Serial Stream 커넥터에는 다음 타사 소프트웨어/라이선스가 포함되어 있습니다.
+ [pyserial](https://github.com/pyserial/pyserial)/BSD

이 커넥터는 [Greengrass 코어 소프트웨어 라이선스 계약](https://greengrass-release-license.s3.us-west-2.amazonaws.com/greengrass-license-v1.pdf)에 따라 릴리스됩니다.

## Changelog
<a name="serial-stream-connector-changelog"></a>

다음 표에서는 의 각 릴리스에서 변경된 중요 사항에 대해 설명합니다.


| 버전 | 변경 사항 | 
| --- | --- | 
| 3 | <a name="upgrade-runtime-py3.7"></a>Lambda 런타임 요구 사항을 변경하는 Python 3.7로 런타임을 업그레이드했습니다. | 
| 2 |  AWS 리전 지원을 위해 커넥터 ARN을 업데이트했습니다. | 
| 1 | 최초 릴리스입니다. | 

<a name="one-conn-version"></a>Greengrass 그룹은 한 번에 하나의 커넥터 버전만 포함할 수 있습니다. 커넥터 버전 업그레이드에 대한 자세한 내용은 [커넥터 버전 업그레이드](connectors.md#upgrade-connector-versions)을 참조하십시오.

## 다음 사항도 참조하세요.
<a name="serial-stream-connector-see-also"></a>
+ [Greengrass 커넥터를 사용하여 서비스 및 프로토콜과 통합](connectors.md)
+ [Greengrass 커넥터 시작하기(콘솔)](connectors-console.md)
+ [Greengrass 커넥터 시작하기(CLI)](connectors-cli.md)