AWS IoT Greengrass
開発者ガイド

Docker コンテナでの AWS IoT Greengrass の実行

この機能は AWS IoT Greengrass Core v1.7 以降で使用できます。

AWS IoT Greengrass は Docker コンテナで実行するように設定できます。

注記

コネクタローカルデバイスおよびボリュームリソースは、Docker コンテナでは使用できません。Greengrass グループの Lambda ランタイム環境が、Docker コンテナで AWS IoT Greengrass を実行するのに必要な [No container (コンテナなし)] に設定されている場合、この機能はサポートされません。ただし、ローカルデバイスとボリュームリソースに直接アクセスできます。

AWS IoT Greengrass Core ソフトウェアと依存関係がインストールされている Amazon CloudFront から、Dockerfile をダウンロードできます。Docker イメージを変更してさまざまなプラットフォームアーキテクチャで実行するか、Docker イメージのサイズを小さくするには、Docker パッケージダウンロードの README ファイルを参照してください。

すぐに開始して AWS IoT Greengrass を試しやすいように、AWS では AWS IoT Greengrass Core ソフトウェアと依存関係がインストールされている構築済みの Docker イメージも提供しています。Docker Hub あるいは Amazon Elastic Container Registry (Amazon ECR) から作成済みのイメージをダウンロードして、Windows、macOS、および Linux (x86_64) プラットフォームで実行できます。このトピックでは、Amazon ECR からイメージをダウンロードする方法について説明します。これには、以下のステップが含まれます。

前提条件

このチュートリアルを完了するには、次のソフトウェアおよびバージョンをホストコンピュータにインストールする必要があります。

  • Docker、バージョン 18.09 以降。以前のバージョンでも機能する可能性がありますが、バージョン 18.09 以降が推奨されます。

  • Python、バージョン 3.6 以降。

  • pip バージョン 18.1 以降。

  • AWS CLI バージョン 1.16 以降。

    • CLI をインストールして設定するには、AWS Command Line Interface ユーザーガイド の「AWS Command Line Interface のインストール」と「AWS CLI の設定」を参照してください。

    • AWS CLI の最新バージョンにアップグレードするには、以下のコマンドを実行します。

      pip install awscli --upgrade --user

    注記

    Windows で AWS CLI の MSI のインストールを使用する場合は、以下に注意してください。

    • インストールで botocore のインストールに失敗する場合は、Python および pip インストールを使用してみてください。

    • 新しい CLI バージョンにアップグレードするには、MSI のインストールプロセスを繰り返す必要があります。

ステップ 1: Amazon ECR から AWS IoT Greengrass コンテナイメージを取得する

AWS IoT Greengrass には AWS IoT Greengrass Core ソフトウェアがインストールされている Docker イメージがあります。Amazon ECR からコンテナイメージをプルする方法を示すステップについては、以下でオペレーティングシステムを選択します。

コンテナイメージをプルする (Linux)

コンピュータのターミナルで以下のコマンドを実行します。

  1. Amazon ECR に AWS IoT Greengrass レジストリの認証トークンが含まれる、必要なログインコマンドを取得します。

    aws ecr get-login --registry-ids 216483018798 --no-include-email --region us-west-2

    出力は、次のステップで使用する docker login コマンドです。

  2. get-login 出力から docker login コマンドを実行することで、レジストリの AWS IoT Greengrass コンテナイメージに Docker クライアントを認証します。コマンドは、以下の例のようになります。

    docker login -u AWS -p abCzYZ123... https://216483018798.dkr.ecr.us-west-2.amazonaws.com
  3. AWS IoT Greengrass コンテナイメージを取得します。

    docker pull 216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest

    注記

    latest タグは、最新の AWS IoT Greengrass コンテナに対応しています。リポジトリから他のバージョンをプルすることもできます。AWS IoT Greengrass リポジトリで使用できるすべてのイメージを一覧表示するには、aws ecr list-images コマンドを使用します。例:

    aws ecr list-images --region us-west-2 --registry-id 216483018798 --repository-name aws-iot-greengrass
  4. シンボリックリンクとハードリンクの保護を有効にします。コンテナでの AWS IoT Greengrass の実行を試用している場合は、現在のブートに対してのみ設定を有効にできます。

    注記

    これらのコマンドを実行するには、sudo を使用することが必要な場合があります。

    • 現在のブートに対してのみ設定を有効にするには、以下のコマンドを使用します。

      echo 1 > /proc/sys/fs/protected_hardlinks echo 1 > /proc/sys/fs/protected_symlinks
    • 再起動しても維持される設定を有効にするには、以下のコマンドを使用します。

      echo '# AWS Greengrass' >> /etc/sysctl.conf echo 'fs.protected_hardlinks = 1' >> /etc/sysctl.conf echo 'fs.protected_symlinks = 1' >> /etc/sysctl.conf sysctl -p
  5. IPv4 ネットワーク転送を有効にします。これは、AWS IoT Greengrass クラウドデプロイと MQTT 通信が Linux で機能するために必要です。/etc/sysctl.conf ファイルで、net.ipv4.ip_forward を 1 に設定して、sysctls を再ロードします。

    sudo nano /etc/sysctl.conf # set this net.ipv4.ip_forward = 1 sudo sysctl -p

    注記

    nano の代わりに任意のエディタを使用できます。

