AWS IoT自动创建内容

时间:2016-10-10 10:22:31

标签: amazon-web-services registry iot

我想知道如何在不使用AWS Web界面的情况下通过API在AWS IoT解决方案中创建许多“事物”,因为如果我想要数以千计的事情,这是不现实的。我想你可以用这里描述的“http://docs.aws.amazon.com/iot/latest/developerguide/thing-registry.html”描述的“aws”客户端编写一些脚本,但如果我想从另一个服务控制它,那就不是最佳的。

我假设会有一个RESTish API来执行此操作但如果我阅读文档似乎不是这样:“您使用AWS IoT控制台或AWS CLI与注册表进行交互。”< / em>的

创造了数千/数百万件事物的人 - 您是如何与AWS IoT互动的?

5 个答案:

答案 0 :(得分:2)

好的,我找到了。在这里可以管理所有AWS IoT事物:

http://docs.aws.amazon.com/iot/latest/apireference/API_Operations.html

答案 1 :(得分:2)

anujdeshpande在这方面给出了一些预示。

“自动”表示您可以查看以下步骤:

  1. 您想什么时候自动创建?什么是触发create-thing流程?
  2. 检查此link是否及时注册设备
  3. 您可以创建映射到AWS API Gateway的Lambda函数,该函数可以调用AWS-IOT SDK来创建事物。
  4. 使用无服务器架构方法,使用aws-sdk库,使用Javascript创建50多个内容,page

答案 2 :(得分:1)

另一种有趣的方法是使用即时注册 - 基本上你上传用于在制造时签名密钥的CA证书。

这有一些很棒的优点 -

  • 在您的设备首次尝试连接到AWS IoT之前,您的资源不会被创建。所以您的AWS账户上没有任何空白。
  • 您不必将AWS IoT事物创建与制造过程混合在一起。这很好,因为您不希望中国(最有可能是场景)制造商直接访问您的AWS账户

More about this

答案 3 :(得分:1)

以下链接是创建50个Iot设备,并使用AWS Lambda和Amazon DynamoDB实施无服务器AWS IoT后端的示例。您可以根据自己喜欢的数量改变设备;它使用早期版本的AWS Iot Platform完成。看看。

https://aws.amazon.com/blogs/compute/implementing-a-serverless-aws-iot-backend-with-aws-lambda-and-amazon-dynamodb/

以下是创建50个物联网的代码

var AWS = require('aws-sdk');
AWS.config.region = 'ap-northeast-1';

var crypto = require('crypto');
var endpoint = "<endpoint prefix>.iot.<region>.amazonaws.com";
var iot = new AWS.Iot();
var iotdata = new AWS.IotData({endpoint: endpoint});
var topic = "registration";
var type = "MySmartIoTDevice"


//Create 50 AWS IoT Things
for(var i = 1; i < 51; i++) {
  var serialNumber = "SN-"+crypto.randomBytes(Math.ceil(12/2)).toString('hex').slice(0,15).toUpperCase();
  var clientId = "ID-"+crypto.randomBytes(Math.ceil(12/2)).toString('hex').slice(0,12).toUpperCase();
  var activationCode = "AC-"+crypto.randomBytes(Math.ceil(20/2)).toString('hex').slice(0,20).toUpperCase();
  var thing = "myThing"+i.toString();
  var thingParams = {
    thingName: thing
  };

  iot.createThing(thingParams).on('success', function(response) {
    //Thing Created!
  }).on('error', function(response) {
    console.log(response);
  }).send();



//Checking all devices were created

iot.listThings().on('success', function(response) {
  var things = response.data.things;
  var myThings = [];
  for(var i = 0; i < things.length; i++) {
    if (things[i].thingName.includes("myThing")){
      myThings[i]=things[i].thingName;
    }
  }

  if (myThings.length == 50){
    console.log("myThing1 to 50 created and registered!");
  }
}).on('error', function(response) {
  console.log(response);
}).send();

答案 4 :(得分:1)

您可以通过使用AWS IoT SDK来做到这一点。您可以找到受支持的AWS IoT SDK here。为此,您将需要适当的凭证和策略,最简单的凭证和策略是AWS账户凭证(访问密钥以及IAM或Cognito用户凭证中的私钥,...)。

要自动创建事物,可以使用Boto3的适用于Python的AWS IoT设备SDK。您可以找到关于它的更多信息here。以下代码显示了使用python和AWS凭证在AWS IoT中自动创建事物的示例:

import boto3

client = boto3.client('iot')

response = client.create_thing(
    thingName=[NameOfThing],
    thingTypeName=[ThingType],
    attributePayload={
        'attributes': {
            'string': 'string'
        },
        'merge': True|False
    },
    billingGroupName='string'
)