当您扩大 AWS IoT SiteWise 应用并将其推向生产环境时,可能会考虑采用常见的 CI/CD 方法,以将开发和 QA 环境与生产环境分开。这种分离使您能够通过部署管道自动化应用程序的部署。此外,您可能有多个业务单元和/或工业站点,拥有共同的资产模型和层次结构,希望在您的组织内共享和重复使用。在这种情况下,客户通常会拥有不同的 AWS 账户,以分开环境,无论是开发与生产间的区分,还是不同业务单元之间的区分。下图展示了开发、QA 和生产环境分开的示例:
为了帮助客户在不同环境之间复制 AWS IoT SiteWise 资源,我们创建了 AWS IoT SiteWise 工具,提供一套实用程序,允许用户将 AWS IoT SiteWise 资产模型、资产 和 AWS IoT SiteWise Monitor 仪表板 导出为 AWS CloudFormation 模板。导出的模板可以在另一个 AWS 环境中重新创建相应的资源。在本文中,您将看到如何使用 AWS IoT SiteWise 工具导出模型的示例,并提供一个示例架构,展示如何在 CI/CD 管道中自动化导出和复制过程。
AWS IoT SiteWise 工具库中的实用程序为您提供了仅复制特定用例所需资源的灵活性。您可以选择只导出 AWS IoT SiteWise 资产模型,或者还可以导出相应的资产和 AWS IoT SiteWise Monitor 仪表板。导出工具可以从命令行手动使用例如,仅进行一次性地将资产模型导出到另一个环境,也可以集成到自动化管道中进行 CI/CD 部署场景。该工具还可以用于在同一账户内进行多区域部署的 AWS IoT SiteWise 资源复制。AWS IoT SiteWise 工具库对每个实用程序的使用提供了详细的文档,但为了简单演示工具,我们创建了两个名为 CNC 机器 和 生产线 的资产模型,如下所示。每个模型都包含一个属性和两个模型之间的层次关系。
为了简化,我们只出口模型。使用 AWS IoT SiteWise 导出工具时,我们可选指定要导出模型的区域,并在运行命令时不添加其他标志如果您还想同时导出资产,只需添加 a assets 标志。命令输出将类似于以下内容:
如果命令成功,将在本地目录中名为 cfnexport 的文件夹保存 CloudFormation 模板。以我们这个示例为例,CloudFormation 模板将如下所示:
json{ AWSTemplateFormatVersion 20100909 Description SiteWise Export Resources { CNCMachineResource { Type AWSIoTSiteWiseAssetModel Properties { AssetModelName CNC Machine AssetModelProperties [ { Name SpindleSpeed DataType DOUBLE Unit RPM Type { TypeName Measurement } LogicalId SpindleSpeed9f2e03dd } ] AssetModelHierarchies [] } } ProductionLineResource { Type AWSIoTSiteWiseAssetModel Properties { AssetModelName Production Line AssetModelProperties [ { Name Location DataType STRING Type { TypeName Attribute Attribute {} } LogicalId Locationafc85231 } ] AssetModelHierarchies [ { Name CNC Machines ChildAssetModelId { Ref CNCMachineResource } LogicalId CNCMachines } ] } } }}
该 CloudFormation 模板现在可以在另一个区域或另一个 AWS 账户中启动,以创建我们上面定义的相同资产模型。
到此为止,您现在已经了解了导出实用程序的工作原理。在接下来的部分,我们将提供一个示例架构,展示如何将这些工具集成到您的 CI/CD 自动化管道中。
在该示例架构中,我们假设您有一个现有的 CI/CD 管道,可以使用 CloudFormation 和 AWS SDK 部署 AWS 服务。
在该架构的构建阶段,CI/CD 管道在源环境中启动一个 Step Function 工作流,该工作流执行三个 Lambda 函数,分别对应每种资源类型资产模型、资产和仪表板。Lambda 函数可以并行运行,并使用导出工具查询 AWS IoT SiteWise 服务 API,以生成您希望复制的资源的对应 CloudFormation 模板。然后,Lambda 函数会将生成的文件存储在 Amazon S3 存储桶中,以便在管道的部署阶段使用。对于 S3 存储桶,您可以使用所有 AWS 环境的共享 共享存储桶 或使用 S3 复制自动将文件复制到 每个环境中单独的存储桶。
海外加速器免费版在部署阶段,需要在目标环境中以特定顺序创建或修改 AWS IoT SiteWise 资源,顺序为:资产模型、资产和仪表板。为此,定义了 AWS Step Function 工作流 状态,针对每种资源类型配置工作流以按正确顺序执行。每个工作流状态将使用引用 S3 中相应 CloudFormation 模板的 Lambda 函数任务。资源需要先由 CI/CD 管道创建,因此初始工作流部署任务将创建 CloudFormation 堆栈。
一旦堆栈创建完成,随后从 CI/CD 管道的更新将利用工作流和步骤函数来更新这些堆栈,从而修改和更新 AWS IoT SiteWise 资源。资产和仪表板的状态将等待上一个状态通过 CloudFormation 完成部署后才能开始,因为它们需要那些资源在存在之前才能被创建。请查看下面的架构图以获取可视化表示。

对于生产工作负载,客户可以在其部署管道中使用 CloudFormation 更改集,并设置手动审批门以验证 CloudFormation 更新,然后再进行更改。最后,如果仪表板是您部署管道的一部分,则必须在目标环境中事先创建 AWS IoT SiteWise Monitor 门户。
在这篇博文中,我们介绍了用于在 AWS 环境之间复制 AWS IoT SiteWise 资源的 AWS IoT SiteWise 工具,并展示了如何将它们集成到自动化部署管道中的示例架构。我们意识到,每个组织在自动化和部署 IT 基础设施及其应用程序时都有不同的需求、程序和工具。我们设计这些工具以便能够灵活适应您的特定要求,并能将其集成到您特定的自动化管道中。我们欢迎您对这些实用程序的改进或补充。如果您有任何内容想要贡献给该库,可以随时在 库中提交拉取请求 进行审核。
Sebastian Salomon 是亚马逊网络服务的高级物联网数据架构师。他在 IIoT、汽车、石油与天然气、智能家居、智能城市和矿业等多个领域拥有 7年以上的物联网架构经验,且在数据仓库和大数据平台方面也有丰富的经历。近几年,他专注于如何通过可扩展的 MLOps 平台将 AI 引入物联网。作为 AWS 专业服务的成员,他与不同规模和行业的客户合作,架构并实施多种端到端的物联网解决方案。
Ashok Padmanabhan 是 AWS 专业服务的高级物联网数据架构师,专注于制造领域的大数据分析和工业 40 解决方案。Mihai Lucaciu 拥有超过 16 年的经验,是 AWS 专业服务的高级物联网数据架构师,热衷于帮助客户进行工业数据、边缘分析和云服务的解决方案架构、设计与实施。Tim Wilson 是 AWS 公共部门合作伙伴组织的物联网使能专家。在此角色中,Tim 与 AWS 公共部门合作伙伴合作,支持他们采用和使用 AWS IoT 服务和解决方案。他于 2012 年加入 AWS,担任解决方案架构师,当时 AWS 的公共部门业务相对较小。他还在 AWS 担任过物联网原型实验室的管理工作以及在 AWS 高管简报中心担任技术讲师的角色。
2026-01-27 12:53:58
2026-01-27 14:08:02