コンテナイメージをプルする (macOS)

コンピュータのターミナルで以下のコマンドを実行します。

  1. Amazon ECR に AWS IoT Greengrass レジストリの認証トークンが含まれる、必要なログインコマンドを取得します。

    aws ecr get-login --registry-ids 216483018798 --no-include-email --region us-west-2

    出力は、次のステップで使用する docker login コマンドです。

  2. get-login 出力から docker login コマンドを実行することで、レジストリの AWS IoT Greengrass コンテナイメージに Docker クライアントを認証します。コマンドは、以下の例のようになります。

    docker login -u AWS -p abCzYZ123... https://216483018798.dkr.ecr.us-west-2.amazonaws.com
  3. AWS IoT Greengrass コンテナイメージを取得します。

    docker pull 216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest

    注記

    latest タグは、最新の AWS IoT Greengrass コンテナに対応しています。リポジトリから他のバージョンをプルすることもできます。AWS IoT Greengrass リポジトリで使用できるすべてのイメージを一覧表示するには、aws ecr list-images コマンドを使用します。例:

    aws ecr list-images --region us-west-2 --registry-id 216483018798 --repository-name aws-iot-greengrass
コンテナイメージをプルする (Windows)

コマンドプロンプトで次のコマンドを実行します。Windows で Docker コマンドを使用する前に、Docker デスクトップが実行されている必要があります。

  1. Amazon ECR に AWS IoT Greengrass レジストリの認証トークンが含まれる、必要なログインコマンドを取得します。

    aws ecr get-login --registry-ids 216483018798 --no-include-email --region us-west-2

    出力は、次のステップで使用する docker login コマンドです。

  2. get-login 出力から docker login コマンドを実行することで、レジストリの AWS IoT Greengrass コンテナイメージに Docker クライアントを認証します。コマンドは、以下の例のようになります。

    docker login -u AWS -p abCzYZ123... https://216483018798.dkr.ecr.us-west-2.amazonaws.com
  3. AWS IoT Greengrass コンテナイメージを取得します。

    docker pull 216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest

    注記

    latest タグは、最新の AWS IoT Greengrass コンテナに対応しています。リポジトリから他のバージョンをプルすることもできます。AWS IoT Greengrass リポジトリで使用できるすべてのイメージを一覧表示するには、aws ecr list-images コマンドを使用します。例:

    aws ecr list-images --region us-west-2 --registry-id 216483018798 --repository-name aws-iot-greengrass

ステップ 2: Greengrass のグループとコアを作成して設定する

Docker イメージには AWS IoT Greengrass Core ソフトウェアがインストールされていますが、Greengrass のグループとコアを作成する必要があります。これには、証明書とコア設定ファイルのダウンロードが含まれます。

  • AWS IoT の AWS IoT Greengrass の設定 の手順を行います。AWS IoT Greengrass Core ソフトウェアをダウンロードするステップはスキップしてください。このソフトウェアとその実行時の依存関係は、Docker イメージにセットアップ済みです。

ステップ 3: AWS IoT Greengrass をローカルで実行する

