将 Intel® IoT 网关连接到 Amazon Web Services
本指南将引导您完成将 IoT Cloud 存储库添加到 Intel® IoT 网关并添加对 Amazon Web Services 的支持,以便您可以使用自己选择的编程语言开始为该平台开发应用程序。
获取新的 Intel® IoT 开发人员套件,这是一个完整的软硬件解决方案,可让开发人员使用 Intel® Galileo 和 Intel® Edison 板创建令人兴奋的新解决方案。请访问 Intel® IoT 开发人员专区。
必备组件
- 运行 IDP 3.1 或更高版本的 Intel® IoT Gateway 技术,并具有互联网访问权限
- 与 Intel® IoT 网关在同一网络上的开发设备(例如笔记本电脑)
- 从您的开发设备访问 Intel® IoT Gateway 的终端权限
- Amazon Web Services 账户:https://aws.amazon.com/
请参阅以下文档以设置您的 Intel® IoT 网关:https://software.intel.com/en-us/node/633284
将 IoT Cloud 仓库添加到您的 Intel® IoT Gateway
- 通过连接显示器和键盘,或通过 SSH(推荐)访问网关的控制台。
- 使用以下命令添加云存储库的GPG密钥
rpm --import http://iotdk.intel.com/misc/iot_pub.key - 在您的开发设备(例如笔记本电脑)上打开 Web 浏览器,然后在地址栏中输入网关的 IP 地址,加载 IoT 网关开发人员中心界面。
提示:您可以使用ifconfig
命令查找网关的 IP 地址。 - 使用您的凭据登录 IoT 网关开发人员中心界面。默认登录名和密码均为 root。
- 添加 IoT Cloud 存储库。
- 转到 Packages 部分,然后单击 Add Repo + 按钮。
- 使用以下信息填充字段,然后单击 Add Repository
Name: IoT_Cloud
URL: http://iotdk.intel.com/repos/iot-cloud/wrlinux7/rcpl13 - 最后,单击 Update Repositories 按钮更新软件包列表。
为您的 Intel® IoT 网关添加 AWS* 支持
- 单击**添加软件包 +**按钮以调出您可以安装的软件包列表。
使用软件包窗口顶部的搜索框搜索 cloud-aws。单击 packagegroup-cloud-aws 条目旁边的 Install 按钮。
在 AWS* 控制台中设置您的用户
- 在浏览器中导航到 AWS* 控制台:https://console.aws.amazon.com,然后登录您的 AWS 账户。
- 将 AWSIoTFullAccess 策略分配给您的用户。
- 单击控制台右上角的您的账户名称,然后从下拉列表中选择 Security Credentials。
如果出现上述弹出消息,请选择 Continue to Security Credentials。
- 从左侧面板选择 Users 以获取您 AWS 账户中所有用户的列表。如果没有列出用户,请单击 Create New Users 按钮,输入您想要创建的用户名,然后单击 Create。然后,您的 AWS 用户将如上所示列出。
- 单击您的用户以显示摘要页面。选择 Permissions 选项卡,然后单击 Attach Policy。
- 向下滚动策略列表,直到找到 AWSIoTFullAccess。选择此策略,然后单击 Attach Policy 将此策略添加到您的用户。
- 为您的设备创建访问密钥
- 返回用户摘要屏幕,选择 Security Credentials 选项卡,然后单击 Create Access Key。
此时,将出现一个窗口,显示您的唯一访问密钥对。Secret Access Key 在关闭此窗口后将不再显示,这意味着您需要生成一个新的访问密钥。
警告:在完成下一部分之前,请不要关闭此窗口!
配置您的网关
提示:建议使用 SSH 连接到您的网关,或通过 Intel Developer Hub 界面访问命令行,以便更轻松地复制访问密钥。如果您直接访问网关的命令行,使用显示器和键盘,则需要在下一部分手动输入访问密钥和秘密访问密钥。
1. 将您的用户凭据添加到网关。
输入以下命令将您的用户凭据添加到网关
aws configure
出现提示时,输入以下信息
- AWS Access Key ID:您刚刚生成的访问密钥 ID。
- AWS Secret Access Key:与您刚刚生成的访问密钥配对的秘密访问密钥。
- Default region name:在此处查看区域列表(例如,eu-west-1)http://docs.aws.amazon.com/general/latest/gr/rande.html#iot_region
- Default output format:默认即可,按 Enter 继续。
2. 创建一个 thing。
在您的网关上输入以下命令,在您的 AWS* 实例中创建一个关联的 thing
aws iot create-thing --thing-name gateway-test-01
如果 thing 创建成功,您将看到类似以下的输出。
3. 创建一个允许策略
输入以下命令在您的 AWS 实例中创建一个新策略
aws iot create-policy --policy-name gateway-policy --policy-document '{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action":["iot:*"], "Resource": ["*"] }] }'
如果策略成功添加,控制台输出应与以下类似。
4. 为 thing 创建密钥和证书。
在您的网关上输入以下命令,创建密钥和证书以与 AWS* 通信
wget -O rootCA.pem https://www.symantec.com/content/en/us/enterprise/verisign/roots/VeriSign-Class%203-Public-Primary-Certification-Authority-G5.pem aws iot create-keys-and-certificate --set-as-active --certificate-pem-outfile cert.pem --private-key-outfile privkey.pem
您应该会看到类似以下的输出,后跟大量的 JSON 数据。在下一步中,我们只需要 certificateArn 值,它位于控制台输出的开头。
5. 将策略附加到证书。
您现在需要将我们刚刚生成的 thing 证书附加到您之前创建的策略。使用以下命令执行此操作
aws iot attach-principal-policy --policy-name ${POLICY_NAME} –principal ${CERTIFICATE_ARN}
确保输入您之前输入的策略名称(例如 gateway-policy)以及上一步中的 certificateArn。例如
aws iot attach-principal-policy --policy-name gateway-policy --principal arn:aws:iot:eu-west-1:681450608718:cert/122c86b84c6e0b919353882c03ca37385855897e16804438a20d44b3f9934cb3
6. 在 AWS* IoT 控制台中检查设备。
在您的浏览器中,通过单击页面左上角的 AWS 图标导航到 AWS* 控制台主屏幕。在右上角,检查是否选择了您配置网关时使用的区域(例如爱尔兰),然后从列表中选择 AWS IoT 服务。
您的 AWS IoT 仪表板现在应该包含您刚刚在网关上配置的 thing、策略和证书。
使用 Python 将数据发送到 AWS* IoT 服务
现在您的网关已配置好,您可以开始向 AWS IoT 发送数据了。其中包含许多 Python 示例,可供您用于测试。
在 AWS* 控制台中监视网关通信
- 从您的 AWS IoT 控制台选择页面右上附近的 MQTT Client。
- 在 MQTT Client 窗口中,输入您之前分配给网关的 thing 名称(例如 gateway-test-01),然后单击 Connect。
如果 AWS 能够与您的网关通信,则连接状态指示器将变为绿色并显示 Connected。
- 从 MQTT Client Actions 中选择 Subscribe to topic。
- 在 Subscription topic 字段中,输入 sdk/test/Python,然后单击 Subscribe。
从网关接收的消息现在将出现在左侧的消息框中。
从网关发送消息
- 输入以下命令以获取要发送消息到 AWS 的 endpoint
aws iot describe-endpoint
这将返回 endpointAddress,我们在下一步中需要它。因此,请复制引号中的地址。
- 导航到包含 AWS 示例的目录
cd /usr/share/awsiotsdk/samples/python/
- 使用以下命令运行示例
python basicPubSub.py -e [ENDPOINT] -r [ROOTCA_PATH] -c [CERT_PATH] –k [PRIVATE_KEY_PATH]
- ENDPOINT:这是您在上一步中找到的端点地址。
- ROOTCA_PATH:这是您之前下载的 rootCA.pem 文件的路径。
- CERT_PATH:这是您之前生成的 cert.pem 文件的路径。
- PRIVATE_KEY_PATH:这是您之前生成的 privkey.pem 文件的路径。
所有证书和密钥都应该已经下载或创建在同一个路径中。默认情况下,这将是 /root 或 $HOME,除非您在登录网关后更改了目录。
下面是一个工作示例
python basicPubSub.py -e a1gx5hswnkj6kf.iot.eu-west-1.amazonaws.com -r $HOME/rootCA.pem -c $HOME/cert.pem -k $HOME/privkey.pem
如果示例应用程序正在正确运行,您将开始看到类似以上所示的控制台输出,表明正在 sdk/test/Python 主题上发送消息。
要验证这一点,请返回浏览器,查看消息窗口。您应该会看到新消息显示出来,类似于下图中的消息。
您的网关现已连接到 AWS* IoT,并能够发送和接收数据。