기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
AWS IoT 규칙 생성
연결된 사물의 데이터를 라우팅하여 다른 AWS 서비스와 상호 작용하도록 AWS IoT 규칙을 생성할 수 있습니다. AWS IoT 규칙은 다음 구성 요소로 구성됩니다.
구성 요소 | 설명 | 필수 또는 선택 |
---|---|---|
규칙 이름 |
규칙의 이름입니다. 규칙 이름에 개인 식별 정보를 사용하지 않는 것이 좋습니다. |
필수 사항입니다. |
규칙 설명 |
규칙에 대한 텍스트 설명입니다. 규칙 설명에서 개인 식별 정보를 사용하는 것은 권장하지 않습니다. |
선택 사항입니다. |
SQL 문 |
MQTT 주제에 대해 수신된 메시지를 필터링하고 데이터를 다른 곳으로 푸시하는 단순화된 SQL 구문입니다. 자세한 내용은 AWS IoT SQL 레퍼런스 단원을 참조하십시오. |
필수 사항입니다. |
SQL 버전 |
SQL 규칙을 평가할 때 사용할 규칙 엔진의 버전입니다. 이 속성은 선택 사항이지만 SQL 버전을 지정하는 것이 좋습니다. AWS IoT Core 콘솔은 |
필수 사항입니다. |
하나 이상의 작업 | 이 작업은 규칙을 실행할 때 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
-
AWS IoT 콘솔
을 엽니다. -
왼쪽 탐색에서 관리 섹션에서 메시지 라우팅을 선택합니다. 그런 다음 규칙 을 선택합니다.
-
규칙 페이지에서 규칙 생성을 선택합니다.
-
규칙 속성 지정 페이지에서 규칙의 이름을 입력합니다. 규칙 설명 및 태그는 선택 사항입니다. Next(다음)를 선택합니다.
-
SQL 문 구성 페이지에서 SQL 버전을 선택하고 SQL 문을 입력합니다. 예제 SQL 문은 일 수 있습니다
SELECT temperature FROM 'iot/topic' WHERE temperature > 50
. 자세한 내용은 SQL 버전 및 AWS IoT SQL 참조를 참조하세요. -
규칙 작업 연결 페이지에서 다른 AWS 서비스로 데이터를 라우팅하는 규칙 작업을 추가합니다.
-
규칙 작업 의 드롭다운 목록에서 규칙 작업을 선택합니다. 예를 들어 Kinesis Stream 을 선택할 수 있습니다. 규칙 작업에 대한 자세한 내용은 AWS IoT 규칙 작업 단원을 참조하세요.
-
선택한 규칙 작업에 따라 관련 구성 세부 정보를 입력합니다. 예를 들어 Kinesis Stream 을 선택하는 경우 데이터 스트림 리소스를 선택하거나 생성하고 선택적으로 스트림의 샤드별로 데이터를 그룹화하는 데 사용되는 파티션 키 와 같은 구성 세부 정보를 입력해야 합니다.
-
IAM 역할 에서 엔드포인트에 대한 AWS IoT 액세스 권한을 부여할 역할을 선택하거나 생성합니다. AWS IoT 는 선택한 IAM 역할
aws-iot-rule
아래에 접두사가 인 정책을 자동으로 생성합니다. 보기를 선택하여 IAM 콘솔에서 IAM 역할과 정책을 볼 수 있습니다. 오류 작업은 선택 사항입니다. 오류 처리(오류 작업)에서 자세한 내용을 확인할 수 있습니다. 규칙의 IAM 역할 생성에 대한 자세한 내용은 필요한 액세스 권한 부여를 참조하세요. Next(다음)를 선택합니다.
-
-
검토 및 생성 페이지에서 모든 구성을 검토하고 필요한 경우 편집합니다. 생성(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" } } ] }