本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
AWS IoT Greengrass 在具有自動資源佈建的 Docker 容器中執行
本教學課程說明如何使用自動佈建的 AWS 資源和本機開發工具,在 Docker 容器中安裝和執行 AWS IoT Greengrass Core 軟體。您可以使用此開發環境來探索 Docker 容器中的 AWS IoT Greengrass 功能。軟體需要 AWS 憑證才能佈建這些資源並部署本機開發工具。
如果您無法提供 AWS 認證給容器,則可以佈建核心裝置運作所需的 AWS 資源。您也可以將開發工具部署到核心裝置,做為開發裝置使用。這可讓您在執行容器時提供較少的裝置權限。如需詳細資訊,請參閱AWS IoT Greengrass在具有手動資源佈建的 Docker 容器中執行。
必要條件
若要完成此自學課程,您需要下列內容。
-
一個 AWS 帳戶. 如果您沒有帳戶,請參閱 設定 AWS 帳戶。
-
具有為 Greengrass 核心裝置佈建 AWS IoT 和IAM資源之權限的 AWS IAM使用者。 AWS IoT Greengrass Core 軟體安裝程式會使用您的 AWS 認證來自動佈建這些資源。如需自動佈建資源之最小IAM原則的相關資訊,請參閱安裝程式佈建資源的最低 IAM 政策。
-
AWS IoT Greengrass 碼頭圖像。您可以從 AWS IoT Greengrass 碼頭文件構建圖像。
-
您執行 Docker 容器的主機電腦必須符合下列需求:
設定 AWS 憑證
在此步驟中,您會在包含 AWS
安全性認證的主機電腦上建立認證檔案。當您執行 AWS IoT Greengrass Docker 映像時,您必須將包含此認證檔案的資料夾掛載到 Docker 容器/root/.aws/
中。安 AWS IoT Greengrass 裝程式會使用這些認證在您的 AWS 帳戶. 如需有關安裝程式自動佈建資源所需的最小IAM原則的資訊,請參閱安裝程式佈建資源的最低 IAM 政策。
-
擷取下列其中一項。
-
IAM使用者的長期認證。如需如何擷取長期認證的詳細資訊,請參閱《使IAM用者指南》中的〈管理使用IAM者的存取金鑰〉。
-
(建議使用) IAM 角色的臨時登入資料。如需如何擷取暫時身分證明的詳細資訊,請參閱《使用指南》 AWS CLI中的〈搭配使用臨時安全性認證〉。IAM
-
-
建立放置認證檔案的資料夾。
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 核心軟件安裝程序的環境變量。您也可以在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
。 取代為允許 Greengrass 核心裝置取得臨時認證的IAM權杖交換角色名稱。 AWS 如果角色不存在,安裝程式會建立該角色,並建立並附加名為的策略GreengrassV2TokenExchangeRole
存取。如需詳細資訊,請參閱授權核心裝置與 AWS 服務互動。 -
GreengrassCoreTokenExchangeRoleAlias
。 權杖交換角色別名。如果角色別名不存在,安裝程式會建立它,並將其指向您指定的 IAM Token 交換角色。如需詳細資訊,請參閱
注意
您可以將
DEPLOY_DEV_TOOLS
環境變數設定true
為部署 Greengrass CLI 元件,這可讓您在 Docker 容器內部開發自訂元件。我們建議您僅在開發環境中使用此元件,而不是在生產環境中使用。此元件可讓您存取通常在生產環境中不需要的資訊和作業。只將此元件部署到您需要的核心裝置,以遵循最低權限原則。 -
在容器中執行 AWS IoT Greengrass 核心軟體
本教學課程說明如何啟動您在 Docker 容器中建置的 Docker 映像檔。您可以使用碼頭工人CLI或碼頭構成CLI在 Docker 容器中運行 AWS IoT Greengrass 核心軟件映像。
後續步驟
AWS IoT Greengrass 核心軟件現在正在 Docker 容器中運行。執行下列命令以擷取目前執行中容器的容器 ID。
docker ps
然後,您可以執行下列命令來存取容器,並探索在容器內執行的 AWS IoT Greengrass Core 軟體。
docker exec -it
container-id
/bin/bash
如需有關建立簡單元件的資訊,請參閱步驟 4:在設備上開發和測試組件中的 教學課程:AWS IoT Greengrass V2 入門
注意
當您使用 docker exec
Docker 容器內執行命令時,這些命令不會記錄在 Docker 記錄中。要在 Docker 日誌中記錄命令,請將交互式外殼附加到 Docker 容器。如需詳細資訊,請參閱將交互式外殼附加到 Docker 容器。
AWS IoT Greengrass 核心記錄檔會呼叫greengrass.log
並位於中
。元件記錄檔也位於相同的目錄中。若要將 Greengrass 記錄檔複製到主機上的暫存目錄,請執行下列命令:
/logs/greengrass/v2
docker cp
container-id
:/greengrass/v2/logs/tmp/logs
如果您想要在容器結束或移除之後保留記錄檔,建議您只將
目錄繫結掛載到主機上的暫存記錄目錄,而不是掛載整個 Greengrass 目錄。如需詳細資訊,請參閱在碼頭容器之外保存 Greengrass 日誌。
/logs/greengrass/v2
若要停止執行中的 AWS IoT Greengrass Docker 容器,請執行docker
stop
或docker-compose -f docker-compose.yml stop
。此動作會傳送SIGTERM
至 Greengrass 處理程序,並關閉在容器中啟動的所有相關聯處理序。Docker 容器使用docker-init
可執行文件初始化為進程 PID 1,這有助於刪除任何剩餘的殭屍進程。如需詳細資訊,請參閱 Docker 文件中的指定初始化程序
如需疑難排解 Docker 容器 AWS IoT Greengrass 中執行問題的相關資訊,請參閱Docker 容器中 AWS IoT Greengrass 的疑難排解。