규칙 생성 - AWS IoT Core

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

규칙 생성

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

규칙의 구성 요소
구성 요소 설명 필수 또는 선택
규칙 이름

규칙의 이름입니다. 규칙 이름에 개인 식별 정보를 사용하는 것은 권장하지 않습니다.

필수 사항입니다.
규칙 설명

규칙에 대한 텍스트 설명입니다. 규칙 설명에는 개인 식별 정보를 사용하지 않는 것이 좋습니다.

선택 사항입니다.
SQL 문

MQTT 주제에서 수신된 메시지를 필터링하고 데이터를 다른 위치로 푸시하기 위한 간소화된 SQL 구문입니다. 자세한 정보는 AWS IoT SQL 레퍼런스을 참조하세요.

필수 사항입니다.
SQL 버전

규칙을 평가할 때 사용할 SQL 규칙의 버전입니다. 이 속성은 선택 사항이지만 SQL 버전을 지정하는 것이 좋습니다. AWS IoT Core 콘솔은 이 속성을 2016-03-23 기본적으로 로 설정합니다. AWS CLI 명령이나 AWS CloudFormation 템플릿에서와 같이 이 속성이 설정되지 않은 경우 사용됩니다. 2015-10-08 자세한 정보는 SQL 버전을 참조하세요.

필수 사항입니다.
하나 이상의 작업 이 작업은 규칙을 적용할 때 AWS IoT 수행됩니다. 예를 들어 DynamoDB 테이블에 데이터를 삽입하거나, Amazon S3 버킷에 데이터를 기록하거나, Amazon SNS 주제에 게시하거나, Lambda 함수를 호출할 수 있습니다. 필수 사항입니다.
오류 작업 작업은 규칙의 작업을 수행할 수 없을 때 AWS IoT 수행됩니다. 선택 사항입니다.

AWS IoT 규칙을 생성하기 전에 필요한 AWS 리소스에 대한 액세스를 허용하는 정책을 사용하여 IAM 역할을 생성해야 합니다. AWS IoT 규칙을 구현할 때 이 역할을 맡습니다. 자세한 내용은 AWS IoT 규칙에 필요한 액세스 권한 부여역할 권한 전달을 참조하십시오.

규칙을 생성할 때 주제에 얼마나 많은 데이터를 게시하는지 알고 있어야 합니다. 와일드카드 주제 패턴을 포함하는 규칙을 만들면 메시지의 많은 부분과 매칭될 수 있습니다. 이 경우 대상 작업에 사용되는 AWS 리소스의 용량을 늘려야 할 수 있습니다. 또한 와일드카드 주제 패턴을 포함하는 재게시 규칙을 생성할 경우 무한 루프를 유발하는 순환 규칙이 발생할 수 있습니다.

참고

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

규칙 생성 (콘솔)

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

다음 AWS Management Console명령을 사용하여 규칙을 생성합니다.

  1. AWS IoT 콘솔을 엽니다.

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

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

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

  5. SQL 문 구성 페이지에서 SQL 버전을 선택하고 SQL 문을 입력합니다. SQL 문의 예는 다음과 같습니다SELECT temperature FROM 'iot/topic' WHERE temperature > 50. 자세한 내용은 SQL 버전 및AWS IoT SQL 참조를 참조하십시오.

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

    1. 규칙 동작의 드롭다운 목록에서 규칙 동작을 선택합니다. 예를 들어 Kinesis 스트림을 선택할 수 있습니다. 규칙 작업에 대한 자세한 내용은 규칙 조치를 참조하십시오AWS IoT .

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

    3. IAM 역할에서 AWS IoT 엔드포인트에 대한 액세스 권한을 부여하는 역할을 선택하거나 생성합니다. 이렇게 AWS IoT 하면 선택한 IAM 역할 aws-iot-rule 아래에 접두사가 붙은 정책이 자동으로 생성된다는 점에 유의하세요. View를 선택하여 IAM 콘솔에서 IAM 역할과 정책을 볼 수 있습니다. 오류 조치는 선택 사항입니다. 오류 처리 (오류 조치) 에서 자세한 내용을 확인할 수 있습니다. 규칙의 IAM 역할을 생성하는 방법에 대한 자세한 내용은 규칙에 필요한 액세스 권한 부여를 참조하십시오. 다음을 선택합니다.

  7. 검토 및 생성 페이지에서 모든 구성을 검토하고 필요한 경우 편집하십시오. 생성을 선택합니다.

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

규칙 생성 (CLI)

규칙(AWS CLI)을 생성하려면

create-topic-rule명령을 사용하여 규칙을 생성합니다.

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": "my-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 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" } } ] }