グループの設定が完了したら、コアを設定して開始する準備ができました。これを実行する方法を示す手順については、以下でオペレーティングシステムを選択します。

Greengrass をローカルで実行する (Linux)

コンピュータのターミナルで以下のコマンドを実行します。

  1. (Greengrass グループを作成した際にダウンロードした) 証明書と設定ファイルを既知の場所 (/tmp など) に解凍します。例:

    tar xvzf hash-setup.tar.gz -C /tmp/
  2. AWS IoT 開発者ガイドの「サーバー認証」を参照し、適切なルート CA 証明書を選択します。Amazon Trust Services (ATS) エンドポイントおよび ATS ルート CA 証明書を使用することをお勧めします。

    次のコマンドを実行して、証明書と設定ファイルを解凍したディレクトリにルート CA 証明書をダウンロードします。証明書により、デバイスは TLS 経由で AWS IoT に接続できます。

    /tmp をディレクトリへのパスに置き換えます。

    重要

    ルート CA 証明書タイプは、エンドポイントと一致する必要があります。ATS ルート CA 証明書を ATS エンドポイントで使用するか (推奨)、Verisign ルート CA 証明書をレガシーエンドポイントで使用します。レガシーエンドポイントは、一部の AWS リージョンでのみサポートされています。詳細については、「エンドポイントは証明書タイプと一致する必要がある」を参照してください。

    • ATS エンドポイントを使用する場合は (推奨)、適切な ATS ルート CA 証明書をダウンロードします。次の例では AmazonRootCA1.pem をダウンロードします。

      cd /tmp/certs/ sudo wget -O root.ca.pem https://www.amazontrust.com/repository/AmazonRootCA1.pem
    • レガシーエンドポイントの場合は、Verisign ルート CA 証明書をダウンロードします。このチュートリアルではレガシーエンドポイントを使用できますが、ATS エンドポイントを作成し、ATS ルート CA 証明書をダウンロードすることをお勧めします。

      cd /tmp/certs/ sudo wget -O root.ca.pem https://www.symantec.com/content/en/us/enterprise/verisign/roots/VeriSign-Class%203-Public-Primary-Certification-Authority-G5.pem

    注記

    wget -O パラメータは大文字の O です。

  3. AWS IoT Greengrass を開始して、証明書と設定ファイルを Docker コンテナにバインドマウントします。

    /tmp は、証明書と設定ファイルを解凍したパスに置き換えてください。

    docker run --rm --init -it --name aws-iot-greengrass \ --entrypoint /greengrass-entrypoint.sh \ -v /tmp/certs:/greengrass/certs \ -v /tmp/config:/greengrass/config \ -p 8883:8883 \ 216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest

    出力は、次の例のようになります。

    Setting up greengrass daemon Validating hardlink/softlink protection Waiting for up to 30s for Daemon to start Greengrass successfully started with PID: 10
Greengrass をローカルで実行する (macOS)

コンピュータのターミナルで以下のコマンドを実行します。

  1. (Greengrass グループを作成した際にダウンロードした) 証明書と設定ファイルを既知の場所 (/tmp など) に解凍します。例:

    tar xvzf hash-setup.tar.gz -C /tmp/
  2. AWS IoT 開発者ガイドの「サーバー認証」を参照し、適切なルート CA 証明書を選択します。Amazon Trust Services (ATS) エンドポイントおよび ATS ルート CA 証明書を使用することをお勧めします。

    次のコマンドを実行して、証明書と設定ファイルを解凍したディレクトリにルート CA 証明書をダウンロードします。証明書により、デバイスは TLS 経由で AWS IoT に接続できます。

    /tmp をディレクトリへのパスに置き換えます。

    重要

    ルート CA 証明書タイプは、エンドポイントと一致する必要があります。ATS ルート CA 証明書を ATS エンドポイントで使用するか (推奨)、Verisign ルート CA 証明書をレガシーエンドポイントで使用します。レガシーエンドポイントは、一部の AWS リージョンでのみサポートされています。詳細については、「エンドポイントは証明書タイプと一致する必要がある」を参照してください。

    • ATS エンドポイントを使用する場合は (推奨)、適切な ATS ルート CA 証明書をダウンロードします。次の例では AmazonRootCA1.pem をダウンロードします。

      cd /tmp/certs/ sudo wget -O root.ca.pem https://www.amazontrust.com/repository/AmazonRootCA1.pem
    • レガシーエンドポイントの場合は、Verisign ルート CA 証明書をダウンロードします。このチュートリアルではレガシーエンドポイントを使用できますが、ATS エンドポイントを作成し、ATS ルート CA 証明書をダウンロードすることをお勧めします。

      cd /tmp/certs/ sudo wget -O root.ca.pem https://www.symantec.com/content/en/us/enterprise/verisign/roots/VeriSign-Class%203-Public-Primary-Certification-Authority-G5.pem

    注記

    wget -O パラメータは大文字の O です。

  3. AWS IoT Greengrass を開始して、証明書と設定ファイルを Docker コンテナにバインドマウントします。

    /tmp は、証明書と設定ファイルを解凍したパスに置き換えてください。

    docker run --rm --init -it --name aws-iot-greengrass \ --entrypoint /greengrass-entrypoint.sh \ -v /tmp/certs:/greengrass/certs \ -v /tmp/config:/greengrass/config \ -p 8883:8883 \ 216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest

    出力は、次の例のようになります。

    Setting up greengrass daemon Validating hardlink/softlink protection Waiting for up to 30s for Daemon to start Greengrass successfully started with PID: 10
