选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

第 5 步:在 AWS IoT Greengrass 服务中创建组件

聚焦模式
第 5 步:在 AWS IoT Greengrass 服务中创建组件 - AWS IoT Greengrass

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在核心设备上开发完组件后,您可以将其上传至 AWS Cloud中的 AWS IoT Greengrass 服务。您也可以直接在 AWS IoT Greengrass 控制台中创建组件。 AWS IoT Greengrass 提供托管组件的组件管理服务,以便您可以将它们部署到单个设备或设备实例集中。要将组件上传到 AWS IoT Greengrass 服务,请完成以下步骤:

  • 将组件构件上传至 S3 存储桶。

  • 将每个构件的 Amazon Simple Storage Service(Amazon S3)URI 添加到组件配方中。

  • AWS IoT Greengrass 从组件配方中创建组件。

在本节中,您将在 Greengrass 核心设备上完成这些步骤,将 Hello World 组件上传到该服务。 AWS IoT Greengrass

  1. 在您的 AWS 账户中使用一个 S3 存储桶来托管 AWS IoT Greengrass 组件项目。当您将组件部署到核心设备时,设备会从存储桶中下载该组件的构件。

    您可以使用现有的 S3 存储桶,也可以创建新存储桶。

    1. Amazon S3 控制台存储桶下,选择创建存储桶

    2. 对于配置,请输入唯一的存储桶名称。例如,您可以使用 greengrass-component-artifacts-region-123456789012123456789012替换为您的 AWS 账户 ID region 和您在本教程中 AWS 区域 使用的账户 ID。

    3. 对于AWS 区域,请选择您用于本教程的 AWS 区域。

    4. 选择创建存储桶

    5. 存储桶下,选择您创建的存储桶,然后将 hello_world.py 脚本上传至存储桶中的 artifacts/com.example.HelloWorld/1.0.0 文件夹。有关将对象上传至 S3 存储桶的更多信息,请参阅《Amazon Simple Storage Service 用户指南》中的上传对象

    6. 复制 S3 存储桶中 hello_world.py 对象的 S3 URI。此 URI 应该类似于以下示例。将 amzn-s3-demo-bucket 替换为 S3 存储桶的名称。

      s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py
  2. 允许核心设备访问 S3 存储桶中的组件构件。

    每台核心设备都有一个核心设备 IAM 角色,允许其与云进行交互 AWS IoT 并将日志发送到 AWS 云端。默认情况下,此设备角色不允许访问 S3 存储桶,因此您必须创建并附加一个允许核心设备从 S3 存储桶检索组件构件的策略。

    如果设备的角色已允许访问 S3 存储桶,则可跳过此步骤。否则,请创建允许访问的 IAM 策略并将其附加到该角色,如下所示:

    1. IAM 控制台的导航菜单中,选择策略,然后选择创建策略

    2. JSON 选项卡中,将占位符内容替换为以下策略。将 amzn-s3-demo-bucket 替换为包含供核心设备下载的组件构件的 S3 存储桶名称。

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*" } ] }
    3. 选择下一步

    4. 策略详细信息部分,对于名称,请输入 MyGreengrassV2ComponentArtifactPolicy

    5. 选择创建策略

    6. IAM 控制台导航菜单中,选择角色,然后选择核心设备的角色名称。您在安装 C AWS IoT Greengrass ore 软件时指定了此角色名称。如果您未指定名称,则默认使用 GreengrassV2TokenExchangeRole

    7. 权限下,选择添加权限,然后选择附加策略

    8. 添加权限页面,选中与您创建的策略 MyGreengrassV2ComponentArtifactPolicy 对应的复选框,然后选择添加权限

  3. 使用组件配方在 AWS IoT Greengrass 控制台中创建组件。

    1. AWS IoT Greengrass 控制台导航菜单中,选择组件,然后选择创建组件

    2. 组件信息下,选择以 JSON 格式输入配方。该占位符配方应该类似于以下示例。

      { "RecipeFormatVersion": "2020-01-25", "ComponentName": "com.example.HelloWorld", "ComponentVersion": "1.0.0", "ComponentDescription": "My first AWS IoT Greengrass component.", "ComponentPublisher": "Amazon", "ComponentConfiguration": { "DefaultConfiguration": { "Message": "world" } }, "Manifests": [ { "Platform": { "os": "linux" }, "Lifecycle": { "Run": "python3 -u {artifacts:path}/hello_world.py \"{configuration:/Message}\"" }, "Artifacts": [ { "URI": "s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py" } ] }, { "Platform": { "os": "windows" }, "Lifecycle": { "Run": "py -3 -u {artifacts:path}/hello_world.py \"{configuration:/Message}\"" }, "Artifacts": [ { "URI": "s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py" } ] } ] }
    3. 将每个 Artifacts 部分中的占位符 URI 替换为 hello_world.py 对象的 S3 URI。

    4. 选择创建组件

    5. com.example 上。 HelloWorld组件页面上,验证组件的状态是否为可部署

