本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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 資源許可的 IAM 使用者。AWSAWS IoT GreengrassCore 軟體安裝程式會使用您的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 角色的臨時登入資料。如需如何擷取臨時登入資料的詳細資訊,請參閱《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核心軟件安裝程序的環境變量。您也可以在docker run
命令中使用-e
或--env
引數docker-compose.yml
檔案中的environment
區塊
-
使用文字編輯器建立名為的環境檔案
.env
。例如,在基於 Linux 的系統上,您可以運行以下命令來使用 GNU nano 在當前目錄
.env
中創建。nano .env
-
將下列內容複製到檔案中。
GGC_ROOT_PATH=
/greengrass/v2
AWS_REGION=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/2
。您要用於安裝的 Greengrass 根資料夾。您可以使用GGC_ROOT
環境變數來設定此值。 -
區域
。您建立資源的AWS 區域位置。 -
MyGreengrassCore
。AWS IoT 物件的名稱。如果該物件不存在,安裝程序將創建它。安裝程式會下載要驗證為AWS IoT物件的憑證。 -
MyGreengrassCoreGroup
。AWS IoT物件群組的名稱。如果物件群組不存在,安裝程式會建立該物件並將該物件新增至其中。如果物群組存在且具有使用中部署,則核心裝置會下載並執行部署指定的軟體。 -
格林格拉斯 V2 TokenExchangeRole
。取代為允許 Greengrass 核心裝置取得臨時登入資料的 IAM 權杖交換角色名稱。AWS如果角色不存在,安裝程式會建立該角色,並建立並附加名為Greengr TokenExchangeRole
assv2 存取的原則。如需詳細資訊,請參閱授權核心設備與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 記錄檔複製到主機上的暫存目錄,請執行下列命令:/greengrass/v2
/logs
docker cp
container-id
:/greengrass/v2/logs/tmp/logs
如果您想要在容器結束或移除之後保留記錄檔,建議您只將
目錄繫結掛載到主機上的暫存記錄目錄,而不是掛載整個 Greengrass 目錄。如需詳細資訊,請參閱在碼頭容器之外保存 Greengrass 日誌。/greengrass/v2
/logs
若要停止執行中的 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 的疑難排解。