デバイスがなくても大丈夫!EC2でAWS IoT Greengrassを動かす #reinvent

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

どうも!大阪オフィスの西村祐二です。

re:Invent期間中にAWS IoT Greengrassに関する多くのアップデートがありました。

しかし、現地にラズパイなどのデバイスを持ってきておらず検証などは日本に戻ってからかなと思っていたのですが、EC2でも動かすことができたので手順をまとめておきます。

どのAMIをつかう?

ドキュメントに対応しているAMIが記載されておりました。

「amzn-ami-hvm-2016.09.1.20170119-x86_64-ebs」を使います。

https://docs.aws.amazon.com/greengrass/latest/developerguide/what-is-gg.html

EC2インスタンスを起動

「amzn-ami-hvm-2016.09.1.20170119-x86_64-ebs」で検索すると対象のAMIがヒットしますので、これでインスタンスを作成します。

セキュリティグループを設定

SSHだけでなく、MQTT用の設定を追加してきます。

EC2インスタンス内での作業

起動ができたらSSHで接続して、AWS IoT Greengrass Coreを動かすための設定をしていきます。

まず、ユーザーとグループを追加します。

sudo adduser --system ggc_user
sudo groupadd --system ggc_group

起動時にオペレーティングシステムでハードリンク/ソフトリンク保護を有効にします。

cd /etc/sysctl.d
ls
sudo nano 00-defaults.conf

ファイルを開いたら、下部に下記を追記します。

fs.protected_hardlinks = 1
fs.protected_symlinks = 1

再起動します。

sudo reboot

設定が反映されているか確認します。

sudo sysctl -a | grep fs.protected

AWS IoT Greengrassを動かすために、Linuxコントロールグループ(cgroup)をマウントする必要があります。そのために、次のスクリプトを展開して実行します。

curl https://raw.githubusercontent.com/tianon/cgroupfs-mount/951c38ee8d802330454bdede20d85ec1c0f8d312/cgroupfs-mount > cgroupfs-mount.sh
chmod +x cgroupfs-mount.sh 
sudo bash ./cgroupfs-mount.sh

AWS IoT Greengrassが実行可能か依存関係のチェックスクリプトを実行します。

sudo yum install git -y
git clone https://github.com/aws-samples/aws-greengrass-samples.git
cd aws-greengrass-samples
cd greengrass-dependency-checker-GGCv1.7.0
sudo ./check_ggc_dependencies

これで問題なければ一旦設定は完了です。次は実際にAWS IoT Greengrass Coreのソフトウェアをインストールして起動してみます。

AWS IoT Greengrass CoreをEC2にインストールして起動する

関連ファイルをDLする

証明書類や、AWS IoT Greengrass Coreのソフトウェアをダウンロードします。

まず、AWS IoTのマネージメントコンソールに移動します。「Greengrass」のグループを選択します。

グループの設定を行います。今回は「MyFirstGroup」とします。

他デフォルトのまま、次へをクリックしていきます。

ダウンロードボタンが出てきたら必ずダウンロードしておきましょう。

今回のEC2のアーキテクチャ的にx86_64なので、Software configurationsは「x86_64」のものをダウンロードします。

ダウンロードしたファイルをEC2へ配置

ここからEC2での作業です。

先程DLしたファイル(greengrass-linux-x86-64-1.7.0.tar.gz、xxxxxxx-setup.tar.gz)をscpやFTPなどを使ってEC2に配置しておきます。

配置したら解凍します。下記コマンドで「/greengrass」にファイルが配置されます

sudo tar -xzvf greengrass-linux-x86-64-1.7.0.tar.gz -C /
sudo tar -xzvf <GUID>-setup.tar.gz -C /greengrass

rootCA用の証明書を取得します。

cd /greengrass/certs/
sudo wget -O root.ca.pem https://www.amazontrust.com/repository/AmazonRootCA1.pem

EC2でAWS IoT Greengrassを動かす

下記コマンドでgreengrass coreのプロセスを起動します。

cd /greengrass/ggc/core/
sudo ./greengrassd start

ちゃんと起動しているか確認します。

ps aux | grep PID-number

問題なくプロセスが確認できれば、EC2でAWS IoT Greengrassの起動完了です!

さいごに

いかがだったでしょうか。

EC2でAWS IoT Greengrassを動かす方法を紹介しました。

実機でないと確認できないこともあるかと思いますが、ちょっと機能を確認したいときに便利ではないでしょうか。

誰かの参考になれば幸いです。