AWS IoT 규칙 생성 - AWS IoT Core

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

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 리소스의 용량을 늘려야 할 수 있습니다. 또한 와일드카드 주제 패턴을 포함하는 재게시 규칙을 생성할 경우 무한 루프를 유발하는 순환 규칙이 발생할 수 있습니다.

참고

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

규칙(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" } }] }