本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
AWS IoT Greengrass在具有手動資源佈建的 Docker 容器中執行
本教學課程說明如何使用手動佈建的AWS資源在 Docker 容器中安裝和執行 AWS IoT Greengrass Core 軟體。
先決條件
為了完成本教學,您需要以下項目:
-
AWS 帳戶。如果您沒有帳戶,請參閱 設置一個AWS 帳戶。
-
AWS IoT Greengrass碼頭圖像。您可以從AWS IoT Greengrass碼頭文件構建圖像。
-
您執行 Docker 容器的主機電腦必須符合下列需求:
擷取AWS IoT端點
取得您的AWS IoT端點AWS 帳戶,並儲存以供稍後使用。您的裝置會使用這些端點連線至AWS IoT。請執行下列動作:
-
取得適AWS IoT用於您的AWS 帳戶.
aws iot describe-endpoint --endpoint-type iot:Data-ATS
如果要求成功,回應看起來類似下列範例。
{ "endpointAddress": "
device-data-prefix
-ats.iot.us-west-2.amazonaws.com" } -
取AWS IoT得您的AWS 帳戶.
aws iot describe-endpoint --endpoint-type iot:CredentialProvider
如果要求成功,回應看起來類似下列範例。
{ "endpointAddress": "
device-credentials-prefix
.credentials.iot.us-west-2.amazonaws.com" }
建立物AWS IoT件
AWS IoT東西代表連接到的設備和邏輯實體AWS IoT。Greengrass 核心設備是事情。AWS IoT當您將裝置註冊為AWS IoT物件時,該裝置可以使用數位憑證來進行驗證AWS。
在本節中,您會建立代表您裝置的AWS IoT物件。
若要建立AWS IoT物件
-
為您的裝置建立項AWS IoT目。在您的開發電腦上,執行下列命令。
-
以要
MyGreengrassCore
使用的物件名稱取代。這個名字也是 Greengrass 核心裝置的名稱。注意
物件名稱不能包含冒號 (
:
) 字元。
aws iot create-thing --thing-name
MyGreengrassCore
如果要求成功,回應看起來類似下列範例。
{ "thingName": "MyGreengrassCore", "thingArn": "arn:aws:iot:us-west-2:123456789012:thing/MyGreengrassCore", "thingId": "8cb4b6cd-268e-495d-b5b9-1713d71dbf42" }
-
-
(選擇性) 將AWS IoT物件新增至新的或現有的物件群組。您可以使用物件群組來管理 Greengrass 核心裝置的叢集。將軟體元件部署到裝置時,您可以鎖定個別裝置或裝置群組。您可以將裝置新增至具有作用中 Greengrass 部署的物群組,以將該物件群組的軟體元件部署到裝置。請執行下列動作:
-
(選擇性) 建立AWS IoT物件群組。
-
以要建立的物件群組名稱取
MyGreengrassCoreGroup
代。注意
物件群組名稱不能包含冒號 (
:
) 字元。
aws iot create-thing-group --thing-group-name
MyGreengrassCoreGroup
如果要求成功,回應看起來類似下列範例。
{ "thingGroupName": "MyGreengrassCoreGroup", "thingGroupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/MyGreengrassCoreGroup", "thingGroupId": "4df721e1-ff9f-4f97-92dd-02db4e3f03aa" }
-
-
將AWS IoT物件新增至物件群組。
-
替換
MyGreengrassCore
為您的AWS IoT事物的名稱。 -
MyGreengrassCoreGroup
以物件群組的名稱取代。
aws iot add-thing-to-thing-group --thing-name
MyGreengrassCore
--thing-group-nameMyGreengrassCoreGroup
如果請求成功,命令沒有任何輸出。
-
-
建立物件憑證
當您將裝置註冊為AWS IoT物件時,該裝置可以使用數位憑證來進行驗證AWS。此憑證可讓裝置與AWS IoT和通訊AWS IoT Greengrass。
在本節中,您會建立並下載裝置可用來連線的憑證AWS。
若要建立物憑證
-
建立下載AWS IoT物件憑證的資料夾。
mkdir greengrass-v2-certs
-
建立並下載AWS IoT物件的憑證。
aws iot create-keys-and-certificate --set-as-active --certificate-pem-outfile greengrass-v2-certs/device.pem.crt --public-key-outfile greengrass-v2-certs/public.pem.key --private-key-outfile greengrass-v2-certs/private.pem.key
如果要求成功,回應看起來類似下列範例。
{ "certificateArn": "arn:aws:iot:us-west-2:123456789012:cert/aa0b7958770878eabe251d8a7ddd547f4889c524c9b574ab9fbf65f32248b1d4", "certificateId": "aa0b7958770878eabe251d8a7ddd547f4889c524c9b574ab9fbf65f32248b1d4", "certificatePem": "-----BEGIN CERTIFICATE----- MIICiTCCAfICCQD6m7oRw0uXOjANBgkqhkiG9w 0BAQUFADCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZ WF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIw EAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5 jb20wHhcNMTEwNDI1MjA0NTIxWhcNMTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBh MCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBb WF6b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMx HzAdBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wgZ8wDQYJKoZIhvcNAQE BBQADgY0AMIGJAoGBAMaK0dn+a4GmWIWJ21uUSfwfEvySWtC2XADZ4nB+BLYgVI k60CpiwsZ3G93vUEIO3IyNoH/f0wYK8m9TrDHudUZg3qX4waLG5M43q7Wgc/MbQ ITxOUSQv7c7ugFFDzQGBzZswY6786m86gpEIbb3OhjZnzcvQAaRHhdlQWIMm2nr AgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtCu4nUhVVxYUntneD9+h8Mg9q6q+auN KyExzyLwaxlAoo7TJHidbtS4J5iNmZgXL0FkbFFBjvSfpJIlJ00zbhNYS5f6Guo EDmFJl0ZxBHjJnyp378OD8uTs7fLvjx79LjSTbNYiytVbZPQUQ5Yaxu2jXnimvw 3rrszlaEXAMPLE= -----END CERTIFICATE-----", "keyPair": { "PublicKey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkEXAMPLEQEFAAOCAQ8AMIIBCgKCAQEAEXAMPLE1nnyJwKSMHw4h\nMMEXAMPLEuuN/dMAS3fyce8DW/4+EXAMPLEyjmoF/YVF/gHr99VEEXAMPLE5VF13\n59VK7cEXAMPLE67GK+y+jikqXOgHh/xJTwo+sGpWEXAMPLEDz18xOd2ka4tCzuWEXAMPLEahJbYkCPUBSU8opVkR7qkEXAMPLE1DR6sx2HocliOOLtu6Fkw91swQWEXAMPLE\GB3ZPrNh0PzQYvjUStZeccyNCx2EXAMPLEvp9mQOUXP6plfgxwKRX2fEXAMPLEDa\nhJLXkX3rHU2xbxJSq7D+XEXAMPLEcw+LyFhI5mgFRl88eGdsAEXAMPLElnI9EesG\nFQIDAQAB\n-----END PUBLIC KEY-----\n", "PrivateKey": "-----BEGIN RSA PRIVATE KEY-----\nkey omitted for security reasons\n-----END RSA PRIVATE KEY-----\n" } }
儲存憑證的 Amazon 資源名稱 (ARN),以便稍後用來設定憑證。
配置物憑證
將物憑證附加至您先前建立的AWS IoT物件,並將AWS IoT原則新增至憑證以定義核心裝置的AWS IoT權限。
若要設定物件的憑證
-
將憑證附加至物AWS IoT件。
-
替換
MyGreengrassCore
為您的AWS IoT事物的名稱。 -
將憑證 Amazon 資源名稱 (ARN) 取代為您在上一個步驟中建立的憑證的 ARN。
aws iot attach-thing-principal --thing-name
MyGreengrassCore
--principalarn:aws:iot:us-west-2:123456789012:cert/aa0b7958770878eabe251d8a7ddd547f4889c524c9b574ab9fbf65f32248b1d4
如果請求成功,命令沒有任何輸出。
-
-
建立並附加AWS IoT定義 Greengrass 核心裝置AWS IoT權限的原則。下列原則允許存取所有 MQTT 主題和 Greengrass 作業,因此您的裝置可以處理需要新 Greengrass 作業的自訂應用程式和 future 變更。您可以根據您的使用案例限制此政策。如需詳細資訊,請參閱AWS IoT Greengrass V2核心裝置的最低AWS IoT原則。
如果您之前已設定過 Greengrass 核心裝置,則可以附加其AWS IoT原則,而不是建立新的原則。
請執行下列動作:
-
建立包含 Greengrass 核心裝置所需之AWS IoT原則文件的檔案。
例如,在 Linux 系統上,您可以執行下列命令來使用 GNU nano 建立檔案。
nano greengrass-v2-iot-policy.json
將下列 JSON 複製到檔案中。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Publish", "iot:Subscribe", "iot:Receive", "iot:Connect", "greengrass:*" ], "Resource": [ "*" ] } ] }
-
從AWS IoT策略文件建立策略。
-
以要建
立的策略名稱取代綠ThingPolicy色物聯網
。
aws iot create-policy --policy-name
GreengrassV2IoTThingPolicy
--policy-document file://greengrass-v2-iot-policy.json如果要求成功,回應看起來類似下列範例。
{ "policyName": "GreengrassV2IoTThingPolicy", "policyArn": "arn:aws:iot:us-west-2:123456789012:policy/GreengrassV2IoTThingPolicy", "policyDocument": "{ \"Version\": \"2012-10-17\", \"Statement\": [ { \"Effect\": \"Allow\", \"Action\": [ \"iot:Publish\", \"iot:Subscribe\", \"iot:Receive\", \"iot:Connect\", \"greengrass:*\" ], \"Resource\": [ \"*\" ] } ] }", "policyVersionId": "1" }
-
-
將AWS IoT原則附加至物AWS IoT件的憑證。
-
以要附
加的原則名稱取代綠ThingPolicy色物聯網
。 -
將目標 ARN 取代為物件憑證的 AWS IoT ARN。
aws iot attach-policy --policy-name
GreengrassV2IoTThingPolicy
--targetarn:aws:iot:us-west-2:123456789012:cert/aa0b7958770878eabe251d8a7ddd547f4889c524c9b574ab9fbf65f32248b1d4
如果請求成功,命令沒有任何輸出。
-
-
建立權杖交換角色
Greengrass 核心裝置使用 IAM 服務角色 (稱為權杖交換角色) 來授權對服務的呼叫。AWS裝置使用AWS IoT登入資料提供者取得此角色的臨時AWS登入資料,以便裝置與之互動AWS IoT、將日誌傳送到 Amazon CloudWatch Logs,以及從 Amazon S3 下載自訂元件成品。如需詳細資訊,請參閱授權核心設備與AWS服務。
您可以使用AWS IoT角色別名來設定 Greengrass 核心裝置的權杖交換角色。角色別名可讓您變更裝置的 Token 交換角色,但保持裝置設定不變。如需詳細資訊,請參閱AWS IoT Core開發人員指南中的授權直接呼叫AWS服務。
在本節中,您會建立權杖交換 IAM 角色和指向該AWS IoT角色的角色別名。如果您已經設置了 Greengrass 核心設備,則可以使用其令牌交換角色和角色別名,而不是創建新的。然後,您將設備的AWS IoT東西配置為使用該角色和別名。
若要建立權杖交換 IAM 角色
-
建立 IAM 角色,您的裝置可用作權杖交換角色。請執行下列動作:
-
建立包含 Token 交換角色所需之信任原則文件的檔案。
例如,在 Linux 系統上,您可以執行下列命令來使用 GNU nano 建立檔案。
nano device-role-trust-policy.json
將下列 JSON 複製到檔案中。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "credentials.iot.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
-
使用信任原則文件建立權杖交換角色。
-
TokenExchangeRole以要建立的身分與存取權管理員角色的名稱取代
GreenGrassv2
。
aws iam create-role --role-name
GreengrassV2TokenExchangeRole
--assume-role-policy-document file://device-role-trust-policy.json如果要求成功,回應看起來類似下列範例。
{ "Role": { "Path": "/", "RoleName": "GreengrassV2TokenExchangeRole", "RoleId": "AROAZ2YMUHYHK5OKM77FB", "Arn": "arn:aws:iam::123456789012:role/GreengrassV2TokenExchangeRole", "CreateDate": "2021-02-06T00:13:29+00:00", "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "credentials.iot.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } }
-
-
建立包含權杖交換角色所需之存取原則文件的檔案。
例如,在 Linux 系統上,您可以執行下列命令來使用 GNU nano 建立檔案。
nano device-role-access-policy.json
將下列 JSON 複製到檔案中。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogStreams", "s3:GetBucketLocation" ], "Resource": "*" } ] }
注意
此存取政策不允許存取 S3 儲存貯體中的元件成品。若要在 Amazon S3 中部署定義成品的自訂元件,您必須向角色新增許可,以允許核心裝置擷取元件成品。如需詳細資訊,請參閱允許存取 S3 儲存貯體的存取。
如果您還沒有適用於元件成品的 S3 儲存貯體,您可以在稍後建立儲存貯體後新增這些許可。
-
從政策文件建立 IAM 政策。
-
TokenExchangeRoleAccess以要建立的身分與存取權管理政策的名稱取代
GreenGrassv2
。
aws iam create-policy --policy-name
GreengrassV2TokenExchangeRoleAccess
--policy-document file://device-role-access-policy.json如果要求成功,回應看起來類似下列範例。
{ "Policy": { "PolicyName": "GreengrassV2TokenExchangeRoleAccess", "PolicyId": "ANPAZ2YMUHYHACI7C5Z66", "Arn": "arn:aws:iam::123456789012:policy/GreengrassV2TokenExchangeRoleAccess", "Path": "/", "DefaultVersionId": "v1", "AttachmentCount": 0, "PermissionsBoundaryUsageCount": 0, "IsAttachable": true, "CreateDate": "2021-02-06T00:37:17+00:00", "UpdateDate": "2021-02-06T00:37:17+00:00" } }
-
-
將 IAM 政策附加到權杖交換角色。
-
以 IAM 角
色的名稱取代綠TokenExchangeRole色 V2
。 -
將政策 ARN 取代為您在上一個步驟中建立的 IAM 政策的 ARN。
aws iam attach-role-policy --role-name
GreengrassV2TokenExchangeRole
--policy-arnarn:aws:iam::123456789012:policy/GreengrassV2TokenExchangeRoleAccess
如果請求成功,命令沒有任何輸出。
-
-
-
建立指向權杖交換AWS IoT角色的角色別名。
-
以要建立之角色別名的名稱取
GreengrassCoreTokenExchangeRoleAlias
代。 -
將角色 ARN 取代為您在上一個步驟中建立的 IAM 角色的 ARN。
aws iot create-role-alias --role-alias
GreengrassCoreTokenExchangeRoleAlias
--role-arnarn:aws:iam::123456789012:role/GreengrassV2TokenExchangeRole
如果要求成功,回應看起來類似下列範例。
{ "roleAlias": "GreengrassCoreTokenExchangeRoleAlias", "roleAliasArn": "arn:aws:iot:us-west-2:123456789012:rolealias/GreengrassCoreTokenExchangeRoleAlias" }
注意
若要建立角色別名,您必須擁有權限才能將權杖交換 IAM 角色傳遞給AWS IoT。如果您在嘗試建立角色別名時收到錯誤訊息,請檢查您的AWS使用者是否具有此權限。如需詳細資訊,請參閱《使用指南》中的授與使用AWS Identity and Access Management者將角色傳遞給AWS服務的權限。
-
-
建立並附加AWS IoT原則,讓您的 Greengrass 核心裝置使用角色別名來承擔權杖交換角色。如果您之前已經設定過 Greengrass 核心裝置,則可以附加其角色別名AWS IoT原則,而不是建立新的別名原則。請執行下列動作:
-
(選擇性) 建立包含角色別名所需之AWS IoT原則文件的檔案。
例如,在 Linux 系統上,您可以執行下列命令來使用 GNU nano 建立檔案。
nano greengrass-v2-iot-role-alias-policy.json
將下列 JSON 複製到檔案中。
-
將資源 ARN 取代為角色別名的 ARN。
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iot:AssumeRoleWithCertificate", "Resource": "
arn:aws:iot:us-west-2:123456789012:rolealias/GreengrassCoreTokenExchangeRoleAlias
" } ] } -
-
從AWS IoT策略文件建立策略。
-
以要建立的AWS IoT策略名稱取
GreengrassCoreTokenExchangeRoleAliasPolicy
代。
aws iot create-policy --policy-name
GreengrassCoreTokenExchangeRoleAliasPolicy
--policy-document file://greengrass-v2-iot-role-alias-policy.json如果要求成功,回應看起來類似下列範例。
{ "policyName": "GreengrassCoreTokenExchangeRoleAliasPolicy", "policyArn": "arn:aws:iot:us-west-2:123456789012:policy/GreengrassCoreTokenExchangeRoleAliasPolicy", "policyDocument": "{ \"Version\":\"2012-10-17\", \"Statement\": [ { \"Effect\": \"Allow\", \"Action\": \"iot:AssumeRoleWithCertificate\", \"Resource\": \"arn:aws:iot:us-west-2:123456789012:rolealias/GreengrassCoreTokenExchangeRoleAlias\" } ] }", "policyVersionId": "1" }
-
-
將AWS IoT原則附加至物AWS IoT件的憑證。
-
以角
GreengrassCoreTokenExchangeRoleAliasPolicy
色別名AWS IoT原則的名稱取代。 -
將目標 ARN 取代為物件憑證的 AWS IoT ARN。
aws iot attach-policy --policy-name
GreengrassCoreTokenExchangeRoleAliasPolicy
--targetarn:aws:iot:us-west-2:123456789012:cert/aa0b7958770878eabe251d8a7ddd547f4889c524c9b574ab9fbf65f32248b1d4
如果請求成功,命令沒有任何輸出。
-
-
將憑證下載到裝置
之前,您已將裝置的憑證下載到開發電腦。在本節中,您將下載 Amazon 根憑證授權單位 (CA) 憑證。然後,如果您打算在與開發電腦不同的電腦上執行 Docker 中的 AWS IoT Greengrass Core 軟體,您可以將憑證複製到該主機電腦。AWS IoT Greengrass核心軟體會使用這些憑證來連線至AWS IoT雲端服務。
將憑證下載到裝置
-
在開發電腦上,下載 Amazon 根憑證授權單位 (CA) 憑證。 AWS IoT憑證預設會與 Amazon 的根 CA 憑證相關聯。
-
如果您打算在與開發電腦不同的裝置上執行 Docker 中的 AWS IoT Greengrass Core 軟體,請將憑證複製到主機電腦。如果在開發電腦和主機電腦上啟用了 SSH 和 SCP,您可以使用開發電腦上的
scp
指令來傳輸憑證。device-ip-address
以主機的 IP 位址取代。scp -r greengrass-v2-certs/
device-ip-address
:~
建立組態檔
-
在主機電腦上,建立放置組態檔的資料夾。
mkdir ./greengrass-v2-config
-
使用文字編輯器建立在
./greengrass-v2-config
資料夾config.yaml
中命名的規劃檔。例如,您可以執行下列命令來使用 GNU nano 來建立.
config.yaml
nano ./greengrass-v2-config/config.yaml
-
將下列 YAML 內容複製到檔案中。此部分配置文件指定系統參數和 Greengrass 核參數。
--- system: certificateFilePath: "
/tmp/certs
/device.pem.crt" privateKeyPath: "/tmp/certs
/private.pem.key" rootCaPath: "/tmp/certs
/AmazonRootCA1.pem" rootpath: "/greengrass/v2
" thingName: "MyGreengrassCore
" services: aws.greengrass.Nucleus: componentType: "NUCLEUS" version: "nucleus-version
" configuration: awsRegion: "region
" iotRoleAlias: "GreengrassCoreTokenExchangeRoleAlias
" iotDataEndpoint: "device-data-prefix
-ats.iot.region
.amazonaws.com" iotCredEndpoint: "device-credentials-prefix
.credentials.region
.amazonaws.com"然後,取代下列值:
-
/tmp/ 證書
。Docker 容器中的目錄,當您啟動容器時,您可以掛載下載的憑證。 -
/greengrass/2
。您要用於安裝的 Greengrass 根資料夾。您可以使用GGC_ROOT
環境變數來設定此值。 -
MyGreengrassCore
。AWS IoT 物件的名稱。 -
核版本
。要安裝的AWS IoT Greengrass核心軟體版本。此值必須與您下載的 Docker 映像檔或 Docker 檔案的版本相符。如果您下載了帶有latest
標籤的 Greengrass 碼頭圖像,請使用docker inspect
查看映像版本。image-id
-
區域
。您建立AWS IoT資源的AWS 區域位置。您也必須為環境檔案中的AWS_REGION
環境變數指定相同的值。 -
GreengrassCoreTokenExchangeRoleAlias
。權杖交換角色別名。 -
device-data-prefix
。AWS IoT資料端點的前置詞。 -
device-credentials-prefix
。AWS IoT憑證端點的前置詞。
-
建立環境檔案
本教程使用環境文件來設置將傳遞給 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=false COMPONENT_DEFAULT_USER=ggc_user:ggc_group INIT_CONFIG=/tmp/config/
config.yaml然後,取代下列值。
-
/greengrass/2
。用來安裝 AWS IoT Greengrass Core 軟體的根資料夾路徑。 -
區域
。您建立AWS IoT資源的AWS 區域位置。您必須為組態檔案中的awsRegion
組態參數指定相同的值。 -
/tmp /配置/
。啟動 Docker 容器時掛載配置檔案的資料夾。
注意
您可以將
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核心軟體。
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 的疑難排解。