後にArmadilloがカメラから取得した画像を閲覧するために、WebサーバーをAmazon Elastic Compute Cloud(EC2)上に構築します。
本手順では、EC2のインスタンスの作成を行います。
EC2のインスタンスの作成を行うことができるIAMユーザーで作業を行ってください。
EC2インスタンスページにアクセスし、「インスタンスを起動」をクリックしてください。
「ステップ1: Amazonマシンイメージ(AMI)」では、無料枠のある「Ubuntu Server 20.04 LTS (HVM)」の64ビットを選択してください。
「ステップ2: インスタンスタイプの選択」では、無料枠の「t2.micro」を選択し、「確認と作成」をクリックしてください。
「ステップ7: インスタンス作成の確認」では、「セキュリティグループの編集」をクリックしてください。
「ステップ6: セキュリティグループの設定」では、「ルールの追加」をクリックし、以下の様に設定して「確認と作成」をクリックしてください。
表3.1 セキュリティグループの設定
タイプ | プロトコル | ポート範囲 | ソース | 説明 |
---|
HTTP | TCP | 80 | 0.0.0.0/0 | 空白 |
再度「ステップ7: インスタンス作成の確認」に戻りますので、右下の「起動」をクリックしてください。
クリックすると、以下のポップアップが出るので、「新しいキーペアの作成」を選択し、キーペアのタイプを「RSA」、キーペア名に任意の文字列を入力して「キーペアのダウンロード」を行ってください。
以下の例ではキーペア名を「aiota6_monitoring_camera」として行っています。
「[キーペア名].pem」を任意の場所に保存しておいてください。
その後、「インスタンスの作成」をクリックしてください。
しばらくするとインスタンスの起動が完了します。
3.1.1.2. インスタンスへのIAMロールの追加
作成したEC2インスタンスは、S3とDynamoDBへの読み込みアクセスが可能である必要があります。
本手順では、作成したEC2インスタンスに適切なIAMロールを割り当てます。
EC2インスタンスページから先程作成したインスタンスを選択し、「アクション」→「セキュリティ」→「IAM ロールを変更」をクリックしてください。
「新しいIAM ロールを作成」をクリックしてください。
新しいタブでページが開かれるので、「ロールを作成」をクリックしてください。
「一般的なユースケース」、もしくは「または、サービスを選択してユースケースを表示します」から「EC2」を選択して、「次のステップ: アクセス権限」をクリックしてください。
以下の2つのポリシーをアタッチし、「次のステップ: タグ」に進みます。
-
AmazonDynamoDBReadOnlyAccess
-
AmazonS3ReadOnlyAccess
タグは設定不要です。
「次のステップ: 確認」に進みます。
「ロール名」に任意の文字列を設定してください。
以下の例では「EC2WebServer」としています。
ロール名が決まったら「ロールの作成」をクリックしてください。
「IAM ロールを変更」の画面に戻り、更新ボタンをクリックし、プルダウンメニューから作成したIAM ロールを選択してください。
選択したら、「保存」をクリックしてください。
EC2インスタンスページに戻り、作成したインスタンスを選択してインスタンスの再起動を行ってください。
しばらくすると再起動が完了します。
EC2インスタンスページから先程作成したインスタンスを選択し、「接続」をクリックしてください。
「インスタンスに接続」の「SSH クライアント」タブを開き、「4. ご使用中のインスタンスのパブリックDNSを使用してインスタンスに接続」の下にある文字列をメモしてください。
以上でEC2の設定は完了です。
次にAmazon Simple Storage Service(S3)上にバケットを作成します。
S3のバケット作成を行うことができるIAMユーザーで作業を行ってください。
S3バケットページにアクセスし、「バケットを作成」をクリックしてください。
「バケット名」は任意の文字列、リージョンは「アジアパシフィック(東京) ap-northeast-1」を選択します。
「オブジェクト所有者」では「ACL有効」と「希望するバケット所有者」を選択します。
「このバケットのブロックパブリックアクセス設定」では「パブリックアクセスをすべてブロック」のチェックを外し、「現在の設定により、このバケットとバケット内のオブジェクトが公開される可能性があることを承認します。」にチェックを入れて「バケットの作成」をクリックしてください。
バケット一覧に作成したバケットが表示されたら完了です。
3.1.2.2. S3バケットのライフサイクルルールの追加
「S3バケットの作成」で作成したバケットをそのまま使用しても問題ありませんが、現状の設定ではバケットに保存された画像は手動で削除しない限り永遠に残り続けます。
S3は保存容量による課金がありますので、このままの運用では料金が膨れ上がっていきます。
本手順では、作成したS3バケットにライフサイクルルールを追加し、保存から2週間で自動的に削除されるように設定します。
作成したS3のバケットページから、「管理」タブをクリックします。
管理タブから「ライフサイクルルールを作成する」をクリックしてください。
「ライフサイクルルールを作成する」ページに遷移するので、以下の様に設定します。
-
「ライフサイクルルール名」: S3_lifecycle
-
「ルールスコープを選択」: 「バケット内のすべてのオブジェクトに適用」を選択
-
「このルールがバケット内のすべてのオブジェクトに適用されることを了承します。」にチェック
「ライフサイクルルールのアクション」は以下の2つにチェック
-
「オブジェクトの現行バージョンを有効期限にする」
-
「オブジェクトの非現行バージョンを完全に削除」
-
「オブジェクトの現行バージョンの有効期限が切れる」の「オブジェクト作成後の日数」を 7 に設定
-
「オブジェクトの以前のバージョンを完全に削除する」の「オブジェクトが以前のバージョンになってからの日数」を 7 に設定
設定後、「ルールの作成」をクリックしてください。
以上でS3の設定は完了です。
IAMマネジメントコンソール
へログインしてください。その後、ユーザータブを開き、「ユーザーを追加」をクリックします。
下記の通り入力、選択し「次のステップ:アクセス権限」に進みます。
-
ユーザー名
-
AWSアクセスの種類を両方選択
-
コンソールのパスワードは自動生成パスワードを選択
-
「パスワードのリセットが必要」にチェックを入れる
下記の手順でポリシーをアタッチし、「次のステップ: タグ」に進みます。
-
「既存のポリシーを直接アタッチ」を選択
表示された中から以下にチェック
-
AmazonS3FullAccess
-
AmazonDynamoDBFullAccess
今回は設定不要です。
「次のステップ:確認」に進みます。
確認画面が表示されます。
設定した通りの内容になっていることを確認し、「ユーザーの作成」をクリックしてください。
成功すると下記のような画面が表示されます。
後ほどArmadilloの設定で使用するため、ここでは必ずcsvのダウンロードを忘れずに行ってください。
行わなかった場合、再度IAMユーザーを作成する必要があります。
ダウンロードしたファイル( new_user_credentials.csv )の内容は、以下のようなカンマ区切りの文字列になります。
User name,Password,Access key ID,Secret access key,Console login link
user,pass,AWS123,asdfghjkl,https://***.signin.aws.amazon.com/console
この例の場合、Access key IDの値は AWS123
で、Secret access keyの値は asdfghjkl
です。
インストールディスクの第1パーティションには、本アプリケーションが動作するための設定を記入するファイルが格納されています。
本手順ではそれらの設定ファイルの編集方法について説明します。
Armadiiloが動作するための各種ファイルを配置します。
-
インストールディスクイメージが書き込まれたSDカードをPCに接続
「ファイル」から「2.1MB ボリューム」をクリック
下記のファイルを etc/aiota6_monitoring_camera/ 以下に配置してください。
本アプリケーションが動作する際の初期設定値の編集を行います。
-
「ファイル」から「2.1MB ボリューム」をクリック
etc/aiota6_monitoring_camera/parameter.json をテキストエディタで開きます
以下の7項目を編集します( s3_bucket_nameとec2_public_dnsは必ず編集してください )
表3.2 初期設定ファイルの設定項目
項目 | 説明 | 初期値(単位) |
---|
operation_interval_min | Armadilloがsleepモードから復帰するまでの時間です | 60(分) |
s3_bucket_name | Armadilloのデータアップロード先となるS3のバケット名です。「S3バケットの作成」で作成したバケットの名前を指定してください。 | なし |
save_path | Armadilloがカメラから取得した画像データを保存するディレクトリを絶対パスで指定します。USBメモリに保存する際は /dev/sda1 を、SDカードに保存する際は /dev/mmcblk1p1 を指定してください。何も指定しない場合は /opt/aiota6_monitoring_camera/pictures に保存されます。 | なし |
auto_remove | Armadilloがカメラから取得した画像データをAWSへのアップロード後に削除するかどうかを指定するオプションです。 true なら削除され、それ以外の文字列の場合は削除されません。また、save_pathに指定されたパスが不正であったり、何も指定しない場合にはこのオプションは自動的に true になります。 | true |
ec2_public_dns | 「インスタンスへの接続情報の取得」でメモした「4. ご使用中のインスタンスのパブリックDNSを使用してインスタンスに接続」の下にある文字列をここに記入してください。 | なし |
ec2_user_name | 「インスタンスの作成」で作成したEC2インスタンス内のユーザー名です。本ドキュメントどおりに設定を進めた場合は初期値である ubuntu のままで問題ありません。 | ubuntu |
以下は編集例です
SDカードの2つのボリュームをアンマウントしてから、PCからSDカードを抜いてください。
以上で起動前の設定ファイルの書き込みは完了です。
作成したインストールディスクをmicroSD ユニットに装着し、サブユニット SW1(ユーザースイッチ)のスライドスイッチを microSD 側に設定して電源を投入してください。
Armadilloへのソフトウェアのインストールが開始されます。
インストールには数分間かかります。
インストールの進捗は、ArmadilloのユーザーLEDの状態で確認することが出来ます。
インストールの進捗とLEDの状態の関係は以下の表の通りです。
表3.3 インストールの進捗とLEDの対応
進捗 | ユーザーLED 赤 | ユーザーLED 緑 |
---|
実行中 | 消灯 | 点滅 |
正常終了 | 点灯 | 点灯 |
異常終了 | 消灯 | 点滅 |
LEDが点灯に変わり、インストールが完了したらACアダプタを抜いてください。