本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
AWS IoT Greengrass 在具有自動資源佈建的 Docker 容器中執行
本教學課程說明如何使用自動佈建 AWS 的資源和本機開發工具,在 Docker 容器中安裝和執行 AWS IoT Greengrass 核心軟體。您可以使用此開發環境來探索 Docker 容器中 AWS IoT Greengrass 的功能。軟體需要 AWS 登入資料才能佈建這些資源並部署本機開發工具。
如果您無法提供 AWS 憑證給容器,您可以佈建 AWS 核心裝置操作所需的資源。您也可以將開發工具部署到核心裝置,以用作開發裝置。這可讓您在執行容器時提供較少的許可給裝置。如需詳細資訊,請參閱AWS IoT Greengrass在具有手動資源佈建的 Docker 容器中執行。
必要條件
若要完成本教學課程,您需要下列項目。
-
AWS 帳戶:如果您沒有帳戶,請參閱 設定 AWS 帳戶。
-
具有為 IAM Greengrass AWS IAM核心裝置佈建 AWS IoT 和資源許可的使用者。Core AWS IoT Greengrass 軟體安裝程式使用您的 AWS 登入資料來自動佈建這些資源。如需自動佈建資源的最低IAM政策資訊,請參閱 安裝程式佈建資源的最低 IAM 政策。
-
Docker AWS IoT Greengrass 映像。您可以從 Dockerfile AWS IoT Greengrass 建置映像。
-
執行 Docker 容器的主機電腦必須符合下列要求:
-
具有網際網路連線的 Linux 作業系統。
-
Docker 引擎
18.09 版或更新版本。 -
(選用) Docker Compose
1.22 版或更新版本。只有在您想要使用 Docker Compose CLI執行 Docker 映像時,才需要 Docker Compose。
-
設定 AWS 憑證
在此步驟中,您會在主機電腦上建立包含安全 AWS 登入資料的登入資料檔案。當您執行 AWS IoT Greengrass Docker 映像時,您必須在 Docker 容器中將包含此登入資料檔案的資料夾掛載至 /root/.aws/
。 AWS IoT Greengrass 安裝程式使用這些登入資料來佈建 中的資源 AWS 帳戶。如需安裝程式自動佈建資源所需的最低IAM政策的相關資訊,請參閱 安裝程式佈建資源的最低 IAM 政策。
-
擷取下列其中一項。
-
IAM 使用者的長期登入資料。如需如何擷取長期登入資料的資訊,請參閱IAM《 使用者指南》中的管理IAM使用者的存取金鑰。
-
(建議) IAM角色的暫時登入資料。如需如何擷取臨時登入資料的資訊,請參閱IAM《 使用者指南》中的使用臨時安全登入資料搭配 AWS CLI。
-
-
建立您放置登入資料檔案的資料夾。
mkdir ./greengrass-v2-credentials
-
使用文字編輯器在
./greengrass-v2-credentials
資料夾中建立名為credentials
的組態檔案。例如,您可以執行下列命令,使用 GNU nano 來建立
credentials
檔案。nano ./greengrass-v2-credentials/credentials
-
以下列格式將您的 AWS 登入資料新增至
credentials
檔案。[default] aws_access_key_id =
AKIAIOSFODNN7EXAMPLE
aws_secret_access_key =wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
aws_session_token =AQoEXAMPLEH4aoAH0gNCAPy...truncated...zrkuWJOgQs8IZZaIv2BXIa2R4Olgk
僅包含
aws_session_token
臨時登入資料。
重要
啟動 AWS IoT Greengrass 容器後,請從主機電腦移除登入資料檔案。如果您不移除登入資料檔案,則您的 AWS 登入資料將保留在容器內。如需詳細資訊,請參閱在容器中執行 AWS IoT Greengrass 核心軟體。
建立環境檔案
本教學課程使用環境檔案來設定環境變數,這些變數將傳遞至 Docker 容器內的 AWS IoT Greengrass Core 軟體安裝程式。您也可以在docker run
命令中使用 -e
或 --env
引數docker-compose.yml
檔案的 environment
區塊
-
使用文字編輯器建立名為 的環境檔案
.env
。例如,在以 Linux 為基礎的系統上,您可以執行下列命令,使用 GNU nano
.env
在目前的目錄中建立 。nano .env
-
將下列內容複製到 檔案。
GGC_ROOT_PATH=
AWS_REGION=/greengrass/v2
region
PROVISION=true THING_NAME=MyGreengrassCore
THING_GROUP_NAME=MyGreengrassCoreGroup
TES_ROLE_NAME=GreengrassV2TokenExchangeRole
TES_ROLE_ALIAS_NAME=GreengrassCoreTokenExchangeRoleAlias
COMPONENT_DEFAULT_USER=ggc_user:ggc_group然後,取代下列值。
-
。 您要用於安裝的 Greengrass 根資料夾。您可以使用/greengrass/v2
GGC_ROOT
環境變數來設定此值。 -
region
。 您建立資源 AWS 區域 的 。 -
MyGreengrassCore
。 物件的名稱 AWS IoT 。如果物件不存在,安裝程式會建立它。安裝程式會下載憑證以驗證 做為 AWS IoT 物件。 -
MyGreengrassCoreGroup
。 AWS IoT 物件群組的名稱。如果物件群組不存在,安裝程式會建立該物件並將其新增至該物件。如果物件群組存在且具有作用中部署,核心裝置會下載並執行部署指定的軟體。 -
GreengrassV2TokenExchangeRole
。 將 取代為權IAM杖交換角色的名稱,允許 Greengrass 核心裝置取得臨時 AWS 憑證。如果角色不存在,安裝程式會建立該角色,並建立和連接名為GreengrassV2TokenExchangeRole
Access 的政策。如需詳細資訊,請參閱授權核心裝置與 AWS 服務互動。 -
GreengrassCoreTokenExchangeRoleAlias
。 字符交換角色別名。如果角色別名不存在,安裝程式會建立它,並將其指向您指定的IAM字符交換角色。如需詳細資訊,請參閱
注意
您可以將
DEPLOY_DEV_TOOLS
環境變數設定為true
以部署 Greengrass CLI元件,這可讓您在 Docker 容器內開發自訂元件。我們建議您僅在開發環境中使用此元件,而不是在生產環境中。此元件可讓您存取生產環境中通常不需要的資訊和操作。僅將此元件部署到您需要的核心裝置,以遵循最低權限原則。 -
在容器中執行 AWS IoT Greengrass 核心軟體
本教學課程說明如何啟動您在 Docker 容器中建置的 Docker 映像。您可以使用 Docker CLI或 Docker Compose 在 Docker 容器中CLI執行 AWS IoT Greengrass 核心軟體映像。
後續步驟
AWS IoT Greengrass 核心軟體現在正在 Docker 容器中執行。執行下列命令,以擷取目前執行中容器的容器 ID。
docker ps
然後,您可以執行下列命令來存取容器,並探索在容器內執行 AWS IoT Greengrass 的核心軟體。
docker exec -it
container-id
/bin/bash
如需建立簡單元件的詳細資訊,請參閱 步驟 4:在您的裝置上開發和測試元件中的 教學課程:入門 AWS IoT Greengrass V2
注意
當您使用 在 Docker 容器內docker exec
執行命令時,這些命令不會記錄在 Docker 日誌中。若要在 Docker 日誌中記錄您的命令,請將互動式 shell 連接至 Docker 容器。如需詳細資訊,請參閱將互動式 shell 連接至 Docker 容器。
AWS IoT Greengrass 核心日誌檔案稱為 greengrass.log
,位於 中
。元件日誌檔案也位於相同的目錄中。若要將 Greengrass 日誌複製到主機上的暫存目錄,請執行下列命令:
/logs/greengrass/v2
docker cp
container-id
:/greengrass/v2/logs/tmp/logs
如果您想要在容器結束或移除後保留日誌,建議您僅將
目錄繫結至主機上的暫存日誌目錄,而不是掛載整個 Greengrass 目錄。如需詳細資訊,請參閱Docker 容器外的持久性 Greengrass 日誌。
/logs/greengrass/v2
若要停止執行中的 AWS IoT Greengrass Docker 容器,請執行 docker stop
或 docker-compose -f docker-compose.yml stop
。此動作會SIGTERM
傳送至 Greengrass 程序,並關閉在容器中啟動的所有相關程序。Docker 容器會以可執行檔初始化為程序 docker-init
PID1,這有助於移除任何剩餘的殭屍程序。如需詳細資訊,請參閱 Docker 文件中的指定初始化程序
如需在 AWS IoT Greengrass Docker 容器中執行 時故障診斷問題的相關資訊,請參閱 在 Docker AWS IoT Greengrass 容器中進行故障診斷。