Greengrass をローカルで実行する (Windows)
  1. WinZip や 7-Zip などのユーティリティを使用して、Greengrass グループを作成した際にダウンロードした証明書と設定ファイルを解凍します。詳細については、WinZip のドキュメントを参照してください。

    コンピュータでダウンロードした hash-setup.tar.gz ファイルを見つけて、ファイルを C:\Users\%USERNAME%\Downloads\ に解凍します。

  2. AWS IoT 開発者ガイドの「サーバー認証」を参照し、適切なルート CA 証明書を選択します。Amazon Trust Services (ATS) エンドポイントおよび ATS ルート CA 証明書を使用することをお勧めします。

    次のコマンドを実行して、証明書と設定ファイルを解凍したディレクトリにルート CA 証明書をダウンロードします。証明書により、デバイスは TLS 経由で AWS IoT に接続できます。

    重要

    ルート CA 証明書タイプは、エンドポイントと一致する必要があります。ATS ルート CA 証明書を ATS エンドポイントで使用するか (推奨)、Verisign ルート CA 証明書をレガシーエンドポイントで使用します。レガシーエンドポイントは、一部の AWS リージョンでのみサポートされています。詳細については、「エンドポイントは証明書タイプと一致する必要がある」を参照してください。

    • ATS エンドポイントを使用する場合は (推奨)、適切な ATS ルート CA 証明書をダウンロードします。次の例では AmazonRootCA1.pem をダウンロードします。

      • curl をインストールしている場合は、コマンドプロンプトで次のコマンドを実行します。

        cd C:\Users\%USERNAME%\Downloads\certs curl https://www.amazontrust.com/repository/AmazonRootCA1.pem -o root.ca.pem
      • それ以外の場合は、ウェブブラウザで Amazon ルート CA 1 証明書を開きます。解凍した証明書が含まれる C:\Users\%USERNAME%\Downloads\certs ディレクトリに、ドキュメントを root.ca.pem として保存します。

        注記

        ブラウザに応じて、ブラウザから直接ファイルを保存するか、表示されたキーをクリップボードにコピーしてメモ帳で保存します。

    • レガシーエンドポイントの場合は、Verisign ルート CA 証明書をダウンロードします。このチュートリアルではレガシーエンドポイントを使用できますが、ATS エンドポイントを作成し、ATS ルート CA 証明書をダウンロードすることをお勧めします。

      • curl をインストールしている場合は、コマンドプロンプトで次のコマンドを実行します。

        cd C:\Users\%USERNAME%\Downloads\certs curl https://www.symantec.com/content/en/us/enterprise/verisign/roots/VeriSign-Class%203-Public-Primary-Certification-Authority-G5.pem -o root.ca.pem
      • それ以外の場合は、ウェブブラウザで VeriSign クラス 3 Public Primary G5 ルート CA 証明書を開きます。解凍した証明書が含まれる C:\Users\%USERNAME%\Downloads\certs ディレクトリに、ドキュメントを root.ca.pem として保存します。

        注記

        ブラウザに応じて、ブラウザから直接ファイルを保存するか、表示されたキーをクリップボードにコピーしてメモ帳で保存します。

  3. AWS IoT Greengrass を開始して、証明書と設定ファイルを Docker コンテナにバインドマウントします。コマンドプロンプトで次のコマンドを実行します。

    docker run --rm --init -it --name aws-iot-greengrass --entrypoint /greengrass-entrypoint.sh -v c:/Users/%USERNAME%/Downloads/certs:/greengrass/certs -v c:/Users/%USERNAME%/Downloads/config:/greengrass/config -p 8883:8883 216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest

    Docker で C:\ ドライブを Docker デーモンと共有するように要求されたら、Docker コンテナ内で C:\ ディレクトリをバインドマウントすることを許可します。詳細については、Docker ドキュメントの「共有ドライブ」を参照してください。

    出力は、次の例のようになります。

    Setting up greengrass daemon Validating hardlink/softlink protection Waiting for up to 30s for Daemon to start Greengrass successfully started with PID: 10

