

지원 종료 공지: 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)을 참조하세요.

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

# Kinesis Firehose
<a name="kinesis-firehose-connector"></a>

Kinesis Firehose [커넥터](connectors.md)는 Amazon Data Firehose 전송 스트림을 통해 Amazon S3, Amazon Redshift, Amazon OpenSearch Service 등의 대상에 데이터를 게시합니다.

이 커넥터는 Kinesis 전송 스트림을 위한 데이터 생산자입니다. MQTT 주제에 대한 입력 데이터를 수신해 지정된 전송 스트립으로 보냅니다. 그런 다음 전송 스트립에서는 해당 데이터 레코드를 구성된 대상(예: S3 버킷)으로 보냅니다.

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


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

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

## 요구 사항
<a name="kinesis-firehose-connector-req"></a>

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

------
#### [ Version 4 - 5 ]
+ <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="req-kinesis-firehose-stream"></a>구성된 Kinesis 전송 스트림입니다. 자세한 정보는 *Amazon Kinesis Firehose 개발자 안내서*의 [Amazon Data Firehose 전송 스트림 생성](https://docs.aws.amazon.com/firehose/latest/dev/basic-create.html)을 참조하세요.
+ <a name="req-kinesis-firehose-iam-policy-v2"></a>다음 예제에 표시된 것처럼 [Greengrass 그룹 역할](group-role.md)에 추가된, 대상 전송 스트림에 대한 `firehose:PutRecord` 및 `firehose:PutRecordBatch` 작업을 허용하는 IAM 정책입니다.

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement":[
          {
              "Sid":"Stmt1528133056761",
              "Action":[
                  "firehose:PutRecord",
                  "firehose:PutRecordBatch"
              ],
              "Effect":"Allow",
              "Resource":[
              "arn:aws:firehose:{{us-east-1}}:{{123456789012}}:deliverystream/{{stream-name}}"
              ]
          }
      ]
   }
  ```

------

  이 커넥터를 사용하면 입력 메시지 페이로드에서 기본 전송 스트림을 동적으로 재정의할 수 있습니다. 이 기능을 사용하여 구현하는 경우, IAM 정책에 모든 대상 스트림이 리소스로 포함되어야 합니다. 리소스에 대한 세부적 또는 조건부 액세스 권한을 부여할 수 있습니다(예: 와일드카드 \* 이름 지정 스키마를 통해).

  <a name="set-up-group-role"></a>그룹 역할 요구 사항의 경우, 필수 권한을 부여하도록 역할을 구성하고 역할이 그룹에 추가되었는지 확인해야 합니다. 자세한 내용은 [Greengrass 그룹 역할 관리(콘솔)](group-role.md#manage-group-role-console) 또는 [Greengrass 그룹 역할 관리(CLI)](group-role.md#manage-group-role-cli)을 참조하세요.

------
#### [ Versions 2 - 3 ]
+ <a name="conn-req-ggc-v1.7.0"></a>AWS IoT Greengrass 코어 소프트웨어 v1.7 이상.
+ 코어 장치에 설치되고 PATH 환경 변수에 추가된 [Python](https://www.python.org/) 버전 2.7입니다.
+ <a name="req-kinesis-firehose-stream"></a>구성된 Kinesis 전송 스트림입니다. 자세한 정보는 *Amazon Kinesis Firehose 개발자 안내서*의 [Amazon Data Firehose 전송 스트림 생성](https://docs.aws.amazon.com/firehose/latest/dev/basic-create.html)을 참조하세요.
+ <a name="req-kinesis-firehose-iam-policy-v2"></a>다음 예제에 표시된 것처럼 [Greengrass 그룹 역할](group-role.md)에 추가된, 대상 전송 스트림에 대한 `firehose:PutRecord` 및 `firehose:PutRecordBatch` 작업을 허용하는 IAM 정책입니다.

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement":[
          {
              "Sid":"Stmt1528133056761",
              "Action":[
                  "firehose:PutRecord",
                  "firehose:PutRecordBatch"
              ],
              "Effect":"Allow",
              "Resource":[
              "arn:aws:firehose:{{us-east-1}}:{{123456789012}}:deliverystream/{{stream-name}}"
              ]
          }
      ]
   }
  ```

