AWS IoT Greengrass Coreがaptコマンドからインストール可能になりました

AWS IoT Greengrass Coreがaptコマンドからインストール可能になりました

Clock Icon2020.02.27

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

大阪オフィスの小倉です。
最近AWS IoT Greengrassを始めました。

そのGreengrassですが、本日アップデートがあり、Greengrass Coreをaptコマンドからインストール・アップグレード可能になったとのことなので試してみました。
AWS IoT Greengrass now supports Advanced Package Tool (APT) package management

説明を見ると、

On supported Debian-based Linux distributions....

とのことなので、デバイスに見立てるEC2インスタンスはUbuntuを使用し、 GreengrassチュートリアルのHello World Lambda関数の実行までやってみます。

1. AWS IoT Greengrassの設定

マネジメントコンソールから、ドキュメントの説明に従い、 Greengrassグループの作成と、セキュリティリソースのダウンロードを行います。 このページの最後にある、インストールパッケージのダウンロードとインストールは今回aptコマンドで行うので実行しません。

2. デバイスへのGreengrass Coreの設定

EC2インスタンスの作成

デバイスに見立てるEC2インスタンスは以下で作成しました。

インスタンスID:ami-07f4cb4629342979c(Ubuntu Server 18.04 LTS x86)
インスタンスタイプ:t2.micro

セキュリティグループの設定で、22番と8883番のポートを開けておきます。

Greengrass Coreのインストール

こちらのドキュメントの説明に従い作業します。
今回参照するのは、Install the AWS IoT Greengrass Core Software from an APT Repositoryの項になります。

ユーザ、グループの作成
sudo adduser --system ggc_user
sudo addgroup --system ggc_group
証明書、設定ファイルのセットアップ

事前にダウンロードしたファイルをEC2に転送後、以下の要領で/greengrassディレクトリに展開します。

sudo mkdir -p /greengrass
sudo tar -xzvf *your-hash*-setup.tar.gz -C /greengrass

また、ルートCA証明書もダウンロードしておきます。

cd /greengrass/certs/
sudo wget -O root.ca.pem https://www.amazontrust.com/repository/AmazonRootCA1.pem
aptコマンドからのインストール

ようやく本番です。
最初にkeyringパッケージをインストールします。

wget -O aws-iot-greengrass-keyring.deb https://d1onfpft10uf5o.cloudfront.net/greengrass-apt/downloads/aws-iot-greengrass-keyring.deb
sudo dpkg -i aws-iot-greengrass-keyring.deb
echo "deb https://dnw9lb6lzp2d8.cloudfront.net stable main" | sudo tee /etc/apt/sources.list.d/greengrass.list

パッケージリストのアップデート

sudo apt update

aptコマンドからGreengrass Coreパッケージをインストールします

sudo apt install aws-iot-greengrass-core

これでGreengrass Coreがインストールできたはずです。以下のコマンドで起動&ステータス表示してみます。

systemctl start greengrass.service
systemctl status greengrass.service

● greengrass.service - Greengrass Daemon
   Loaded: loaded (/lib/systemd/system/greengrass.service; disabled; vendor preset: enabled)
   Active: active (running) since Thu 2020-02-27 00:15:38 UTC; 9s ago
  Process: 14035 ExecStart=/greengrass/ggc/core/greengrassd start (code=exited, status=0/SUCCESS)
 Main PID: 14049 (5)
    Tasks: 7 (limit: 1152)
   CGroup: /system.slice/greengrass.service
           └─14049 /greengrass/ggc/packages/1.10.0/bin/daemon -core-dir /greengrass/ggc/packages/1.10.0 -greengrassdPi

Feb 27 00:15:36 ip-172-31-38-74 systemd[1]: Starting Greengrass Daemon...
Feb 27 00:15:37 ip-172-31-38-74 greengrassd[14035]: Waiting
Feb 27 00:15:37 ip-172-31-38-74 greengrassd[14035]: Stopped greengrass daemon, exiting with success
Feb 27 00:15:37 ip-172-31-38-74 greengrassd[14035]: Setting up greengrass daemon
Feb 27 00:15:37 ip-172-31-38-74 greengrassd[14035]: Validating hardlink/softlink protection
Feb 27 00:15:37 ip-172-31-38-74 greengrassd[14035]: Waiting for up to 1m10s for Daemon to start
Feb 27 00:15:38 ip-172-31-38-74 greengrassd[14035]: Greengrass successfully started with PID: 14049
Feb 27 00:15:38 ip-172-31-38-74 systemd[1]: Started Greengrass Daemon.

ちゃんと動いてそうですね!

動作確認もしてみましょう。
ドキュメントにあるチュートリアル用Lambda関数をデプロイしてみます。
※デプロイ実行前に、EC2にJavaランタイムとPythonをインストールしておいてください。

sudo apt install openjdk-8-jdk
sudo apt install python3.7-minimal

デプロイ後にhello/worldトピックをサブスクライブすると、デバイスから送られたメッセージが表示されますね。

まとめ

公式ドキュメントのチュートリアルを元に、aptコマンドからのインストールを試してみました。
地味なアップデートではありますが、Greengrassの導入、アップデートにおける選択肢が増えるのはありがたいですね。
この記事がどなたかのお役に立てば幸いです。

以上、大阪オフィスの小倉でした。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.