

# 將韌體檔案上傳至 S3 儲存貯體並新增 IAM 角色
<a name="lorawan-upload-firmware-s3bucket"></a>

您可以使用 Amazon S3 來建立「儲存貯體」**，這是一個容器，其中可以儲存您的韌體更新檔案。您可以將檔案上傳到 S3 儲存貯體，並新增 IAM 角色，允許 CUPS 伺服器從儲存貯體讀取您的更新檔案。如需 Amazon S3 的詳細資訊，請參閱 [Amazon S3 入門](https://docs.aws.amazon.com/AmazonS3/latest/userguide/GetStartedWithS3.html)。

您要上傳的韌體更新檔案取決於您正在使用的閘道。如果您所遵循的程序類似於 [產生韌體更新檔案和簽章](lorawan-script-fwupdate-sigkey.md) 所述的程序，您將上傳藉由執行指令碼所產生的 `fwstation` 檔案。

此程序約需 20 分鐘才能完成。

**Topics**
+ [建立 Amazon S3 儲存貯體並上傳更新檔案](#lorawan-create-s3-bucket)
+ [建立許可讀取 S3 儲存貯體的 IAM 角色](#lorawan-s3-iam-permissions)
+ [檢閱後續步驟](#lorawan-s3iam-next-steps)

## 建立 Amazon S3 儲存貯體並上傳更新檔案
<a name="lorawan-create-s3-bucket"></a>

您可以使用 AWS 管理主控台 來建立 Amazon S3 儲存貯體，然後將韌體更新檔案上傳至儲存貯體。

**建立 S3 儲存貯體**  
若要建立 S3 儲存貯體，請開啟 [Amazon S3 console](https://console.aws.amazon.com/s3/home#) (Amazon S3 主控台)。如果您尚未登入，請登入，然後執行下列步驟：

1. 選擇**建立儲存貯體**。

1. 為 **Bucket name** (儲存貯體名稱) 輸入唯一且有意義的名稱 (例如，`iotwirelessfwupdate`)。如需儲存貯體的建議命名慣例，請參閱 [https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html)。

1. 確定您已選取 AWS 區域，作為您用來建立 LoRaWAN 閘道和裝置的區域，並已選取 **Block all public access (封鎖所有公有存取)** 設定，以便您的儲存貯體可以使用預設許可。

1. 針對 **Bucket versioning** (儲存貯體版本控制) 選擇 **Enable** (啟用)，這將協助您將多個版本的韌體更新檔案保留在同一儲存貯體中。

1. 確認 **Server-side encryption** (伺服器端加密) 已設定為 **Disable** (停用)，然後選擇 **Create bucket** (建立儲存貯體)。

**上傳您的韌體更新檔案**  
您現在可以在 AWS 管理主控台 顯示的儲存貯體清單中看到您的儲存貯體。選擇您的儲存貯體並完成下列步驟以上傳您的檔案。

1. 選擇您的儲存貯體，然後選擇 **Upload** (上傳)。

1. 選擇 **Add file** (新增檔案)，然後上傳韌體更新檔案。如果已遵循 [產生韌體更新檔案和簽章](lorawan-script-fwupdate-sigkey.md) 所述的程序，您將上傳 `fwstation` 檔案，否則上傳閘道製造商所提供的檔案。

1. 確定所有設定都設定為其預設值。確定 **Predefined ACLs** (預先定義的 ACL) 已設定為 **private** (私有)，然後選擇 **Upload** (上傳) 以上傳您的檔案。

1. 複製所上傳檔案的 S3 URI。選擇您的儲存貯體，您會看到您上傳的檔案顯示在 **Objects** (物件) 的清單中。選擇您的檔案，然後選擇 **Copy S3 URI** (複製 S3 URI)。URI 將如下所示：`s3://iotwirelessfwupdate/fwstation`，如果您已將儲存貯體命名為類似於上述範例 (`fwstation`)。您將會在建立 IAM 角色時使用 S3 URI。

## 建立許可讀取 S3 儲存貯體的 IAM 角色
<a name="lorawan-s3-iam-permissions"></a>

您現在將建立 IAM 角色和政策，許可 CUPS 從 S3 儲存貯體讀取您的韌體更新檔案。

**為您的角色建立 IAM 政策**  
若要為您的 AWS IoT Core for LoRaWAN 目的地角色建立 IAM 政策，請開啟 [IAM 主控台的政策中樞](https://console.aws.amazon.com/iam/home#/policies)，然後完成下列步驟：

1. 選擇 **Create policy** (建立政策)，然後選擇 **JSON** 標籤。

1. 刪除編輯器中的任何內容，然後貼上此政策文件。政策許可您存取 `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"
               ]
           }
       ]
   }
   ```

1. 選擇 **Review policy** (檢閱政策)，然後在 **Name** (名稱) 中，輸入此政策的名稱 (例如，`IoTWirelessFwUpdatePolicy`)。您將需要此名稱用於下一個程序中。

1. 選擇**建立政策**。

**建立 IAM 角色與附加的政策**  
您現在將建立 IAM 角色，並連接先前建立的政策，以存取 S3 儲存貯體。開啟 [IAM 主控台的角色中樞](https://console.aws.amazon.com/iam/home#/roles)，然後完成下列步驟：

1. 選擇 **Create Role** (建立角色)。

1. 在 **Select type of trusted entity** (選取信任的實體類型) 中，選擇 **Another AWS 帳戶** (另一個 AWS 帳戶 帳戶)。

1. 在 **Account ID** (帳戶 ID) 中，請輸入您的 AWS 帳戶 ID，然後選擇 **Next: Permissions** (下一步：許可)。

1. 在搜尋方塊中，輸入您在上一個程序中建立的 IAM 政策名稱。檢查您稍早在搜尋結果中建立的 IAM 政策 (例如，`IoTWirelessFwUpdatePolicy`)，然後選擇它。

1. 選擇 **Next: Tags** (下一步：標籤)，然後選擇 **Next: Review** (下一步：檢閱)。

1. 在 **Role name** (角色名稱) 中，輸入此角色的名稱 (例如，`IoTWirelessFwUpdateRole`)，然後選擇 **Create role** (建立角色)。

**編輯 IAM 角色的信任關係**  
在執行前一個步驟之後顯示的確認訊息中，選擇您建立的角色名稱以編輯該角色。您將編輯角色以新增下列信任關係。

1. 在所建立角色的 **Summary** (摘要) 區段中，選擇 **Trust relationships** (信任關係) 標籤，然後選擇 **Edit trust relationship** (編輯信任關係)。

1. 在 **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": {}
       }
     ]
   }
   ```

1. 若要儲存您的變更，請選擇 **Update Trust Policy** (更新信任政策)。

1. 為您的角色取得 ARN。選擇您的 IAM 角色，然後在 Summary (摘要) 區段中，您會看到 **Role ARN** (角色 ARN)，例如 `arn:aws:iam::123456789012:role/IoTWirelessFwUpdateRole`。複製此 **Role ARN** (角色 ARN)。

## 檢閱後續步驟
<a name="lorawan-s3iam-next-steps"></a>

既然您已建立 S3 儲存貯體，以及允許 CUPS 伺服器讀取 S3 儲存貯體的 IAM 角色，請移至下一個主題以排程並執行韌體更新。保留您先前複製的 **S3 URI** 和 **Role ARN** (角色 ARN)，以便您可以輸入它們，來建立為了執行韌體更新而執行的任務定義。