首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AWS IoT核多环境

AWS IoT核多环境
EN

Stack Overflow用户
提问于 2018-08-29 13:38:10
回答 1查看 778关注 0票数 6

让我说,我希望有一个分期环境和生产环境。应用程序通过添加主题规则来工作,并使用AWS处理吞食。

在AWS IoT内核中拥有多个环境的最佳方法是什么?

我想过这样做:

  1. 建立两个帐户(在我的项目中不可能)
  2. 按主题前缀(如dev/*prod/* )拆分环境
    • 意味着设备需要事先知道它属于何处。

  1. 将设备添加到组中并执行基于规则的过滤
    • 有任何指导如何做到这一点吗?我知道我可以调用lambda函数,但这似乎是个坏主意。最好有一个基于组的过滤器,但是afaik现在无法访问设备的组或属性

我非常喜欢3,因为它允许我也使用生产设备进行测试。1.和2.没事,但不太灵活。

也许有一些最佳做法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-20 21:27:55

我们已经在我们的项目中经历了几个月的阶段主题前缀方法。我认为我们会继续这样做,但我在下面已经提到了一些副作用。

阶段作为主题前缀

大多数时间消息将被路由到IoTCore规则,并将触发一些AWS服务,如Lambda/S3/Dynamo等。

代码语言:javascript
复制
...
custom:
  myStage: ${opt:stage, self:provider.stage}
  STAGES:
    - dev
    - prod
 
provider:
  name: aws
  runtime: nodejs12.x
  region: eu-central-1
  environment:
    STAGE: ${self:custom.myStage}

functions:
  someLambdaFunction:
    timeout: 180 
    handler: someLambdaFunction.handler
    events:
      - iot:
          name: "iotRuleName_${self:custom.myStage}"
          sqlVersion: "2016-03-23"
          sql: "SELECT  * as data , topic() as topicName FROM '${self:custom.myStage}/room/+/temperature'"

因此,当您部署到开发环境中的无服务器应用程序时,规则名将是iotRuleName_dev,规则sql将类似于dev/room/+/temperature

但也有一些问题:

  • 正如您在这种方法中所说的,端点应该知道前缀值。
  • AWS将您的主题级别限制为8 -max 7正斜杠(/)-因此,通过在所有主题中添加stage作为前缀,您的限制基本上会减少到7 AWS IoT核心配额
  • 您仍然需要检查是否发生thingName碰撞。您不能在多个环境中同时拥有相同的thingName,您不想处理它。在事物名称中添加阶段前缀可以解决混淆问题。类似于“DEV-Thing1”之类的东西

您还需要考虑使用基本摄食来降低成本

阶段为区域

还可以将整个应用程序环境划分为AWS区域,没有冲突,没有副作用。但是你应该把所有的东西都平分,好让你在晚上睡得好。因为访问不同区域的实体会造成很大的混乱。

自定义应用

构建您自己的IoT核心。如果你能做到这一点。不仅要用,还要卖。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52078820

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档