注記

コンテナがシェルを開かずにすぐに終了する場合は、イメージを起動したときに Greengrass ランタイムログをバインドマウントすることで問題をデバッグできます。詳細については、「Docker コンテナの外部で Greengrass ランタイムログを永続化する」を参照してください。

ステップ 4: Greengrass グループの「コンテナなし」コンテナ化を設定する

Docker コンテナで AWS IoT Greengrass で実行する場合、すべての Lambda 関数はコンテナ化を使用しないで実行する必要があります。このステップでは、グループのデフォルトのコンテナ化を [No container (コンテナなし)] に設定します。グループを初めてデプロイする前に行う必要があります。

  1. AWS IoT コンソールで、[Greengrass]、[グループ] の順に選択します。

  2. 設定を変更するグループを選択します。

  3. [設定] を選択します。

  4. [Lambda Runtime Environment (Lambda ランタイム環境)] で、[No container (コンテナなし)] を選択します。

  5. [Update default Lambda execution configuration (デフォルトの Lambda 実行設定の更新)] を選択します。確認ウィンドウでメッセージを確認し、[続行] を選択します。

詳細については、「グループ内の Lambda 関数のコンテナ化のデフォルト設定」を参照してください。

注記

デフォルトでは、Lambda 関数はグループコンテナ化設定を使用します。Docker コンテナで AWS IoT Greengrass が実行されているときに、すべての Lambda 関数の [No container (コンテナなし)] 設定をオーバーライドすると、デプロイは失敗します。

ステップ 5: Lambda 関数を AWS IoT Greengrass Docker コンテナにデプロイする

存続期間の長い Lambda 関数を Greengrass Docker コンテナにデプロイできます。

ステップ 6: (オプション) Docker コンテナで実行中の Greengrass を操作するデバイスをデプロイする

Docker コンテナで実行中の AWS IoT Greengrass を操作する Greengrass デバイスをデプロイすることもできます。

AWS IoT Greengrass Docker コンテナの停止

AWS IoT Greengrass Docker コンテナを停止するには、ターミナルまたはコマンドプロンプトで Ctrl+C を押します。このアクションにより、SIGTERM が Greengrass デーモンプロセスに送信され、Greengrass デーモンプロセスとデーモンプロセスで開始されたすべての Lambda プロセスが破棄されます。Docker コンテナは /dev/init プロセスで PID 1 として初期化されます。これにより、残存するゾンビ状態のプロセスが削除されます。詳細については、Docker run リファレンスを参照してください。

Docker コンテナでの AWS IoT Greengrass のトラブルシューティング

以下の情報は、Docker コンテナでの AWS IoT Greengrass の実行に関する問題のトラブルシューティングに役立ちます。

次のエラーが発生する。Unknown options: -no-include-email

解決策: aws ecr get-login コマンドを実行すると、このエラーが発生することがあります。最新の AWS CLI バージョンがインストールされていることを確認します (たとえば、pip install awscli --upgrade --user を実行します)。Windows を使用していて、MSI インストーラを使用して CLI をインストールした場合、インストールプロセスを繰り返す必要があります。詳細については、AWS Command Line Interface ユーザーガイド の「Microsoft Windows での AWS Command Line Interface のインストール」を参照してください。

