

# 创建 FUOTA 任务并提供固件映像
<a name="lorawan-fuota-create-task"></a>

要更新 LoRaWAN 设备的固件，首先创建一个 FUOTA 任务并提供要用于更新的数字签名固件映像。然后，您可以将设备和多播组添加到任务中并调度 FUOTA 会话。会话开始时，适用于 LoRaWAN 的 AWS IoT Core 设置碎片会话，最终设备收集碎片、重建映像并应用新固件。有关 FUOTA 过程的更多信息，请参阅 [FUOTA 过程概述](lorawan-fuota-mc-process.md)。

下面说明了如何创建 FUOTA 任务并上传要存储在 S3 存储桶中的固件映像或增量映像。

## 先决条件
<a name="lorawan-fuota-task-prereq"></a>

在执行 FUOTA 之前，必须对固件映像进行数字签名，这样您的终端设备才可以在应用映像时验证映像的真实性。您可以使用任何第三方工具为固件映像生成数字签名。建议您使用数字签名工具，例如嵌入 [ARM mbed GitHub 存储库](https://github.com/armmbed/mbed-os-example-lorawan-fuota)的工具，其中还包括用于生成增量映像和设备使用该映像的工具。

## 使用控制台创建 FUOTA 任务并上传固件映像
<a name="lorawan-fuota-task-console"></a>

要创建 FUOTA 任务并使用控制台上传固件映像，请转到控制台的 [FUOTA 任务](https://console.aws.amazon.com/iot/home#/wireless/fuotaTasks) 的选项卡，然后选择 **Create FUOTA task**（创建 FUOTA 任务）。

1. 

**创建 FUOTA 任务**

   要创建 FUOTA 任务，请指定任务属性和标签。

   1. 

**指定 FUOTA 任务属性**  
要指定 FUOTA 任务属性，请为 FUOTA 任务输入以下信息。
      + **名称**：为 FUOTA 任务输入唯一的名称。名称只能包含字母、数字、连字符和下划线。它不能包含空格。
      + **说明**：您可以为多播组提供可选描述。说明字段最多为 2,048 个字符。
      + **RFRegion**：为 FUOTA 任务设置频段。频段必须与您用于配置无线设备或多播组的频段相匹配。

   1. 

**FUOTA 任务的标签**  
您可以选择提供任何键值对作为的 FUOTA 任务的**标签**。要继续创建您的映像，选择 **Next**(下一步)。

1. 

**上传固件映像**

   选择要用来更新添加到 FUOTA 任务设备固件的固件映像文件。固件映像文件存储在 S3 存储桶中。您可以为 适用于 LoRaWAN 的 AWS IoT Core 提供代表您访问固件映像的权限。我们建议您对固件映像进行数字签名，以便在执行固件更新时验证其真实性。

   1. 

**选择固件映像文件**  
您可以将新的固件映像文件上传到 S3 存储桶，也可以选择已上传到 S3 存储桶的现有映像。
**注意**  
固件映像文件不得超过 1 兆字节。固件越大，更新过程完成所需的时间就越长。
      + 要使用现有映像，选择 **Select an existing firmware image**（选择现有的固件映像），选择 **Browse S3**（浏览 S3），然后选择要使用的固件映像文件。

        适用于 LoRaWAN 的 AWS IoT Core 填充 S3 URL，该 URL 是 S3 存储桶中固件映像文件的路径。`s3://bucket_name/file_name` 路径的格式为：要在 [Amazon Simple Storage Service](https://console.aws.amazon.com/s3/)控制台中查看文件，选择 **View**（查看）。
      + 要上传新的固件映像。

        1. 选择 **Upload a new firmware image**（上载新的固件映像），然后上载固件映像。映像文件不得大于 1 兆字节。

        1. 要创建 S3 存储桶并输入要存储固件映像文件的**Bucket 名称**，请选择 **Create S3 bucket**（创建 S3 存储桶）。

   1. 

**要访问存储桶的权限**  
您可以创建新的服务角色或选择现有角色，让 适用于 LoRaWAN 的 AWS IoT Core 代表您访问 S3 存储桶中的固件映像文件。选择**下一步**。

      要创建新角色，您可以输入角色名称或将其留白以便自动生成随机名称。要查看授予对 S3 存储桶访问权限的策略权限，选择 **View policy permissions**（查看策略权限）。

   有关使用 S3 存储桶存储映像和授予 适用于 LoRaWAN 的 AWS IoT Core 访问权限的更多信息，请参阅 [将固件文件上载到 S3 存储桶并添加 IAM 角色](lorawan-upload-firmware-s3bucket.md)。

1. 

**审核和创建**

   要创建 FUOTA 任务，请查看您指定的 FUOTA 任务和配置详细信息，然后选择 **Create task**(创建任务)。

## 使用 API 创建 FUOTA 任务并上传固件映像
<a name="lorawan-fuota-task-api"></a>

要使用 API创建 FUOTA 任务并指定固件映像文件，请使用 [https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_CreateFuotaTask.html](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_CreateFuotaTask.html) API 操作或 [https://docs.aws.amazon.com/cli/latest/reference/iotwireless/create-fuota-task.html](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/create-fuota-task.html)CLI 命令。您可以将 `input.json` 文件作为 `create-fuota-task` 命令的输入。使用 API 或 CLI 时，作为输入提供的固件映像文件必须已上传到 S3 存储桶。您还可以指定让 适用于 LoRaWAN 的 AWS IoT Core 访问S3 存储桶中固件映像的 IAM 角色。

```
aws iotwireless create-fuota-task \
    --cli-input-json file://input.json
```

其中：

**input.json 的内容**

```
{   
   "Description": "FUOTA task to update firmware of devices in multicast group.",
   "FirmwareUpdateImage": "S3:/firmware_bucket/firmware_image
   "FirmwareUpdateRole": "arn:aws:iam::123456789012:role/service-role/ACF1zBEI"
   "LoRaWAN": { 
      "RfRegion": "US915"
   },
   "Name": "FUOTA_Task_MC"  
}
```

创建 FUOTA 任务后，您可以使用以下 API 操作或 CLI 命令来更新、删除或获取有关 FUOTA 任务的信息。
+ [https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_UpdateFuotaTask](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_UpdateFuotaTask) 或 [https://docs.aws.amazon.com/cli/latest/reference/iotwireless/update-fuota-task.html](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/update-fuota-task.html) 
+ [https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_GetFuotaTask](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_GetFuotaTask) 或 [https://docs.aws.amazon.com/cli/latest/reference/iotwireless/get-fuota-task.html](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/get-fuota-task.html) 
+ [https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_ListFuotaTasks](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_ListFuotaTasks) 或 [https://docs.aws.amazon.com/cli/latest/reference/iotwireless/list-fuota-tasks.html](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/list-fuota-tasks.html) 
+ [https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_DeleteFuotaTask](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_DeleteFuotaTask) 或 [https://docs.aws.amazon.com/cli/latest/reference/iotwireless/delete-fuota-task.html](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/delete-fuota-task.html) 

## 后续步骤
<a name="lorawan-fuota-next-steps"></a>

现在，您已创建了 FUOTA 任务并提供了固件映像，您可以将设备添加到任务中更新固件。您可以将单个设备或多播组添加到任务中。有关更多信息，请参阅[将设备和多播组添加到 FUOTA 任务并调度 FUOTA 会话](lorawan-fuota-add-devices.md)。