------

  이 커넥터를 사용하면 입력 메시지 페이로드에서 기본 전송 스트림을 동적으로 재정의할 수 있습니다. 이 기능을 사용하여 구현하는 경우, IAM 정책에 모든 대상 스트림이 리소스로 포함되어야 합니다. 리소스에 대한 세부적 또는 조건부 액세스 권한을 부여할 수 있습니다(예: 와일드카드 \* 이름 지정 스키마를 통해).

  <a name="set-up-group-role"></a>그룹 역할 요구 사항의 경우, 필수 권한을 부여하도록 역할을 구성하고 역할이 그룹에 추가되었는지 확인해야 합니다. 자세한 내용은 [Greengrass 그룹 역할 관리(콘솔)](group-role.md#manage-group-role-console) 또는 [Greengrass 그룹 역할 관리(CLI)](group-role.md#manage-group-role-cli)을 참조하세요.

------
#### [ Version 1 ]
+ <a name="conn-req-ggc-v1.7.0"></a>AWS IoT Greengrass 코어 소프트웨어 v1.7 이상.
+ 코어 장치에 설치되고 PATH 환경 변수에 추가된 [Python](https://www.python.org/) 버전 2.7입니다.
+ <a name="req-kinesis-firehose-stream"></a>구성된 Kinesis 전송 스트림입니다. 자세한 정보는 *Amazon Kinesis Firehose 개발자 안내서*의 [Amazon Data Firehose 전송 스트림 생성](https://docs.aws.amazon.com/firehose/latest/dev/basic-create.html)을 참조하세요.
+ 다음 예제에 표시된 것처럼 [Greengrass 그룹 역할](group-role.md)에 추가된, 대상 전송 스트립에 대한 `firehose:PutRecord` 작업을 허용하는 IAM 정책입니다.

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement":[
          {
              "Sid":"Stmt1528133056761",
              "Action":[
                  "firehose:PutRecord"
              ],
              "Effect":"Allow",
              "Resource":[
              "arn:aws:firehose:{{us-east-1}}:{{123456789012}}:deliverystream/{{stream-name}}"
              ]
          }
      ]
   }
  ```

------

  <a name="role-resources"></a>이 커넥터를 사용하면 입력 메시지 페이로드에서 기본 전송 스트림을 동적으로 재정의할 수 있습니다. 이 기능을 사용하여 구현하는 경우, IAM 정책에 모든 대상 스트림이 리소스로 포함되어야 합니다. 리소스에 대한 세부적 또는 조건부 액세스 권한을 부여할 수 있습니다(예: 와일드카드 \* 이름 지정 스키마를 통해).

  <a name="set-up-group-role"></a>그룹 역할 요구 사항의 경우, 필수 권한을 부여하도록 역할을 구성하고 역할이 그룹에 추가되었는지 확인해야 합니다. 자세한 내용은 [Greengrass 그룹 역할 관리(콘솔)](group-role.md#manage-group-role-console) 또는 [Greengrass 그룹 역할 관리(CLI)](group-role.md#manage-group-role-cli)을 참조하세요.

------

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

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

------
#### [ Versions 5 ]

`DefaultDeliveryStreamArn`  <a name="kinesis-firehose-DefaultDeliveryStreamArn"></a>
데이터를 보낼 기본 Firehose 전송 스트림의 ARN입니다. 전송 스트림은 입력 메시지 페이로드에서 `delivery_stream_arn` 속성으로 재정의될 수 있습니다.  
그룹 역할이 모든 대상 전송 스트림에 대해 적절한 작업을 허용해야 합니다. 자세한 내용은 [요구 사항](#kinesis-firehose-connector-req) 단원을 참조하십시오.
 AWS IoT 콘솔의 표시 이름: **기본 전송 스트림 ARN**  
필수: `true`  
유형: `string`  
유효한 패턴: `arn:aws:firehose:([a-z]{2}-[a-z]+-\d{1}):(\d{12}):deliverystream/([a-zA-Z0-9_\-.]+)$`

`DeliveryStreamQueueSize`  <a name="kinesis-firehose-DeliveryStreamQueueSize"></a>
동일한 전송 스트림에 대한 새 레코드가 거부되기 전에 메모리에 유지할 최대 레코드 수입니다. 최소값은 2000입니다.  
 AWS IoT 콘솔의 표시 이름: **버퍼링할 최대 레코드 수(스트림당)**  
필수: `true`  
유형: `string`  
유효한 패턴: `^([2-9]\\d{3}|[1-9]\\d{4,})$`

`MemorySize`  <a name="kinesis-firehose-MemorySize"></a>
이 커넥터에 할당할 메모리 양(KB)입니다.  
 AWS IoT 콘솔의 표시 이름: **메모리 크기**  
필수: `true`  
유형: `string`  
유효한 패턴: `^[0-9]+$`

`PublishInterval`  <a name="kinesis-firehose-PublishInterval"></a>
레코드를 Firehose에 게시하는 간격(초)입니다. 배치를 비활성화하려면 이 값을 0으로 설정합니다.  
 AWS IoT 콘솔의 표시 이름: **게시 간격**  
필수: `true`  
유형: `string`  
유효한 값: `0 - 900`  
유효한 패턴: `[0-9]|[1-9]\\d|[1-9]\\d\\d|900`

`IsolationMode`  <a name="IsolationMode"></a>
이 커넥터의 [컨테이너화](connectors.md#connector-containerization) 모드입니다. 기본값은 입니다. 즉`GreengrassContainer`, 커넥터는 AWS IoT Greengrass 컨테이너 내의 격리된 런타임 환경에서 실행됩니다.  
그룹의 기본 컨테이너화 설정은 커넥터에는 적용되지 않습니다.
 AWS IoT 콘솔의 표시 이름: **컨테이너 격리 모드**  
필수: `false`  
유형: `string`  
유효한 값: `GreengrassContainer` 또는 `NoContainer`  
유효한 패턴: `^NoContainer$|^GreengrassContainer$`

------
#### [ Versions 2 - 4 ]

`DefaultDeliveryStreamArn`  <a name="kinesis-firehose-DefaultDeliveryStreamArn"></a>
데이터를 보낼 기본 Firehose 전송 스트림의 ARN입니다. 전송 스트림은 입력 메시지 페이로드에서 `delivery_stream_arn` 속성으로 재정의될 수 있습니다.  
그룹 역할이 모든 대상 전송 스트림에 대해 적절한 작업을 허용해야 합니다. 자세한 내용은 [요구 사항](#kinesis-firehose-connector-req) 단원을 참조하십시오.
 AWS IoT 콘솔의 표시 이름: **기본 전송 스트림 ARN**  
필수: `true`  
유형: `string`  
유효한 패턴: `arn:aws:firehose:([a-z]{2}-[a-z]+-\d{1}):(\d{12}):deliverystream/([a-zA-Z0-9_\-.]+)$`

`DeliveryStreamQueueSize`  <a name="kinesis-firehose-DeliveryStreamQueueSize"></a>
동일한 전송 스트림에 대한 새 레코드가 거부되기 전에 메모리에 유지할 최대 레코드 수입니다. 최소값은 2000입니다.  
 AWS IoT 콘솔의 표시 이름: **버퍼링할 최대 레코드 수(스트림당)**  
필수: `true`  
유형: `string`  
유효한 패턴: `^([2-9]\\d{3}|[1-9]\\d{4,})$`

`MemorySize`  <a name="kinesis-firehose-MemorySize"></a>
이 커넥터에 할당할 메모리 양(KB)입니다.  
 AWS IoT 콘솔의 표시 이름: **메모리 크기**  
필수: `true`  
유형: `string`  
유효한 패턴: `^[0-9]+$`

`PublishInterval`  <a name="kinesis-firehose-PublishInterval"></a>
레코드를 Firehose에 게시하는 간격(초)입니다. 배치를 비활성화하려면 이 값을 0으로 설정합니다.  
 AWS IoT 콘솔의 표시 이름: **게시 간격**  
필수: `true`  
유형: `string`  
유효한 값: `0 - 900`  
유효한 패턴: `[0-9]|[1-9]\\d|[1-9]\\d\\d|900`

------
#### [ Version 1 ]

`DefaultDeliveryStreamArn`  <a name="kinesis-firehose-DefaultDeliveryStreamArn"></a>
데이터를 보낼 기본 Firehose 전송 스트림의 ARN입니다. 전송 스트림은 입력 메시지 페이로드에서 `delivery_stream_arn` 속성으로 재정의될 수 있습니다.  
그룹 역할이 모든 대상 전송 스트림에 대해 적절한 작업을 허용해야 합니다. 자세한 내용은 [요구 사항](#kinesis-firehose-connector-req) 단원을 참조하십시오.
 AWS IoT 콘솔의 표시 이름: **기본 전송 스트림 ARN**  
필수: `true`  
유형: `string`  
유효한 패턴: `arn:aws:firehose:([a-z]{2}-[a-z]+-\d{1}):(\d{12}):deliverystream/([a-zA-Z0-9_\-.]+)$`

------

**Example**  <a name="kinesis-firehose-connector-create"></a>
**커넥터 만들기 예(AWS CLI)**  
다음 CLI 명령은 커넥터가 포함된 초기 버전을 사용하여 `ConnectorDefinition`을 생성합니다.  

```
aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{
    "Connectors": [
        {
            "Id": "MyKinesisFirehoseConnector",
            "ConnectorArn": "arn:aws:greengrass:{{region}}::/connectors/KinesisFirehose/versions/5",
            "Parameters": {
                "DefaultDeliveryStreamArn": "arn:aws:firehose:{{region}}:{{account-id}}:deliverystream/stream-name",
                "DeliveryStreamQueueSize": "5000",
                "MemorySize": "65535",
                "PublishInterval": "10", 
                "IsolationMode" : "GreengrassContainer"
            }
        }
    ]
}'
```

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

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

이 커넥터는 MQTT 주제에 대한 스트림 콘텐츠를 수락한 다음, 이 콘텐츠를 대상 전송 스트림에 전송합니다. 다음과 같은 두 가지 유형의 입력 데이터를 수락합니다.
+ `kinesisfirehose/message` 주제에 대한 JSON 데이터.
+ `kinesisfirehose/message/binary/#` 주제에 대한 이진 데이터.

------
#### [ Versions 2 - 5 ]<a name="kinesis-firehose-input-data"></a>

**주제 필터:** `kinesisfirehose/message`  
이 주제는 JSON 데이터가 포함된 메시지를 보내는데 사용합니다.    
**메시지 속성**    
`request`  
기본 스트림과 다른 경우 전송 스트림과 대상 전송 스트림으로 보낸 데이터입니다.  
필수: `true`  
유형: 다음 속성을 포함하는 `object`:    
`data`  
전송 스트림으로 보낸 데이터입니다.  
필수: `true`  
유형: `string`  
`delivery_stream_arn`  
대상 Kinesis 전송 스트림의 ARN입니다. 기본 전송 스트림을 재정의하려면 이 속성을 포함합니다.  
필수: `false`  
유형: `string`  
유효한 패턴: `arn:aws:firehose:([a-z]{2}-[a-z]+-\d{1}):(\d{12}):deliverystream/([a-zA-Z0-9_\-.]+)$`  
`id`  
요청에 대한 임의의 ID입니다. 이 속성은 입력 요청을 출력 응답에 매핑하는 데 사용됩니다. 지정하면 응답 객체의 `id` 속성이 이 값으로 설정됩니다. 이 기능을 사용하지 않는 경우 이 속성을 생략하거나 빈 문자열로 지정할 수 있습니다.  
필수: `false`  
유형: `string`  
유효한 패턴: `.*`  
**입력 예**  

```
{
     "request": {
        "delivery_stream_arn": "arn:aws:firehose:{{region}}:{{account-id}}:deliverystream/stream2-name",
        "data": "Data to send to the delivery stream."
     },
     "id": "request123"
}
```
 

**주제 필터:** `kinesisfirehose/message/binary/#`  
이 주제는 이진 데이터가 포함된 메시지를 보내는데 사용합니다. 이 커넥터는 이진 데이터를 구문 분석하지 않습니다. 이진 데이터는 있는 그대로 스트리밍됩니다.  
입력 요청을 출력 응답에 매핑하려면 메시지 주제의 `#` 와일드카드를 임의의 요청 ID로 바꿉니다. 예를 들어, 메시지를 `kinesisfirehose/message/binary/request123`에 게시한 경우 응답 객체의 `id` 속성이 `request123`으로 설정됩니다.  
요청을 응답에 매핑하지 않으려는 경우에는 메시지를 `kinesisfirehose/message/binary/`에 게시할 수 있습니다. 반드시 후행 슬래시를 포함해야 합니다.

------
#### [ Version 1 ]<a name="kinesis-firehose-input-data"></a>

**주제 필터:** `kinesisfirehose/message`  
이 주제는 JSON 데이터가 포함된 메시지를 보내는데 사용합니다.    
**메시지 속성**    
`request`  
기본 스트림과 다른 경우 전송 스트림과 대상 전송 스트림으로 보낸 데이터입니다.  
필수: `true`  
유형: 다음 속성을 포함하는 `object`:    
`data`  
전송 스트림으로 보낸 데이터입니다.  
필수: `true`  
유형: `string`  
`delivery_stream_arn`  
대상 Kinesis 전송 스트림의 ARN입니다. 기본 전송 스트림을 재정의하려면 이 속성을 포함합니다.  
필수: `false`  
유형: `string`  
유효한 패턴: `arn:aws:firehose:([a-z]{2}-[a-z]+-\d{1}):(\d{12}):deliverystream/([a-zA-Z0-9_\-.]+)$`  
`id`  
요청에 대한 임의의 ID입니다. 이 속성은 입력 요청을 출력 응답에 매핑하는 데 사용됩니다. 지정하면 응답 객체의 `id` 속성이 이 값으로 설정됩니다. 이 기능을 사용하지 않는 경우 이 속성을 생략하거나 빈 문자열로 지정할 수 있습니다.  
필수: `false`  
유형: `string`  
유효한 패턴: `.*`  
**입력 예**  

```
{
     "request": {
        "delivery_stream_arn": "arn:aws:firehose:{{region}}:{{account-id}}:deliverystream/stream2-name",
        "data": "Data to send to the delivery stream."
     },
     "id": "request123"
}
```
 

**주제 필터:** `kinesisfirehose/message/binary/#`  
이 주제는 이진 데이터가 포함된 메시지를 보내는데 사용합니다. 이 커넥터는 이진 데이터를 구문 분석하지 않습니다. 이진 데이터는 있는 그대로 스트리밍됩니다.  
입력 요청을 출력 응답에 매핑하려면 메시지 주제의 `#` 와일드카드를 임의의 요청 ID로 바꿉니다. 예를 들어, 메시지를 `kinesisfirehose/message/binary/request123`에 게시한 경우 응답 객체의 `id` 속성이 `request123`으로 설정됩니다.  
요청을 응답에 매핑하지 않으려는 경우에는 메시지를 `kinesisfirehose/message/binary/`에 게시할 수 있습니다. 반드시 후행 슬래시를 포함해야 합니다.

------

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

이 커넥터는 상태 정보를 MQTT 주제에 출력 데이터로 게시합니다.

------
#### [ Versions 2 - 5 ]

<a name="topic-filter"></a>**구독의 주제 필터**  <a name="kinesis-firehose-output-topic-status"></a>
`kinesisfirehose/message/status`

**출력 예**  
응답에는 배치로 전송된 각 데이터 레코드의 상태가 포함됩니다.  

```
{
    "response": [
        {
            "ErrorCode": "error",
            "ErrorMessage": "test error",
            "id": "request123",
            "status": "fail"
        },
        {
            "firehose_record_id": "xyz2",
            "id": "request456",
            "status": "success"
        },
        {
            "firehose_record_id": "xyz3",
            "id": "request890",
            "status": "success"
        }
    ]
}
```
커넥터가 재시도 가능한 오류(예: 연결 오류)를 감지하면 다음 배치에서 게시를 재시도합니다. 지수 백오프는 AWS SDK에서 처리합니다. 재시도할 수 있는 오류로 실패한 요청은 추가 게시를 위해 다시 채널 대기열에 추가됩니다.

------
#### [ Version 1 ]

<a name="topic-filter"></a>**구독의 주제 필터**  <a name="kinesis-firehose-output-topic-status"></a>
`kinesisfirehose/message/status`

**출력 예: 성공**  

```
{
   "response": {
       "firehose_record_id": "1lxfuuuFomkpJYzt/34ZU/r8JYPf8Wyf7AXqlXm",
       "status": "success"
    },
    "id": "request123"
}
```

**출력 예: 실패**  

```
{
   "response" : {
       "error": "ResourceNotFoundException",
       "error_message": "An error occurred (ResourceNotFoundException) when calling the PutRecord operation: Firehose test1 not found under account 123456789012.",
       "status": "fail"
   },
   "id": "request123"
}
```

------

## 사용 예
<a name="kinesis-firehose-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. 커넥터에 대한 [요구 사항](#kinesis-firehose-connector-req)을 충족하는지 확인합니다.

   <a name="set-up-group-role"></a>그룹 역할 요구 사항의 경우, 필수 권한을 부여하도록 역할을 구성하고 역할이 그룹에 추가되었는지 확인해야 합니다. 자세한 내용은 [Greengrass 그룹 역할 관리(콘솔)](group-role.md#manage-group-role-console) 또는 [Greengrass 그룹 역할 관리(CLI)](group-role.md#manage-group-role-cli)을 참조하세요.

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

   [예제 코드](#kinesis-firehose-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. 커넥터를 추가하고 해당 [파라미터](#kinesis-firehose-connector-param)를 구성합니다.

   1. 커넥터가 [JSON 입력 데이터](#kinesis-firehose-connector-data-input)를 수신하고 지원되는 주제 필터에서 [출력 데이터](#kinesis-firehose-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="kinesis-firehose-connector-usage-example"></a>

다음 예제 Lambda 함수는 커넥터에 입력 메시지를 보냅니다. 이 메시지에는 JSON 데이터가 포함되어 있습니다.

```
import greengrasssdk
import time
import json

iot_client = greengrasssdk.client('iot-data')
send_topic = 'kinesisfirehose/message'

def create_request_with_all_fields():
    return  {
        "request": {
            "data": "Message from Firehose Connector Test"
        },
        "id" : "req_123"
    }

def publish_basic_message():
    messageToPublish = create_request_with_all_fields()
    print("Message To Publish: ", messageToPublish)
    iot_client.publish(topic=send_topic,
        payload=json.dumps(messageToPublish))

publish_basic_message()

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

## 라이선스
<a name="kinesis-firehose-connector-license"></a>

Kinesis Firehose 커넥터에는 다음 타사 소프트웨어/라이선스가 포함되어 있습니다.<a name="boto-3-licenses"></a>
+ [AWS SDK for Python (Boto3)](https://pypi.org/project/boto3/)/Apache 라이선스 2.0
+ [botocore](https://pypi.org/project/botocore/)/Apache 라이선스 2.0
+ [dateutil](https://pypi.org/project/python-dateutil/1.4/)/PSF 라이선스
+ [docutils](https://pypi.org/project/docutils/)/BSD 라이선스, GNU 일반 공개 라이선스(GPL), Python Software Foundation 라이선스, 퍼블릭 도메인
+ [jmespath](https://pypi.org/project/jmespath/)/MIT 라이선스
+ [s3transfer](https://pypi.org/project/s3transfer/)/Apache 라이선스 2.0
+ [urllib3](https://pypi.org/project/urllib3/)/MIT 라이선스

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

## Changelog
<a name="kinesis-firehose-connector-changelog"></a>

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


| 버전 | 변경 사항 | 
| --- | --- | 
| 5 | <a name="isolation-mode-changelog"></a>커넥터에 대한 컨테이너화 모드를 구성하는 `IsolationMode` 파라미터가 추가되었습니다. | 
| 4 | <a name="upgrade-runtime-py3.7"></a>Lambda 런타임 요구 사항을 변경하는 Python 3.7로 런타임을 업그레이드했습니다. | 
| 3 | 과도한 로깅을 줄이기 위한 수정 및 기타 사소한 버그 수정입니다. | 
| 2 | 지정된 간격으로 배치 데이터 레코드를 Firehose에 전송하는 작업에 대한 지원을 추가했습니다.[See the AWS documentation website for more details](http://docs.aws.amazon.com/ko_kr/greengrass/v1/developerguide/kinesis-firehose-connector.html) | 
| 1 | 최초 릴리스입니다. | 

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

## 다음 사항도 참조하세요.
<a name="kinesis-firehose-connector-see-also"></a>
+ [Greengrass 커넥터를 사용하여 서비스 및 프로토콜과 통합](connectors.md)
+ [Greengrass 커넥터 시작하기(콘솔)](connectors-console.md)
+ [Greengrass 커넥터 시작하기(CLI)](connectors-cli.md)
+ *Amazon Kinesis 개발자 안내서*의 [Amazon Kinesis Data Firehose란 무엇인가요?](https://docs.aws.amazon.com/firehose/latest/dev/what-is-this-service.html)