本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在本節中,您將 Hello World 元件發佈到AWS IoT Greengrass雲端服務。在AWS IoT Greengrass雲端服務中可用元件之後,您可以將其部署到核心裝置。您可以使用 GDK CLI 將元件從開發電腦發佈到AWS IoT Greengrass雲端服務。GDK CLI 會為您上傳元件的配方和成品。
若要將 Hello World 元件發佈至AWS IoT Greengrass服務
-
執行下列命令,以使用 GDK CLI 建置元件。組件構建命令會根據 GDK CLI 配置文件創建方案和成品。在此程序中,GDK CLI 會建立包含元件原始程式碼的 ZIP 檔案。
gdk component build
您應該會看到類似下列範例的訊息。
[2022-04-28 11:20:16] INFO - Getting project configuration from gdk-config.json [2022-04-28 11:20:16] INFO - Found component recipe file 'recipe.yaml' in the project directory. [2022-04-28 11:20:16] INFO - Building the component 'com.example.BatteryAwareHelloWorld' with the given project configuration. [2022-04-28 11:20:16] INFO - Using 'zip' build system to build the component. [2022-04-28 11:20:16] WARNING - This component is identified as using 'zip' build system. If this is incorrect, please exit and specify custom build command in the 'gdk-config.json'. [2022-04-28 11:20:16] INFO - Zipping source code files of the component. [2022-04-28 11:20:16] INFO - Copying over the build artifacts to the greengrass component artifacts build folder. [2022-04-28 11:20:16] INFO - Updating artifact URIs in the recipe. [2022-04-28 11:20:16] INFO - Creating component recipe in 'C:\Users\finthomp\greengrassv2\com.example.BatteryAwareHelloWorld\greengrass-build\recipes'.
-
執行下列命令,將元件發佈至AWS IoT Greengrass雲端服務。元件發佈命令會將元件的 ZIP 檔案成品上傳至 S3 儲存貯體。然後,它會更新元件方案中的 ZIP 檔案的 S3 URI,並將配方上傳至AWS IoT Greengrass服務。在此過程中,GDK CLI 會檢查AWS IoT Greengrass雲端服務中已經可用的 Hello World 元件版本,因此它可以選擇該版本之後的下一個修補程式版本。如果元件尚不存在,GDK CLI 會使用版本
1.0.0
。gdk component publish
您應該會看到類似下列範例的訊息。輸出會告訴您 GDK CLI 建立的元件版本。
[2022-04-28 11:20:29] INFO - Getting project configuration from gdk-config.json [2022-04-28 11:20:29] INFO - Found component recipe file 'recipe.yaml' in the project directory. [2022-04-28 11:20:29] INFO - Found credentials in shared credentials file: ~/.aws/credentials [2022-04-28 11:20:30] INFO - No private version of the component 'com.example.BatteryAwareHelloWorld' exist in the account. Using '1.0.0' as the next version to create. [2022-04-28 11:20:30] INFO - Publishing the component 'com.example.BatteryAwareHelloWorld' with the given project configuration. [2022-04-28 11:20:30] INFO - Uploading the component built artifacts to s3 bucket. [2022-04-28 11:20:30] INFO - Uploading component artifacts to S3 bucket: greengrass-component-artifacts-us-west-2-123456789012. If this is your first time using this bucket, add the 's3:GetObject' permission to each core device's token exchange role to allow it to download the component artifacts. For more information, see https://docs.aws.amazon.com/greengrass/v2/developerguide/device-service-role.html. [2022-04-28 11:20:30] INFO - Not creating an artifacts bucket as it already exists. [2022-04-28 11:20:30] INFO - Updating the component recipe com.example.BatteryAwareHelloWorld-1.0.0. [2022-04-28 11:20:31] INFO - Creating a new greengrass component com.example.BatteryAwareHelloWorld-1.0.0 [2022-04-28 11:20:31] INFO - Created private version '1.0.0' of the component in the account.'com.example.BatteryAwareHelloWorld'.
-
從輸出複製 S3 儲存貯體名稱。稍後您可以使用值區名稱,以允許核心裝置從此值區下載元件成品。
-
(選擇性) 在AWS IoT Greengrass主控台中檢視元件,以確認該元件已成功上傳。請執行下列操作:
-
在AWS IoT Greengrass主控台
瀏覽功能表中,選擇 [元件]。 -
在 [元件] 頁面上,選擇 [我的元件] 索引標籤,然後選擇com.example.BatteryAwareHelloWorld。
在此頁面上,您可以查看元件的配方以及元件的其他相關資訊。
-
-
允許核心裝置存取 S3 儲存貯體中的元件成品。
每個核心裝置都有一個核心裝置 IAM 角色,可讓其與雲端互動AWS IoT並將記錄檔傳送到AWS雲端。依預設,此裝置角色不允許存取 S3 儲存貯體,因此您必須建立並附加政策,以允許核心裝置從 S3 儲存貯體擷取元件成品。
如果您的裝置角色已允許存取 S3 儲存貯體,則可以略過此步驟。否則,請建立允許存取的 IAM 政策,並將其附加到角色,如下所示:
-
在 IAM 主控台
導覽功能表中,選擇 [政策],然後選擇 [建立政策]。 -
在 JSON 標籤上,用以下政策取代預留位置內容。將
greengrass-component-artifacts-us-WEST 2-123456789012
取代為 GDK CLI 上傳元件成品的 S3 儲存貯體的名稱。例如,如果您在 GDK CLI 組態檔
us-west-2
中指定了greengrass-component-artifacts
AND,而您的AWS 帳戶識別碼是123456789012
,GDK CLI 會使用名為的 S3 儲存貯體。greengrass-component-artifacts-us-west-2-123456789012
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": "arn:aws:s3:::
greengrass-component-artifacts-us-west-2-123456789012
/*" } ] } -
選擇下一步。
-
在「策略詳細資料」區段中,輸入做為「名稱」
MyGreengrassV2ComponentArtifactPolicy
。 -
選擇建立政策。
-
在 IAM 主控台
導覽功能表中,選擇 [角色],然後選擇核心裝置的角色名稱。您在安裝 AWS IoT Greengrass Core 軟體時指定了這個角色名稱。如果您未指定名稱,則預設值為 GreengrassV2TokenExchangeRole
。 -
在「權限」下,選擇「新增權限」,然後選擇「附加策略
-
在 [新增權限] 頁面上,選取您建立之
MyGreengrassV2ComponentArtifactPolicy
原則旁邊的核取方塊,然後選擇 [新增權限]。
-