

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

# AWS IoT 규칙 생성
<a name="iot-create-rule"></a>

연결된 사물의 데이터를 라우팅하여 다른 AWS 서비스와 상호 작용하는 AWS IoT 규칙을 생성할 수 있습니다. AWS IoT 규칙은 다음 구성 요소로 구성됩니다.


**규칙의 구성 요소**  

| 구성 요소 | 설명 | 필수 또는 선택 | 
| --- | --- | --- | 
| 규칙 이름 |  규칙의 이름입니다. 규칙 이름에 개인 식별 정보를 사용하지 않는 것이 좋습니다.  | 필수 사항입니다. | 
| 규칙 설명 |  규칙에 대한 텍스트 설명입니다. 규칙 설명에 개인 식별 정보를 사용하지 않는 것이 좋습니다.  | 선택 사항. | 
| SQL 문 |  MQTT 주제에서 수신된 메시지를 필터링하고 데이터를 다른 위치로 푸시하기 위해 간소화된 SQL 구문입니다. 자세한 내용은 [AWS IoT SQL 참조](iot-sql-reference.md) 단원을 참조하십시오.  | 필수 사항입니다. | 
| SQL 버전 |  규칙을 평가할 때 사용할 SQL 규칙의 버전입니다. 이 속성은 선택 사항이지만 SQL 버전을 지정하는 것이 좋습니다. AWS IoT Core 콘솔은 `2016-03-23` 기본적으로이 속성을 로 설정합니다. AWS CLI 명령 또는 CloudFormation 템플릿과 같이이 속성이 설정되지 않은 경우 `2015-10-08`가 사용됩니다. 자세한 내용은 [SQL 버전](iot-rule-sql-version.md) 단원을 참조하십시오.  | 필수 사항입니다. | 
| 하나 이상의 작업 | 작업은 규칙을 실행할 때 AWS IoT 수행됩니다. 예를 들어 DynamoDB 테이블에 데이터를 삽입하거나, Amazon S3 버킷에 데이터를 쓰거나, Amazon SNS 주제에 게시하거나, Lambda 함수를 호출할 수 있습니다. | 필수 사항입니다. | 
| 오류 작업 | 작업은 규칙의 작업을 수행할 수 없을 때 AWS IoT 수행됩니다. | 선택 사항. | 

 AWS IoT 규칙을 생성하기 전에 필요한 AWS 리소스에 대한 액세스를 허용하는 정책을 사용하여 IAM 역할을 생성해야 합니다. 규칙을 구현할 때는이 역할을 수 AWS IoT 임합니다. 자세한 내용은 [AWS IoT 규칙에 필요한 액세스 권한 부여](https://docs.aws.amazon.com//iot/latest/developerguide/iot-create-role.html) 및 [역할 권한 전달을](https://docs.aws.amazon.com//iot/latest/developerguide/pass-role.html) 참조하세요.

규칙을 생성할 때 주제에 얼마나 많은 데이터를 게시하는지 알고 있어야 합니다. 와일드카드 주제 패턴을 포함하는 규칙을 만들면 메시지의 많은 부분과 매칭될 수 있습니다. 이 경우 대상 작업에 사용되는 AWS 리소스의 용량을 늘려야 할 수 있습니다. 중복 처리를 방지하고 비용을 절감하려면, 재게시 규칙에서 와일드카드 주제 패턴을 피하는 것이 좋습니다.

**참고**  
규칙 생성 및 업데이트는 관리자 수준 작업입니다. 규칙을 생성 또는 업데이트할 수 있는 권한이 있는 모든 사용자는 규칙이 처리한 데이터에 액세스할 수 있습니다.

## 규칙 생성(콘솔)
<a name="iot-create-rule-console"></a>

**규칙(AWS Management Console)을 생성하려면**

[AWS Management Console](https://console.aws.amazon.com//iot/home#/home) 명령을 사용하여 규칙을 생성합니다.

1. [AWS IoT 콘솔](https://console.aws.amazon.com//iot/home#/home)을 엽니다.

1. 왼쪽 탐색에서 **관리** 섹션에서 **메시지 라우팅**을 선택합니다. 그런 다음 **규칙**을 선택합니다.

1. **규칙** 페이지에서 **규칙 생성**을 선택합니다.

1. **규칙 속성 지정** 페이지에서 규칙의 이름을 입력합니다. **규칙 설명** 및 **태그**는 선택 사항입니다. **다음**을 선택합니다.

1. **SQL 문 구성** 페이지에서 SQL 버전을 선택하고 SQL 문을 입력합니다. 예제 SQL 문은 `SELECT temperature FROM 'iot/topic' WHERE temperature > 50`일 수 있습니다. 자세한 내용은 [SQL versions](https://docs.aws.amazon.com//iot/latest/developerguide/iot-rule-sql-version.html) 및 [AWS IoT SQL reference](https://docs.aws.amazon.com//iot/latest/developerguide/iot-sql-reference.html)를 참조하세요.

1. **규칙 작업 연결** 페이지에서 다른 AWS 서비스로 데이터를 라우팅하는 규칙 작업을 추가합니다.

   1. **규칙 작업**의 드롭다운 목록에서 규칙 작업을 선택합니다. 예를 들어 **Kinesis Stream**을 선택할 수 있습니다. 규칙 작업에 대한 자세한 내용은 [AWS IoT rule actions](https://docs.aws.amazon.com//iot/latest/developerguide/iot-rule-actions.html)를 참조하세요.

   1. 선택한 규칙 작업에 따라 관련 구성 세부 정보를 입력합니다. 예를 들어 **Kinesis Stream**을 선택하는 경우 데이터 스트림 리소스를 선택하거나 생성하고 선택적으로 스트림의 샤드별로 데이터를 그룹화하는 데 사용되는 **파티션 키**와 같은 구성 세부 정보를 입력해야 합니다.

   1. **IAM 역할**에서 엔드포인트에 대한 AWS IoT 액세스 권한을 부여할 역할을 선택하거나 생성합니다. AWS IoT 는 선택한 IAM 역할 `aws-iot-rule` 아래에 접두사가 인 정책을 자동으로 생성합니다. **보기**를 선택하여 IAM 콘솔에서 IAM 역할과 정책을 볼 수 있습니다. **오류 작업**은 선택 사항입니다. [Error handling (error action)](https://docs.aws.amazon.com//iot/latest/developerguide/rule-error-handling.html)에서 자세한 내용을 확인할 수 있습니다. 규칙의 IAM 역할 생성에 대한 자세한 내용은 [Grant a rule the access it requires](https://docs.aws.amazon.com//iot/latest/developerguide/iot-create-role.html)를 참조하세요. **다음**을 선택합니다.

1. **검토 및 생성** 페이지에서 모든 구성을 검토하고 필요한 경우 편집합니다. **생성(Create)**을 선택합니다.

규칙을 성공적으로 생성하면 규칙 페이지에 나열된 **규칙**이 표시됩니다. 규칙을 선택하여 규칙을 보고, 규칙을 편집하고, 규칙을 비활성화하고, 규칙을 삭제할 수 있는 **세부 정보** 페이지를 열 수 있습니다.

## 규칙 생성(CLI)
<a name="iot-create-rule-cli"></a>

**규칙(AWS CLI)을 생성하려면**  
규칙을 생성하려면 [create-topic-rule](https://docs.aws.amazon.com/cli/latest/reference/iot/create-topic-rule.html) 명령을 사용합니다.

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

다음 예제는 `iot/test` 주제에 전송된 모든 메시지를 지정된 DynamoDB 테이블에 삽입하는 규칙을 포함한 페이로드 파일입니다. SQL 문은 메시지를 필터링하고 역할 ARN은 DynamoDB 테이블에 쓸 수 있는 AWS IoT 권한을 부여합니다.

```
{
	"sql": "SELECT * FROM 'iot/test'",
	"ruleDisabled": false,
	"awsIotSqlVersion": "2016-03-23",
	"actions": [
		{
			"dynamoDB": {
				"tableName": "my-dynamodb-table",
				"roleArn": "arn:aws:iam::123456789012:role/my-iot-role",
				"hashKeyField": "topic",
				"hashKeyValue": "${topic(2)}",
				"rangeKeyField": "timestamp",
				"rangeKeyValue": "${timestamp()}"
			}
		}
	]
}
```

다음 예제는 `iot/test` 주제에 전송된 모든 메시지를 지정된 S3 버킷에 삽입하는 규칙을 포함한 페이로드 파일입니다. SQL 문은 메시지를 필터링하고 역할 ARN은 Amazon S3 버킷에 쓸 수 있는 AWS IoT 권한을 부여합니다.

```
{
	"awsIotSqlVersion": "2016-03-23",
	"sql": "SELECT * FROM 'iot/test'",
	"ruleDisabled": false,
	"actions": [
		{
			"s3": {
				"roleArn": "arn:aws:iam::123456789012:role/aws_iot_s3",
				"bucketName": "amzn-s3-demo-bucket",
				"key": "myS3Key"
			}
		}
	]
}
```

다음 예제는 데이터를 Amazon OpenSearch Service로 푸시하는 규칙을 포함하는 페이로드 파일입니다.

```
{
	"sql": "SELECT *, timestamp() as timestamp FROM 'iot/test'",
	"ruleDisabled": false,
	"awsIotSqlVersion": "2016-03-23",
	"actions": [
		{
			"OpenSearch": {
				"roleArn": "arn:aws:iam::123456789012:role/aws_iot_es",
				"endpoint": "https://my-endpoint",
				"index": "my-index",
				"type": "my-type",
				"id": "${newuuid()}"
			}
		}
	]
}
```

다음 예제는 Lambda 함수를 호출하는 규칙을 포함한 페이로드 파일입니다.

```
{
	"sql": "expression",
	"ruleDisabled": false,
	"awsIotSqlVersion": "2016-03-23",
	"actions": [
		{
			"lambda": {
				"functionArn": "arn:aws:lambda:us-west-2:123456789012:function:my-lambda-function"
			}
		}
	]
}
```

다음 예제는 Amazon SNS 주제에 게시하는 규칙을 포함한 페이로드 파일입니다.

```
{
	"sql": "expression",
	"ruleDisabled": false,
	"awsIotSqlVersion": "2016-03-23",
	"actions": [
		{
			"sns": {
				"targetArn": "arn:aws:sns:us-west-2:123456789012:my-sns-topic",
				"roleArn": "arn:aws:iam::123456789012:role/my-iot-role"
			}
		}
	]
}
```

다음 예제는 다른 MQTT 주제에 재게시하는 규칙을 포함한 페이로드 파일입니다.

```
{
	"sql": "expression",
	"ruleDisabled": false,
	"awsIotSqlVersion": "2016-03-23",
	"actions": [
		{
			"republish": {
				"topic": "my-mqtt-topic",
				"roleArn": "arn:aws:iam::123456789012:role/my-iot-role"
			}
		}
	]
}
```

다음 예제는 데이터를 Amazon Data Firehose 스트림으로 푸시하는 규칙을 포함한 페이로드 파일입니다.

```
{
	"sql": "SELECT * FROM 'my-topic'",
	"ruleDisabled": false,
	"awsIotSqlVersion": "2016-03-23",
	"actions": [
		{
			"firehose": {
				"roleArn": "arn:aws:iam::123456789012:role/my-iot-role",
				"deliveryStreamName": "my-stream-name"
			}
		}
	]
}
```

다음 예제는 MQTT 페이로드의 데이터가 1로 분류될 경우 Amazon SageMaker AI `machinelearning_predict` 함수를 사용하여 주제에 재게시하는 규칙을 포함한 예시 페이로드 파일입니다.

```
{
	"sql": "SELECT * FROM 'iot/test' where machinelearning_predict('my-model', 'arn:aws:iam::123456789012:role/my-iot-aml-role', *).predictedLabel=1",
	"ruleDisabled": false,
	"awsIotSqlVersion": "2016-03-23",
	"actions": [
		{
			"republish": {
				"roleArn": "arn:aws:iam::123456789012:role/my-iot-role",
				"topic": "my-mqtt-topic"
			}
		}
	]
}
```

다음은 Salesforce IoT 클라우드 입력 스트림에 메시지를 게시하는 규칙을 가진 페이로드 파일의 예입니다.

```
{
	"sql": "expression",
	"ruleDisabled": false,
	"awsIotSqlVersion": "2016-03-23",
	"actions": [
		{
			"salesforce": {
				"token": "ABCDEFGHI123456789abcdefghi123456789",
				"url": "https://ingestion-cluster-id.my-env.sfdcnow.com/streams/stream-id/connection-id/my-event"
			}
		}
	]
}
```

다음 예제는 Step Functions 상태 시스템 실행을 시작하는 규칙을 포함한 페이로드 파일입니다.

```
{
	"sql": "expression",
	"ruleDisabled": false,
	"awsIotSqlVersion": "2016-03-23",
	"actions": [
		{
			"stepFunctions": {
				"stateMachineName": "myCoolStateMachine",
				"executionNamePrefix": "coolRunning",
				"roleArn": "arn:aws:iam::123456789012:role/my-iot-role"
			}
		}
	]
}
```