

# S3 バケットにファームウェアファイルをアップロードし、IAM ロールを追加する
<a name="lorawan-upload-firmware-s3bucket"></a>

Amazon S3 を使用して、*バケット*を作成します。バケットは、ファームウェア更新ファイルを保存できるコンテナです。ファイルを S3 バケットにアップロードし、CUPS サーバーがバケットから更新ファイルを読み取ることを許可する IAM ロールを追加できます。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 コンソール](https://console.aws.amazon.com/s3/home#)を開きます。サインインしていない場合はサインインしてから、次の手順を実行します。

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. LoRaWAN ゲートウェイとデバイスの作成に使用するものとして選択されている AWS リージョン を選択したことと、[**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 をコピーする) を選択します。前に説明した例 (`fwstation`) と同様の名前をバケットに付けた場合、URI は `s3://iotwirelessfwupdate/fwstation` のようになります。S3 URI は IAM ロールを作成するときに使用します。

## S3 バケットを読み取る許可を持つ IAM ロールを作成する
<a name="lorawan-s3-iam-permissions"></a>

次に、S3 バケットからファームウェア更新ファイルを読み取る許可を CUPS に付与する IAM ロールとポリシーを作成します。

**ロールに IAM ポリシーを作成する**  
AWS IoT Core for LoRaWAN 送信先ロールに IAM ポリシーを作成するには、[IAM コンソールの [Policies] (ポリシー) ハブ](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. [**Create policy**] (ポリシーの作成) を選択します。

**ポリシーがアタッチされた IAM ロールを作成する**  
次に、IAM ロールを作成して、先ほど S3 バケットへのアクセス用に作成したポリシーをアタッチします。[IAM コンソールの [Roles] (ロール) ハブ](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. [**次へ: タグ**]、[**次へ: 確認**] の順に選択します。

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) はそのまま保持してください。これらは、ファームウェア更新を行うために実行するタスク定義を作成するときに入力します。