LoginSignup
8
10

More than 1 year has passed since last update.

ラズパイでAWS IoTをやる際の初期設定を最速でやる(Python3, pip, Greengrass v1, AWS CLI, boto3, remote.it + 便利なエイリアス)

Last updated at Posted at 2021-05-31

はじめに

ラズパイの初期設定をAWS IoTにフォーカスしてまとめてみました。どういう順番でやっても、どれか選択的にやっても大丈夫です。

※ちなみにラズパイは3のモデルBを使っています。

・初期設定:カメラ、SSH、VNCの設定

・remote.itのインストール

・Greengrassのインストール&Greengrass Groupの登録
(※GreenGrassのVersion1です)

・AWS CLIのインストール

・pipとboto3のインストール

pythonコマンドでPython3.xを使えるようにする

なお以下の本当の初期のステップは省いてあります。

ディスクイメージをEtcherでフラッシュ

ラズパイにSDカード挿入

言語やネットワーク等の初期設定してアップデート(約1時間かかる)

初期設定:カメラ、SSH、VNCの設定

ラズパイターミナルにて、

sudo raspi-config

この画面になる。3番にいく。
image.png
カメラとSSHとVNCを許可する。終わったらEscで戻る。
image.png

リモートのMacからSSHで接続

ラズパイ上で、以下のコマンドを打つとIPアドレスがわかる。

hostname -I

今度はMacのターミナル上で出てきたIPアドレスを入力して繋ぐ(piはユーザーネーム)。

ssh pi@xxx.xxx.xxx.xxx

もしこんな表示が出たら、前に同じIPアドレスで違うホストが登録されていたということ。前の記録を消す必要がある。

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
(中略)
Add correct host key in /Users/hidehirominagawa/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /Users/hidehirominagawa/.ssh/known_hosts:23
ECDSA host key for 192.168.0.108 has changed and you have requested strict checking.

以下のようにホーム配下に.ssh/known_hostsがあるので該当する行を消す。

sudo nano /Users/hidehirominagawa/.ssh/known_hosts

remote.itの設定

remote.itはラズパイやJetsonへのSSH、VNC接続やデバイス管理を簡単にGUIでできる便利なアプリだ。一度登録しておくとラズパイを自宅に置いたままで、カフェや職場のPCからSSHやVNCで接続ができるようになる。弊社で取扱いがある関係で存在を知ったが、使ってみるとうんなかなか悪くない。使い始めるには以下のリンクを参考にしてremote.itに登録してからコマンドを叩く。
参考:https://qiita.com/u___sk/items/e0df9581d2e58891ec8a

# インストール
curl -LkO https://downloads.remote.it/cli/latest/remoteit_linux_armv7 -o /home/pi/

# ダウンロードしたremoteitを、実行パスの通ったディレクトリにコピー
sudo mv remoteit_linux_armv7 /usr/bin/remoteit

# ファイルに実行権限を与える
sudo chmod +x /usr/bin/remoteit

# Agentのインストール
sudo remoteit agent install

# 関連ツールのインストール
sudo remoteit tools install

# サインイン(Usernameはremoteitに登録したメールアドレス)
sudo remoteit signin

# デバイスとサービスの登録
sudo remoteit register
sudo remoteit add

※なお、Macの標準VNCクライアントのScreenShareはデフォルトだとラズパイの標準VNCサーバーRealVNCと互換性がないので大人しくRealVNC Viewerをインストールして使っている。
https://www.realvnc.com/en/connect/download/viewer/

awsコマンドのインストール(awscli)

RaspberryPi3 Model BはCPUがarmhfで、awscli-v2にはサポートされていないのでv1をインストールします。

AWSCLIv1公式ドキュメント:https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/install-cliv1.html
AWSCLIv2公式ドキュメント:https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/install-cliv2.html

# v1をインストール。
curl "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "awscli-bundle.zip"
unzip awscli-bundle.zip
sudo ./awscli-bundle/install -i /usr/local/aws -b /usr/local/bin/aws

# いらないファイルを消す。
rm -rf awscli-bundle*

aws configureコマンド

最後に一番大事なaws configureコマンド。これを一回やっとくとboto3コマンドやawsコマンドなどで認証の手間が省ける。

aws configure

AWS Access Key ID : ****************
AWS Secret Access Key : ****************
Default region name : us-east-1 
Default output format : None

試しにawsコマンドでS3バケットを消してみる

試しに中にファイルが入ったS3バケットを消してみる。以下のコマンドでbucket-nameという名のS3バケットが消せる。コンソールからだとバケットを空にしてからじゃないと消せないので便利だ。

aws s3 rb s3://bucket-name --force 

Greengrassのインストール