在 AWS IoT Greengrass (控制台)中创建您的组件

  1. 在您的 AWS 账户中使用一个 S3 存储桶来托管 AWS IoT Greengrass 组件项目。当您将组件部署到核心设备时,设备会从存储桶中下载该组件的构件。

    您可以使用现有的 S3 存储桶,也可以创建新存储桶。

    1. Amazon S3 控制台存储桶下,选择创建存储桶

    2. 对于配置,请输入唯一的存储桶名称。例如,您可以使用 greengrass-component-artifacts-region-123456789012123456789012替换为您的 AWS 账户 ID region 和您在本教程中 AWS 区域 使用的账户 ID。

    3. 对于AWS 区域,请选择您用于本教程的 AWS 区域。

    4. 选择创建存储桶

    5. 存储桶下,选择您创建的存储桶,然后将 hello_world.py 脚本上传至存储桶中的 artifacts/com.example.HelloWorld/1.0.0 文件夹。有关将对象上传至 S3 存储桶的更多信息,请参阅《Amazon Simple Storage Service 用户指南》中的上传对象

    6. 复制 S3 存储桶中 hello_world.py 对象的 S3 URI。此 URI 应该类似于以下示例。将 amzn-s3-demo-bucket 替换为 S3 存储桶的名称。

      s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py
  2. 允许核心设备访问 S3 存储桶中的组件构件。

    每台核心设备都有一个核心设备 IAM 角色,允许其与云进行交互 AWS IoT 并将日志发送到 AWS 云端。默认情况下,此设备角色不允许访问 S3 存储桶,因此您必须创建并附加一个允许核心设备从 S3 存储桶检索组件构件的策略。

    如果设备的角色已允许访问 S3 存储桶,则可跳过此步骤。否则,请创建允许访问的 IAM 策略并将其附加到该角色,如下所示:

    1. IAM 控制台的导航菜单中,选择策略,然后选择创建策略

    2. JSON 选项卡中,将占位符内容替换为以下策略。将 amzn-s3-demo-bucket 替换为包含供核心设备下载的组件构件的 S3 存储桶名称。

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*" } ] }
    3. 选择下一步

    4. 策略详细信息部分,对于名称,请输入 MyGreengrassV2ComponentArtifactPolicy

    5. 选择创建策略

    6. IAM 控制台导航菜单中,选择角色,然后选择核心设备的角色名称。您在安装 C AWS IoT Greengrass ore 软件时指定了此角色名称。如果您未指定名称,则默认使用 GreengrassV2TokenExchangeRole

    7. 权限下,选择添加权限,然后选择附加策略

    8. 添加权限页面,选中与您创建的策略 MyGreengrassV2ComponentArtifactPolicy 对应的复选框,然后选择添加权限

  3. 使用组件配方在 AWS IoT Greengrass 控制台中创建组件。

    1. AWS IoT Greengrass 控制台导航菜单中,选择组件,然后选择创建组件

    2. 组件信息下,选择以 JSON 格式输入配方。该占位符配方应该类似于以下示例。

      { "RecipeFormatVersion": "2020-01-25", "ComponentName": "com.example.HelloWorld", "ComponentVersion": "1.0.0", "ComponentDescription": "My first AWS IoT Greengrass component.", "ComponentPublisher": "Amazon", "ComponentConfiguration": { "DefaultConfiguration": { "Message": "world" } }, "Manifests": [ { "Platform": { "os": "linux" }, "Lifecycle": { "Run": "python3 -u {artifacts:path}/hello_world.py \"{configuration:/Message}\"" }, "Artifacts": [ { "URI": "s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py" } ] }, { "Platform": { "os": "windows" }, "Lifecycle": { "Run": "py -3 -u {artifacts:path}/hello_world.py \"{configuration:/Message}\"" }, "Artifacts": [ { "URI": "s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py" } ] } ] }
    3. 将每个 Artifacts 部分中的占位符 URI 替换为 hello_world.py 对象的 S3 URI。

    4. 选择创建组件

    5. com.example 上。 HelloWorld组件页面上,验证组件的状态是否为可部署