次の警告が表示される。IPv4 is disabled.ネットワークは機能しません。

解決策: Linux コンピュータで AWS IoT Greengrass を実行すると、この警告または類似のメッセージが表示されることがあります。このステップで説明しているように、IPv4 ネットワーク転送を有効にします。IPv4 転送が有効ではない場合、AWS IoT Greengrass クラウドデプロイと MQTT 通信は機能しません。詳細については、Docker ドキュメントの「Configure namespaced kernel parameters (sysctls) at runtime」を参照してください。

次のエラーが発生する。A firewall is blocking file Sharing between windows and the containers.

解決策: Windows コンピュータで Docker を実行すると、このエラーまたは Firewall Detected メッセージが表示されることがあります。Docker サポートで問題「Error: A firewall is blocking file sharing between Windows and the containers」を参照してください。このエラーは、仮想プライベートネットワーク (VPN) にサインインしているときにも発生する場合があり、ネットワーク設定が原因で共有ドライブをマウントできないことがあります。このような場合は、VPN をオフにし、Docker コンテナを再実行します。

一般的な AWS IoT Greengrass のトラブルシューティングヘルプについては、「AWS IoT Greengrass のトラブルシューティング」を参照してください。

Docker コンテナでの AWS IoT Greengrass のデバッグ

Docker コンテナの問題をデバッグするには、Greengrass ランタイムログを維持するか、Docker コンテナにインタラクティブシェルをアタッチすることができます。

Docker コンテナの外部で Greengrass ランタイムログを永続化する

/greengrass/ggc/var/log ディレクトリをバインドマウントした後で、AWS IoT Greengrass Docker コンテナを実行できます。ログは、コンテナが終了した後または削除された後も保持されます。

Linux または macOS の場合

ホスト上で実行されている Greengrass Docker コンテナを停止してから、ターミナルで次のコマンドを実行します。これは Greengrass の log ディレクトリをバインドマウントして Docker イメージを起動します。

/tmp は、証明書と設定ファイルを解凍したパスに置き換えてください。

docker run --rm --init -it --name aws-iot-greengrass \ --entrypoint /greengrass-entrypoint.sh \ -v /tmp/certs:/greengrass/certs \ -v /tmp/config:/greengrass/config \ -v /tmp/log:/greengrass/ggc/var/log \ -p 8883:8883 \ 216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest

次に、ホストの /tmp/log でログを確認して、Greengrass が Docker コンテナ内で実行されている間に何が起こったのかを確認できます。

Windows の場合

ホスト上で実行されている Greengrass Docker コンテナを停止してから、コマンドプロンプトで次のコマンドを実行します。これは Greengrass の log ディレクトリをバインドマウントして Docker イメージを起動します。

cd C:\Users\%USERNAME%\Downloads mkdir log docker run --rm --init -it --name aws-iot-greengrass --entrypoint /greengrass-entrypoint.sh -v c:/Users/%USERNAME%/Downloads/certs:/greengrass/certs -v c:/Users/%USERNAME%/Downloads/config:/greengrass/config -v c:/Users/%USERNAME%/Downloads/log:/greengrass/ggc/var/log -p 8883:8883 216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest

次に、ホストの C:/Users/%USERNAME%/Downloads/log でログを確認して、Greengrass が Docker コンテナ内で実行されている間に何が起こったのかを確認できます。

インタラクティブシェルを Docker コンテナにアタッチするには

インタラクティブシェルをアタッチして、AWS IoT Greengrass Docker コンテナを実行できます。これは、Greengrass Docker コンテナの状態を調査するのに役立ちます。

Linux または macOS の場合

Greengrass Docker コンテナの実行中に、別の端末で次のコマンドを実行してください。

docker exec -it $(docker ps -a -q -f "name=aws-iot-greengrass") /bin/bash
Windows の場合

Greengrass Docker コンテナの実行中に、別のコマンドプロンプトで次のコマンドを実行してください。

docker ps -a -q -f "name=aws-iot-greengrass"

gg-container-id を、前のコマンドから得られた container_id の結果に置き換えます。

docker exec -it gg-container-id /bin/bash