AWS IoT 규칙 생성 - AWS IoT Core

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

AWS IoT 규칙 생성

연결된 사물의 데이터를 라우팅하여 다른 AWS 서비스와 상호 작용하도록 AWS IoT 규칙을 생성할 수 있습니다. 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. 규칙 속성 지정 페이지에서 규칙의 이름을 입력합니다. 규칙 설명태그는 선택 사항입니다. Next(다음)를 선택합니다.

  5. SQL 문 구성 페이지에서 SQL 버전을 선택하고 SQL 문을 입력합니다. 예제 SQL 문은 일 수 있습니다SELECT temperature FROM 'iot/topic' WHERE temperature > 50. 자세한 내용은 SQL 버전AWS IoT SQL 참조를 참조하세요.

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

    1. 규칙 작업 의 드롭다운 목록에서 규칙 작업을 선택합니다. 예를 들어 Kinesis Stream 을 선택할 수 있습니다. 규칙 작업에 대한 자세한 내용은 AWS IoT 규칙 작업 단원을 참조하세요.

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

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

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

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

규칙 생성(CLI)

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

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

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

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

{ "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 문은 메시지를 필터링하고 역할은 Amazon S3 버킷에 쓸 수 있는 AWS IoT 권한을 ARN 부여합니다.

{ "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" } } ] }

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

{ "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" } } ] }