上传 Hello World 组件
  1. 使用您的中的 S3 存储桶 AWS 账户 来托管 AWS IoT Greengrass 组件项目。当您将组件部署到核心设备时,设备会从存储桶中下载该组件的构件。

    您可以使用现有 S3 存储桶,也可以运行以下命令以创建存储桶。此命令使用您的 AWS 账户 ID 创建一个存储桶 AWS 区域 ,并形成一个唯一的存储桶名称。123456789012用你的 AWS 账户 ID 和region你在本教程 AWS 区域 中使用的 ID 替换。

    aws s3 mb s3://greengrass-component-artifacts-123456789012-region

    如果请求成功,命令将输出以下信息。

    make_bucket: greengrass-component-artifacts-123456789012-region
  2. 允许核心设备访问 S3 存储桶中的组件构件。

    每台核心设备都有一个核心设备 IAM 角色,允许其与核心设备交互 AWS IoT 并向其发送日志 AWS Cloud。默认情况下,此设备角色不允许访问 S3 存储桶,因此您必须创建并附加一个允许核心设备从 S3 存储桶检索组件构件的策略。

    如果核心设备的角色已允许访问 S3 存储桶,则可跳过此步骤。否则,请创建允许访问的 IAM 策略并将其附加到该角色,如下所示:

    1. 创建一个名为 component-artifact-policy.json 的文件,并将以下 JSON 复制到该文件中。此策略允许访问 S3 存储桶中的所有文件。将 amzn-s3-demo-bucket 替换为 S3 存储桶的名称。

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*" } ] }
    2. 运行以下命令,从 component-artifact-policy.json 中的策略文档创建策略。

      Linux or Unix
      aws iam create-policy \\ --policy-name MyGreengrassV2ComponentArtifactPolicy \\ --policy-document file://component-artifact-policy.json
      Windows Command Prompt (CMD)
      aws iam create-policy ^ --policy-name MyGreengrassV2ComponentArtifactPolicy ^ --policy-document file://component-artifact-policy.json
      PowerShell
      aws iam create-policy ` --policy-name MyGreengrassV2ComponentArtifactPolicy ` --policy-document file://component-artifact-policy.json

      从输出中的策略元数据复制策略 Amazon 资源名称(ARN)。您将在下一步中使用此 ARN 来将此策略附加到核心设备角色。

    3. 运行以下命令以将策略附加到核心设备角色。GreengrassV2TokenExchangeRole替换为核心设备的角色名称。您在安装 C AWS IoT Greengrass ore 软件时指定了此角色名称。将策略 ARN 替换为上一步中的 ARN。

      Linux or Unix
      aws iam attach-role-policy \\ --role-name GreengrassV2TokenExchangeRole \\ --policy-arn arn:aws:iam::123456789012:policy/MyGreengrassV2ComponentArtifactPolicy
      Windows Command Prompt (CMD)
      aws iam attach-role-policy ^ --role-name GreengrassV2TokenExchangeRole ^ --policy-arn arn:aws:iam::123456789012:policy/MyGreengrassV2ComponentArtifactPolicy
      PowerShell
      aws iam attach-role-policy ` --role-name GreengrassV2TokenExchangeRole ` --policy-arn arn:aws:iam::123456789012:policy/MyGreengrassV2ComponentArtifactPolicy

      如果命令没有输出,则表示成功。核心设备现在可以访问您上传至 S3 存储桶的构件。

  3. 将 Hello World Python 脚本构件上传至 S3 存储桶。

    运行以下命令将脚本上传到 AWS IoT Greengrass 核心上存在脚本的存储桶中的相同路径。将 amzn-s3-demo-bucket 替换为 S3 存储桶的名称。

    Linux or Unix
    aws s3 cp \ artifacts/com.example.HelloWorld/1.0.0/hello_world.py \ s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py
    Windows Command Prompt (CMD)
    aws s3 cp ^ artifacts/com.example.HelloWorld/1.0.0/hello_world.py ^ s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py
    PowerShell
    aws s3 cp ` artifacts/com.example.HelloWorld/1.0.0/hello_world.py ` s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py

    如果请求成功,该命令将输出以 upload: 开头的行。

  4. 将构件的 Amazon S3 URI 添加到组件配方中。

    Amazon S3 URI 由存储桶名称和存储桶中构件对象的路径组成。您脚本构件的 Amazon S3 URI 就是您在上一步中上传构件的 URI。此 URI 应该类似于以下示例。将 amzn-s3-demo-bucket 替换为 S3 存储桶的名称。

    s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py

    要将构件添加到配方中,请添加一个包含 Amazon S3 URI 结构的 Artifacts 列表。

    JSON
    "Artifacts": [ { "URI": "s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py" } ]

    在文本编辑器中打开配方文件。

    例如,在基于 Linux 的系统上,您可以运行以下命令来使用 GNU nano 创建该文件。

    nano recipes/com.example.HelloWorld-1.0.0.json

    将构件添加到配方中。您的配方文件应类似于以下示例。

    { "RecipeFormatVersion": "2020-01-25", "ComponentName": "com.example.HelloWorld", "ComponentVersion": "1.0.0", "ComponentDescription": "My first AWS IoT Greengrass component.", "ComponentPublisher": "Amazon", "ComponentConfiguration": { "DefaultConfiguration": { "Message": "world" } }, "Manifests": [ { "Platform": { "os": "linux" }, "Lifecycle": { "Run": "python3 -u {artifacts:path}/hello_world.py \"{configuration:/Message}\"" }, "Artifacts": [ { "URI": "s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py" } ] }, { "Platform": { "os": "windows" }, "Lifecycle": { "Run": "py -3 -u {artifacts:path}/hello_world.py \"{configuration:/Message}\"" }, "Artifacts": [ { "URI": "s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py" } ] } ] }
    YAML
    Artifacts: - URI: s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py

    在文本编辑器中打开配方文件。

    例如,在基于 Linux 的系统上,您可以运行以下命令来使用 GNU nano 创建该文件。

    nano recipes/com.example.HelloWorld-1.0.0.yaml

    将构件添加到配方中。您的配方文件应类似于以下示例。

    --- RecipeFormatVersion: '2020-01-25' ComponentName: com.example.HelloWorld ComponentVersion: '1.0.0' ComponentDescription: My first AWS IoT Greengrass component. ComponentPublisher: Amazon ComponentConfiguration: DefaultConfiguration: Message: world Manifests: - Platform: os: linux Lifecycle: Run: | python3 -u {artifacts:path}/hello_world.py "{configuration:/Message}" Artifacts: - URI: s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py - Platform: os: windows Lifecycle: Run: | py -3 -u {artifacts:path}/hello_world.py "{configuration:/Message}" Artifacts: - URI: s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py
  5. AWS IoT Greengrass 从配方中创建组件资源。运行以下命令以根据以二进制文件形式提供的配方创建组件。

    JSON
    aws greengrassv2 create-component-version --inline-recipe fileb://recipes/com.example.HelloWorld-1.0.0.json
    YAML
    aws greengrassv2 create-component-version --inline-recipe fileb://recipes/com.example.HelloWorld-1.0.0.yaml

    如果请求成功,响应类似如下示例。

    { "arn": "arn:aws:greengrass:region:123456789012:components:com.example.HelloWorld:versions:1.0.0", "componentName": "com.example.HelloWorld", "componentVersion": "1.0.0", "creationTimestamp": "Mon Nov 30 09:04:05 UTC 2020", "status": { "componentState": "REQUESTED", "message": "NONE", "errors": {} } }

    从输出中复制 arn,以便在下一步中检查组件的状态。

    注意

    您还可以在 AWS IoT Greengrass 控制台组件页面上看到 Hello World 组件。

  6. 验证组件是否已创建且已准备好部署。创建组件后,其状态为 REQUESTED。然后, AWS IoT Greengrass 验证该组件是否可部署。您可以运行以下命令来查询组件状态并验证您的组件是否可部署。将 arn 替换为上一步中的 ARN。

    aws greengrassv2 describe-component --arn "arn:aws:greengrass:region:123456789012:components:com.example.HelloWorld:versions:1.0.0"

    如果组件通过验证,则响应中的组件状态会显示为 DEPLOYABLE

    { "arn": "arn:aws:greengrass:region:123456789012:components:com.example.HelloWorld:versions:1.0.0", "componentName": "com.example.HelloWorld", "componentVersion": "1.0.0", "creationTimestamp": "2020-11-30T18:04:05.823Z", "publisher": "Amazon", "description": "My first Greengrass component.", "status": { "componentState": "DEPLOYABLE", "message": "NONE", "errors": {} }, "platforms": [ { "os": "linux", "architecture": "all" } ] }

