

# AWS Lambda와 함께 AWS IoT 사용
<a name="services-iot"></a>

AWS IoT는 인터넷에 연결된 디바이스(예: 센서)와 AWS 클라우드 간의 안전한 통신을 제공합니다. 이를 통해 여러 디바이스에서 원격 측정 데이터를 수집하고, 저장하고, 분석할 수 있습니다.

디바이스에 대해 AWS 서비스와 상호 작용하는 AWS IoT 규칙을 생성할 수 있습니다. AWS IoT [규칙 엔진](https://docs.aws.amazon.com/iot/latest/developerguide/iot-rules.html)은 SQL 기반 언어를 사용하여 메시지 페이로드에서 데이터를 선택하고, Amazon S3, Amazon DynamoDB, AWS Lambda 등의 다른 서비스로 데이터를 전송할 수 있습니다. 다른 AWS 서비스 또는 서드 파티 서비스를 간접 호출할 경우에는 Lambda 함수를 간접 호출하는 규칙을 정의합니다.

들어오는 IoT 메시지가 규칙을 트리거하면 AWS IoT는 Lambda 함수를 [비동기적으로](invocation-async.md) 간접 호출하고 IoT 메시지의 데이터를 함수로 전달합니다.

다음 예는 온실 센서의 수분 수치를 보여줍니다. **행** 및 **pos** 값으로 센서의 위치를 식별합니다. 이 예제 이벤트는 [AWS IoT 규칙 자습서](https://docs.aws.amazon.com/iot/latest/developerguide/iot-rules-tutorial.html)의 온실 유형을 기반으로 합니다.

**Example AWS IoT 메시지 이벤트**  

```
{
    "row" : "10",
    "pos" : "23",
    "moisture" : "75"
}
```

비동기 호출의 경우 함수에서 오류를 반환할 때 Lambda에서 메시지를 대기열에 배치하고 [재시도](invocation-retries.md)합니다. 함수에서 처리하지 못한 이벤트를 유지할 [대상](invocation-async-retain-records.md#invocation-async-destinations)과 함께 함수를 구성합니다.

Lambda 함수를 간접 호출하려면 AWS IoT 서비스에 대한 권한을 부여해야 합니다. `add-permission` 명령을 사용하여 권한 설명문을 함수의 리소스 기반 정책에 추가하세요.

```
aws lambda add-permission --function-name my-function \
--statement-id iot-events --action "lambda:InvokeFunction" --principal iot.amazonaws.com
```

다음 결과가 표시됩니다:

```
{
    "Statement": "{\"Sid\":\"iot-events\",\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"iot.amazonaws.com\"},\"Action\":\"lambda:InvokeFunction\",\"Resource\":\"arn:aws:lambda:us-east-1:123456789012:function:my-function\"}"
}
```

AWS IoT에서 Lambda를 사용하는 방법에 관한 자세한 내용은 [AWS Lambda 규칙 생성](https://docs.aws.amazon.com/iot/latest/developerguide/iot-lambda-rule.html)을 참조하세요.