将固件文件上载到 S3 存储桶并添加 IAM 角色 - AWS IoT Wireless

将固件文件上载到 S3 存储桶并添加 IAM 角色

您可以使用 Amazon S3 创建存储桶,这是一个可以存储固件更新文件的容器。您可以将文件上载到 S3 存储桶,并添加允许 CUPS 服务器从存储桶读取更新文件的 IAM 角色。有关 Amazon S3 的更多信息,请参阅 Amazon S3 入门

要上载的固件更新文件取决于您使用的网关。如果您遵循类似于 生成固件更新文件和签名 中所述的流程,则您将上载通过运行脚本所生成的 fwstation 文件。

完成本流程需要大约 20 分钟。

创建 Amazon S3 存储桶并上载更新文件

您将使用 AWS Management Console 创建 Amazon S3 存储桶,然后将固件更新文件上载到存储桶中。

创建 S3 存储桶

要创建 S3 存储桶,请打开 Amazon S3 控制台。登录(如果尚未登录),然后执行以下步骤:

  1. 选择创建存储桶

  2. 输入唯一且有意义的名称作为 Bucket name(存储桶名称),例如 iotwirelessfwupdate。有关存储桶的建议命名约定,请参阅 https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html

  3. 确保您选择了AWS 区域来创建 LoRaWAN 网关和设备,并且选中 Block all public access(阻止所有公有访问)设置,以便您的存储桶使用默认权限。

  4. Bucket versioning(存储桶版本控制)选择 Enable(启用),这将帮助您将固件更新文件的多个版本保留在同一存储桶中。

  5. 确认将 Server-side encryption(服务器端加密)设置为 Disable(禁用),然后选择 Create bucket(创建存储桶)。

上载固件更新文件

现在,您可以在显示在 AWS Management Console 的存储桶列表中看到您的存储桶了。选择您的存储桶并完成以下步骤以上载您的文件。

  1. 选择您的存储桶,然后选择 Upload(上载)。

  2. 选择 Add file(添加文件),然后上载固件更新文件。如果您按照 生成固件更新文件和签名 中所述的流程执行,您应上载 fwstation 文件,否则请上载网关制造商提供的文件。

  3. 确保所有设置都保留为默认值。请确保 Predefined ACL(预定义 ACL)设置为 private(私有),然后选择 Upload(上载)以上载您的文件。

  4. 复制您所上载文件的 S3 URI。选择您的存储桶,您将看到上载的文件显示在 Objects(对象)列表中。选择您的文件,然后选择 Copy S3 URI(复制 S3 URI)。如果您将存储桶命名为类似于前述示例 (fwstation),则 URI 将类似于:s3://iotwirelessfwupdate/fwstation。在创建 IAM 角色时,您将使用 S3 URI。

创建具有读取 S3 存储桶权限的 IAM 角色

现在,您将创建 IAM 角色和策略,该角色和策略将授予 CUPS 从 S3 存储桶读取固件更新文件的权限。

为您的角色创建 IAM 策略

要为 适用于 LoRaWAN 的 AWS IoT Core 目标角色创建 IAM 策略,请打开 IAM 控制台的策略中心,然后完成以下步骤:

  1. 选择 Create policy(创建策略),然后选择 JSON 选项卡。

  2. 从编辑器中删除所有内容并粘贴此策略文档。策略提供访问 iotwireless 存储桶的权限,固件更新文件 fwstation 存储在对象内。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "s3:ListBucketVersions", "s3:ListBucket", "s3:GetObject" ], "Resource": [ "arn:aws:s3:::iotwirelessfwupdate/fwstation", "arn:aws:s3:::iotwirelessfwupdate" ] } ] }
  3. 选择 Review policy(查看策略),在 Name(名称)中,输入此策略的名称(例如,IoTWirelessFwUpdatePolicy)。在下一流程中,您将需要使用此名称。

  4. 选择创建策略

使用附加的策略创建 IAM 角色。

现在,您将创建一个 IAM 角色并附加以前为访问 S3 存储桶而创建的策略。打开 IAM 控制台的角色中心并完成以下步骤:

  1. 选择创建角色

  2. Select type of trusted entity(选择受信任实体的类型)下,选择 Another AWS 账户(另一个亚马逊云科技账户)。

  3. Account ID(账户 ID),请输入您的AWS 账户 ID,然后选择 Next: Permission(下一步:权限)。

  4. 在搜索框中,输入您在上一流程中创建的 IAM 策略名称。在搜索结果中检查您之前创建的 IAM 策略(例如 IoTWirelessFwUpdatePolicy),然后选择该策略。

  5. 依次选择 Next: Tags(下一步:标签)和 Next: Review(下一步:查看)。

  6. 对于 Role name(角色名称),输入此角色的名称(例如 IoTWirelessFwUpdateRole),然后选择 Create role(创建角色)。

编辑 IAM 角色的信任关系

在运行上一步后显示的确认信息中,选择您创建的角色的名称进行编辑。您将编辑角色以添加以下信任关系。

  1. 在刚刚创建的角色的 Summary(摘要)页面上,选择 Trust relationship(信任关系)选项卡,然后选择 Edit trust relationship(编辑信任关系)。

  2. Policy Document(策略文档)中,更改 Principal 属性以使其类似于此示例。

    "Principal": { "Service": "iotwireless.amazonaws.com" },

    在您更改 Principal 属性后,完整的策略文档应该如此示例所示。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "iotwireless.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": {} } ] }
  3. 要保存更改并退出,请选择 Update Trust Policy(更新信任策略)。

  4. 获取角色的 ARN。选择在“摘要”部分您的 IAM 角色,您将看到 Role ARN(角色 ARN),例如 arn:aws:iam::123456789012:role/IoTWirelessFwUpdateRole。复制此 Role ARN(角色 ARN)。

查看后续步骤

现在,您已创建 S3 存储桶和允许 CUPS 服务器读取 S3 存储桶的 IAM 角色,请转到下一个主题以安排并运行固件更新。保留您之前复制的 S3 URIRole ARN(角色 ARN),以便您可以输入这些信息以创建将运行的任务定义,以执行固件更新。