LoginSignup
5
1

More than 5 years have passed since last update.

AWS Greengrass (1.3.0) を Ubuntu server (16.04 x86_64) で動かし、とりま開発する環境まで考える

Last updated at Posted at 2018-03-08

ゴールは

Ubuntu server 16.04 (x86_64) に AWS Greengrass Core 1.3.0 をセットアップする方法です
最短ゴールだと python 2.7 のみが稼働します。
インストールしたあと、ローカル Lambda の開発環境で必要なログについても記載しています

セットアップ手順

早ければ15分程度です

Ubuntu server のインストール

インストールはサクサクすすめていただいてOKです。インストールパッケージのオプションは下記二つを選びました

  • standard system utilities
  • openssh server

Ubuntu インストール後

$ sudo apt update ; sudo apt -y upgrade
$ sudo apt install -y sqlite3 python2.7
$ sudo adduser --system ggc_user
$ sudo groupadd --system ggc_group
$ cat << EOT | sudo tee -a /etc/sysctl.d/00-defaults.conf
fs.protected_hardlinks = 1
fs.protected_symlinks = 1
EOT
$ sudo shutdown -r now

動作環境のチェック方法

※この手順はスキップしてもOKです

他のデバイスでの手順通りです

$ git clone https://github.com/aws-samples/aws-greengrass-samples.git
$ cd aws-greengrass-samples/greengrass-dependency-checker-GGCv1.3.0
$ sudo ./check_ggc_dependencies

AWS から Greengrass Core のダウンロード、展開、実行

AWS IoT での AWS Greengrass の設定から先に進んでください

ダウンロード

途中で Greengrass Core のアーカイブをダウンロードする場面にあたりますが、その際は x86_64_Ubuntu を選んでください。すると greengrass-ubuntu-x86-64-1.3.0.tar.gz がダウンロードできます

tar.gz の展開

greengrass-ubuntu-x86-64-1.3.0.tar.gz${GUID}-setup.tar.gz を Ubuntu server に転送してから、下記を実行します

$ sudo tar -xzvf greengrass-ubuntu-x86-64-1.3.0.tar.gz -C /
$ sudo tar -xzvf ${GUID}-setup.tar.gz -C /greengrass
$ sudo wget -O /greengrass/certs/root.ca.pem http://www.symantec.com/content/en/us/enterprise/verisign/roots/VeriSign-Class%203-Public-Primary-Certification-Authority-G5.pem

config.json${GUID}-setup.tar.gz に含まれているので、自分で作る必要はありません

起動

$ cd /greengrass/ggc/packages/1.3.0
$ sudo ./greengrassd start

Greengrass の運用について

Greengrass グループのログ設定と出力先

  • Greengrass グループ > 設定
    • ローカルログ設定
      • ユーザの Lambda ログ: トレースログ
      • Greengrass システムログ: 情報ログ

ログの出力先は Ubuntu server 上の

  • /greengrass/ggc/var/log/user/{AWS-region}/{AWS-account-id}/{Lambda-name}.log
  • /greengrass/gcc/var/log/system/*.log

になります (root権限必要)
この設定はデプロイ時に適用されます

Lambda 関数 (Python 2.7) からは logging.info("log!!") のようにすれば、上記ログファイルに書き込まれます。
※log levelが warning 以上なら、ローカルログ設定がされていなくてもログ出力されます

Greengrass 上で動いている「存続期間の長い Lambda 関数」をともかく止めたい

AWS Greengrass では、 Arduino の loop() のように、 Greengrass Core の起動後から動きつづける Lambda 関数を作ることができるようになりました

これを止める方法は、下記のどちらかです (他にあるのかな?)

  • Greengrass が動いている Ubuntu server を停止しちゃう
    • これは物理アクセスができる、OSレベルでリモートアクセスできる場合
  • AWS Greengrass の管理コンソールから デプロイのリセット をしましょう (強制フラグもつけると確実性が高まります)

Node.js 6.10 で動かす (WIP)

$ curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
$ apt install -y nodejs
$ sudo update-alternatives --install /usr/bin/nodejs6.10 node /usr/bin/node 10

あとがき

ごきげんよう。

EoT

5
1
1

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
5
1