上传 Hello World 组件
  1. 使用您的中的 S3 存储桶 AWS 账户 来托管 AWS IoT Greengrass 组件项目。当您将组件部署到核心设备时,设备会从存储桶中下载该组件的构件。

    您可以使用现有 S3 存储桶,也可以运行以下命令以创建存储桶。此命令使用您的 AWS 账户 ID 创建一个存储桶 AWS 区域 ,并形成一个唯一的存储桶名称。123456789012用你的 AWS 账户 ID 和region你在本教程 AWS 区域 中使用的 ID 替换。

    aws s3 mb s3://greengrass-component-artifacts-123456789012-region

    如果请求成功,命令将输出以下信息。

    make_bucket: greengrass-component-artifacts-123456789012-region
  2. 允许核心设备访问 S3 存储桶中的组件构件。

    每台核心设备都有一个核心设备 IAM 角色,允许其与核心设备交互 AWS IoT 并向其发送日志 AWS Cloud。默认情况下,此设备角色不允许访问 S3 存储桶,因此您必须创建并附加一个允许核心设备从 S3 存储桶检索组件构件的策略。

    如果核心设备的角色已允许访问 S3 存储桶,则可跳过此步骤。否则,请创建允许访问的 IAM 策略并将其附加到该角色,如下所示:

    1. 创建一个名为 component-artifact-policy.json 的文件,并将以下 JSON 复制到该文件中。此策略允许访问 S3 存储桶中的所有文件。将 amzn-s3-demo-bucket 替换为 S3 存储桶的名称。

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*" } ] }
    2. 运行以下命令,从 component-artifact-policy.json 中的策略文档创建策略。

      Linux or Unix
      aws iam create-policy \\ --policy-name MyGreengrassV2ComponentArtifactPolicy \\ --policy-document file://component-artifact-policy.json
      Windows Command Prompt (CMD)
      aws iam create-policy ^ --policy-name MyGreengrassV2ComponentArtifactPolicy ^ --policy-document file://component-artifact-policy.json
      PowerShell
      aws iam create-policy ` --policy-name MyGreengrassV2ComponentArtifactPolicy ` --policy-document file://component-artifact-policy.json
      aws iam create-policy \\ --policy-name MyGreengrassV2ComponentArtifactPolicy \\ --policy-document file://component-artifact-policy.json

      从输出中的策略元数据复制策略 Amazon 资源名称(ARN)。您将在下一步中使用此 ARN 来将此策略附加到核心设备角色。

    3. 运行以下命令以将策略附加到核心设备角色。GreengrassV2TokenExchangeRole替换为核心设备的角色名称。您在安装 C AWS IoT Greengrass ore 软件时指定了此角色名称。将策略 ARN 替换为上一步中的 ARN。

      Linux or Unix
      aws iam attach-role-policy \\ --role-name GreengrassV2TokenExchangeRole \\ --policy-arn arn:aws:iam::123456789012:policy/MyGreengrassV2ComponentArtifactPolicy
      Windows Command Prompt (CMD)
      aws iam attach-role-policy ^ --role-name GreengrassV2TokenExchangeRole ^ --policy-arn arn:aws:iam::123456789012:policy/MyGreengrassV2ComponentArtifactPolicy
      PowerShell
      aws iam attach-role-policy ` --role-name GreengrassV2TokenExchangeRole ` --policy-arn arn:aws:iam::123456789012:policy/MyGreengrassV2ComponentArtifactPolicy
      aws iam attach-role-policy \\ --role-name GreengrassV2TokenExchangeRole \\ --policy-arn arn:aws:iam::123456789012:policy/MyGreengrassV2ComponentArtifactPolicy

      如果命令没有输出,则表示成功。核心设备现在可以访问您上传至 S3 存储桶的构件。

  3. 将 Hello World Python 脚本构件上传至 S3 存储桶。

    运行以下命令将脚本上传到 AWS IoT Greengrass 核心上存在脚本的存储桶中的相同路径。将 amzn-s3-demo-bucket 替换为 S3 存储桶的名称。

    Linux or Unix
    aws s3 cp \ artifacts/com.example.HelloWorld/1.0.0/hello_world.py \ s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py
    Windows Command Prompt (CMD)
    aws s3 cp ^ artifacts/com.example.HelloWorld/1.0.0/hello_world.py ^ s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py
    PowerShell
    aws s3 cp ` artifacts/com.example.HelloWorld/1.0.0/hello_world.py ` s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py
    aws s3 cp \ artifacts/com.example.HelloWorld/1.0.0/hello_world.py \ s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py

    如果请求成功,该命令将输出以 upload: 开头的行。

  4. 将构件的 Amazon S3 URI 添加到组件配方中。

    Amazon S3 URI 由存储桶名称和存储桶中构件对象的路径组成。您脚本构件的 Amazon S3 URI 就是您在上一步中上传构件的 URI。此 URI 应该类似于以下示例。将 amzn-s3-demo-bucket 替换为 S3 存储桶的名称。

    s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py

    要将构件添加到配方中,请添加一个包含 Amazon S3 URI 结构的 Artifacts 列表。

    JSON
    "Artifacts": [ { "URI": "s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py" } ]

    在文本编辑器中打开配方文件。

    例如,在基于 Linux 的系统上,您可以运行以下命令来使用 GNU nano 创建该文件。

    nano recipes/com.example.HelloWorld-1.0.0.json

    将构件添加到配方中。您的配方文件应类似于以下示例。

    { "RecipeFormatVersion": "2020-01-25", "ComponentName": "com.example.HelloWorld", "ComponentVersion": "1.0.0", "ComponentDescription": "My first AWS IoT Greengrass component.", "ComponentPublisher": "Amazon", "ComponentConfiguration": { "DefaultConfiguration": { "Message": "world" } }, "Manifests": [ { "Platform": { "os": "linux" }, "Lifecycle": { "Run": "python3 -u {artifacts:path}/hello_world.py \"{configuration:/Message}\"" }, "Artifacts": [ { "URI": "s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py" } ] }, { "Platform": { "os": "windows" }, "Lifecycle": { "Run": "py -3 -u {artifacts:path}/hello_world.py \"{configuration:/Message}\"" }, "Artifacts": [ { "URI": "s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py" } ] } ] }
    YAML
    Artifacts: - URI: s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py

    在文本编辑器中打开配方文件。

    例如,在基于 Linux 的系统上,您可以运行以下命令来使用 GNU nano 创建该文件。

    nano recipes/com.example.HelloWorld-1.0.0.yaml

    将构件添加到配方中。您的配方文件应类似于以下示例。

    --- RecipeFormatVersion: '2020-01-25' ComponentName: com.example.HelloWorld ComponentVersion: '1.0.0' ComponentDescription: My first AWS IoT Greengrass component. ComponentPublisher: Amazon ComponentConfiguration: DefaultConfiguration: Message: world Manifests: - Platform: os: linux Lifecycle: Run: | python3 -u {artifacts:path}/hello_world.py "{configuration:/Message}" Artifacts: - URI: s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py - Platform: os: windows Lifecycle: Run: | py -3 -u {artifacts:path}/hello_world.py "{configuration:/Message}" Artifacts: - URI: s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py
    "Artifacts": [ { "URI": "s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py" } ]

    在文本编辑器中打开配方文件。

    例如,在基于 Linux 的系统上,您可以运行以下命令来使用 GNU nano 创建该文件。

    nano recipes/com.example.HelloWorld-1.0.0.json

    将构件添加到配方中。您的配方文件应类似于以下示例。

    { "RecipeFormatVersion": "2020-01-25", "ComponentName": "com.example.HelloWorld", "ComponentVersion": "1.0.0", "ComponentDescription": "My first AWS IoT Greengrass component.", "ComponentPublisher": "Amazon", "ComponentConfiguration": { "DefaultConfiguration": { "Message": "world" } }, "Manifests": [ { "Platform": { "os": "linux" }, "Lifecycle": { "Run": "python3 -u {artifacts:path}/hello_world.py \"{configuration:/Message}\"" }, "Artifacts": [ { "URI": "s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py" } ] }, { "Platform": { "os": "windows" }, "Lifecycle": { "Run": "py -3 -u {artifacts:path}/hello_world.py \"{configuration:/Message}\"" }, "Artifacts": [ { "URI": "s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py" } ] } ] }
  5. AWS IoT Greengrass 从配方中创建组件资源。运行以下命令以根据以二进制文件形式提供的配方创建组件。

    JSON
    aws greengrassv2 create-component-version --inline-recipe fileb://recipes/com.example.HelloWorld-1.0.0.json
    YAML
    aws greengrassv2 create-component-version --inline-recipe fileb://recipes/com.example.HelloWorld-1.0.0.yaml
    aws greengrassv2 create-component-version --inline-recipe fileb://recipes/com.example.HelloWorld-1.0.0.json

    如果请求成功,响应类似如下示例。

    { "arn": "arn:aws:greengrass:region:123456789012:components:com.example.HelloWorld:versions:1.0.0", "componentName": "com.example.HelloWorld", "componentVersion": "1.0.0", "creationTimestamp": "Mon Nov 30 09:04:05 UTC 2020", "status": { "componentState": "REQUESTED", "message": "NONE", "errors": {} } }

    从输出中复制 arn,以便在下一步中检查组件的状态。

    注意

    您还可以在 AWS IoT Greengrass 控制台组件页面上看到 Hello World 组件。

  6. 验证组件是否已创建且已准备好部署。创建组件后,其状态为 REQUESTED。然后, AWS IoT Greengrass 验证该组件是否可部署。您可以运行以下命令来查询组件状态并验证您的组件是否可部署。将 arn 替换为上一步中的 ARN。

    aws greengrassv2 describe-component --arn "arn:aws:greengrass:region:123456789012:components:com.example.HelloWorld:versions:1.0.0"

    如果组件通过验证,则响应中的组件状态会显示为 DEPLOYABLE

    { "arn": "arn:aws:greengrass:region:123456789012:components:com.example.HelloWorld:versions:1.0.0", "componentName": "com.example.HelloWorld", "componentVersion": "1.0.0", "creationTimestamp": "2020-11-30T18:04:05.823Z", "publisher": "Amazon", "description": "My first Greengrass component.", "status": { "componentState": "DEPLOYABLE", "message": "NONE", "errors": {} }, "platforms": [ { "os": "linux", "architecture": "all" } ] }

你的 Hello World 组件现已在中可用 AWS IoT Greengrass。您可以将其部署回此 Greengrass 核心设备或其它核心设备。

隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。