以下のコマンドを打って3分ほど待つとインタラクティブモードでGreengrass Groupとcoreの登録が始まる。Access ID, Secret Access Keyを入力する必要がある。後でもう一回入力する必要があるのでCSVファイルならその開いたCSVファイルを閉じないで開いたままにする。また、HelloWorldというサンプルのLambdaはダウンロードしますか?に対してYesと入力する。

curl https://d1onfpft10uf5o.cloudfront.net/greengrass-device-setup/downloads/gg-device-setup-latest.sh \
> gg-device-setup-latest.sh \
&& chmod +x ./gg-device-setup-latest.sh \
&& sudo -E ./gg-device-setup-latest.sh bootstrap-greengrass-interactive 

ちなみにこの質問はそのまま何も入力せずEnterでいい。一時的な認証情報を使っているときのみ。

Enter your AWS session token, which is required only when you are
using temporary security credentials. Press 'Enter' to read it
from your environment variables or if the session token is
not required.

また、以下はgreengrass関係のファイルをどこに置くかという質問だが、デフォルトの/以外を選択すると後でエラーが出る。なのでここは何も入力せずEnterを押す。

Enter the installation path for the Greengrass core software,
or press 'Enter' to use '/'.

ラズパイの場合は再起動してもうひと頑張りする必要がある(Jetsonは必要なし)。もうちょっと頑張ろう。

sudo reboot

2回目。これでようやくGreengrass Groupとcoreが登録できる。

sudo -E ./gg-device-setup-latest.sh bootstrap-greengrass-interactive

AWS access key IDとAWS secret access keyを入力する。

前のセッションで入力した設定を引き継ぎますか?ということなのでyesと入力する。

Do you want to reuse the configuration from your previous session?
Enter 'yes' to reuse the configuration or 'no' to restart
the installation.

yes

もう一度認証情報を入れる。

Enter your AWS access key ID, or press 'Enter' to read it from your environment variables.

不要になったファイルを消す。

sudo rm gg-device-setup-latest.sh GreengrassDeviceSetup-* \
GreengrassDeviceSetup*

以下のコマンドでGreengrassをスタートさせる。

sudo /greengrass/ggc/core/greengrassd start

AWSコンソールからAWS IoT Coreへ行き、MQTTテストクライアントを開く。#にサブスクライブして5秒間隔で以下のようなメッセージが届いていたらオッケー。

Hello world! Sent from the Lambda function - \
Greengrass_HelloWorld_gnF9N running on platform:\
Linux-5.10.17-v7+-armv7l-with-debian-10.9

pythonコマンドでpythonのv3を使えるようにする(シンボリックリンクの作成)

参考:https://qiita.com/LI_MO/items/6328106cdd83fcb830d3

# pythonのバージョンを表示
python -V
# Python 2.7という表示が出たら以下のコマンドでpython3にリンクを張り替える。


# 元のシンボリックリンクを削除
sudo rm -rf /usr/bin/python

#python関連ファイルを検索
whereis python
# 以下のような表示が出る。\
python: /usr/bin/python /usr/bin/python2.7 /usr/bin/python3.6.5 /usr/bin/python3.8.5 

# シンボリックリンクを作成
sudo ln -s /usr/bin/python3.8 /usr/bin/python

# pythonのバージョンを表示
python -V
Python 3.8.5

pipとboto3のインストール

pipのインストール

以下のコマンドでインストールする。

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py

以下のようなメッセージが出る。

WARNING: The scripts pip, pip3 and pip3.7 are installed in 
'/home/pi/.local/bin' which is not on PATH.
Consider adding this directory to PATH.

忠告に従う。これでpipコマンドが使えるようになる。

# パスを通す。
export PATH=$PATH:/home/<Username>/.local/bin

# こまめにお掃除
sudo rm get-pip.py

boto3のインストール

pip install boto3

あると便利なエイリアスの設定

Greengrassをスタートさせるにはsudo /greengrass/ggc/core/greengrassd startのように長々とコマンドを打たないといけないのでエイリアスに登録しておく。

nano ~/.bashrc

でターミナル起動時に最初に実行されるファイルを開いて、

alias ggstart='sudo /greengrass/ggc/core/greengrassd start'
alias ggrestart='sudo /greengrass/ggc/core/greengrassd restart'
alias ggstop='sudo /greengrass/ggc/core/greengrassd stop'

を適当なところに追加しよう。設定を反映させるにはターミナルを再起動してもいいが、

source ~/.bashrc

で反映される。

筆者お気に入りのエイリアス

筆者は以下のようなエイリアスもお決まりで加えている。結構便利だと思う。

alias s='ls -CF'
alias c='cd'
alias cl='clear'
alias p='python'

以上です。

8
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
10