通过IoT Core Rule Egine连接其他aws服务.本实验将数据存入ElasticSearch并通过Kibana进行展现

1. 部署ElasticSearch

1.1 通过ElasticSearch建立ES域

  • 在AWS官网通过搜索进入Elasticsearch Service。

Get started

  • 在Elasticsearch Service首页选择“创建新域”。

Get started

  • 选择部署类型为“开发和测试”,Elasticsearch 选择版本为“6.7”,点击下一步。

Get started

  • 配置Elasticsearch域名为“iot-lab”, 实例类型选择“r5.large.elasticsearch“,实例数量选择为1。如果有更小的实例也可以选择。

Get started

  • 其余配置如果与图片中相同,则无需更改(关闭专用主实例和加密),检查完毕后直接点击下一步。

Get started

Get started

  • 网络配置选择“公有访问权限”, 访问策略选择允许从特定IP访问域,一个窗口会弹出,您需要在窗口输入您的登陆电脑的公有IP或者对应的CIDR形式,公网IP可通过这个网站获取: What Is My IP

Get started

Get started

  • 此时您的访问策略应该显示为如下形式, “aws:SourceIp”:之后是您的IP地址,这里通常不需要进一步调整了。确认之后点击下一步。
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": "es:*",
      "Resource": "arn:aws-cn:es:cn-north-1:XXXXXXXXXXXX:domain/iot-lab/*",
      "Condition": {
        "IpAddress": {
          "aws:SourceIp": "XXXXXXXXXXXX"
        }
      }
    }
  ]
}
  • 检查之前的配置,点击确认,您将在控制面看见您的新域。稍等十分钟之后,您的域状态将变成绿色的有效。

Get started

  • 点击“iot-lab“,您将进入域的详细页面。在此处您将看到Kibana链接,点击Kibana链接以访问Kibana网页,如果无法进入网页,请再次检查您的IP地址是否正确,如果有问题请修改访问策略。可使用CIDR表示方法达到更宽松的条件。

Get started

Get started

1.2 在Elasticsearch集群上建立索引

  • 在这里我们使用HTTP请求来建立索引,请在终端输入如下命令,
curl -H 'Content-Type: application/json' -i -X PUT -d '{
  "mappings": {
    "car": {
      "properties": {
        "timestamp": {
          "type": "long",
          "copy_to": "datetime"
        },
        "datetime": {
          "type": "date",
          "store": true
        },
        "location": {
          "type": "geo_point"
        },
        "battery":{
        "type": "float"
        },
        "temperature":{
        "type": "short"
        },
        "pressure":{
        "type": "short"
        },
        "rpm":{
        "type": "short"
        }
      }
    }
  }
}
' 'https://search-iot-lab-xxxxxxxxxxxxxxxxxxxxx.cn-north-1.es.amazonaws.com.cn/cars'

请把最下面一行的

https://search-iot-lab-xxxxxxxxxxxxxxxxxxxxx.cn-north-1.es.amazonaws.com.cn/cars

替换为您的集群的终端节点,在“iot-lab”的详细页面可以找到:

Get started

如果成功您将在终端收到状态“ {“acknowledged”:true)”。如果不成功,请检查Kibana能否进入。如果不能进入,请调整访问策略,比如使用xxx.xxx.xxx.xxx/16代替IP。

2. 设置规则将数据存入ES

2.1 创建IAM角色

  • 打开AWS IAM服务,选择侧边栏的角色,点击创建角色

Get started

  • 在AWS产品中选择IoT,点击下一步:权限

Get started

  • 点击下一步:标签

Get started

  • 点击下一步:审核

Get started

  • 添加角色名称为:“iot-es-action-role“,点击创建角色

Get started

2.2 创建IoT规则

  • 进入IoT服务,进打开侧边栏的行动,点击右上角的创建

Get started

  • 添加规则名称为ElasticsearchLab

Get started

  • 在规则查询语句中输入
SELECT *, timestamp() as timestamp FROM 'connectedcar/#'

Get started

  • 点击添加操作,选择将消息发送到Amazon Elasticsearch Service,点击配置操作

Get started

  • 选择资源为”iot-lab”, ID输入“${newuuid()}”,索引输入“cars“, 类型输入“car”。

Get started

  • 选择角色为iot-es-action-role。

Get started

  • 反复检查没有遗漏后,请创建规则。如果显示SQL错误而无法创建,请先将FROM ‘connectedcar/#’ 语句删除,在创建之后再更新规则

Get started

Get started

3. 设置Kibana进行数据可视化

3.1 Kibana index pattern创建

  • 进入Kibana节点,节点可从您的Elasticsearch控制面板找到。节点的格式如下
https://search-iot-lab-xxxxxxxxxxxxx.us-east-1.es.amazonaws.com/_plugin/kibana/

Get started

  • 进入Kibana的discover侧边栏,选择Create index pattern,并在index pattern中输入“cars”。匹配成功后会显示Success,之后请点击Next step

Get started

  • 如果无法找到create index pattern,请点击Kibana的图标,然后选择Index patterns。

Get started

  • 从下拉菜单中选择Time Filter field name为datetime。点击create index pattern。

Get started

  • 您将看见刚刚创建的index pattern: cars*。

Get started

3.2 数据可视化

  • 接下来进入Visualize侧边栏,选择create a visualization。

Get started

  • 选择Line作为我们要创建的图的类型。

Get started

  • 选择cars*。

Get started

  • 打开Metrics Y-Axis的下拉菜单,在Aggregation中选择average,Field选择engine_tempterature,然后点击add metrics。

Get started

  • 打开Buckets X-Axis的下拉菜单,在Aggregation中选择Date Histogram,Field选择datetime。

Get started

  • 点击蓝色的开始按钮就将生成图像。

Get started

  • 右上角的蓝色Refresh按钮可以刷新图像来预览最新数据。

Get started