部署應用程式 - AWS Panorama

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

部署應用程式

若要部署應用程式,您可以使用 AWS Panorama 應用程式 CLI 將其匯入您的帳戶、建立容器、上傳和註冊資產,以及建立應用程式執行個體。本主題詳細介紹這些步驟中的每個步驟,並描述了背景中發生的情況。

如果您尚未部署應用程式,請參AWS Panorama 入門閱逐步解說。

如需自訂和延伸範例應用程式的詳細資訊,請參閱建置AWS Panorama應用

安裝 AWS 全景應用程式 CLI

若要安裝 AWS 全景應用程式 CLIAWS CLI,請使用 pip。

$ pip3 install --upgrade awscli panoramacli

若要使用 AWS 全景應用程式 CLI 建立應用程式映像,您需要 Docker。在 Linux 上,以qemu及相關的系統庫也是必需的。如需安裝和設定 AWS 全景應用程式 CLI 的詳細資訊,請參閱專案GitHub儲存庫中的讀我檔案。

如需使用 WSL2 在 Windows 中設定建置環境的指示,請參閱。在 Windows 中設置開發環境

匯入應用程式

如果您使用的是範例應用程式或第三方提供的應用程式,請使用 AWS Panorama 應用程式 CLI 匯入應用程式。

my-app$ panorama-cli import-application

此指令會使用您的帳戶 ID 重新命名應用程式套件。套件名稱以部署所在帳戶的帳號 ID 開頭。當您將應用程式部署到多個帳戶時,您必須為每個帳戶分別匯入和封裝應用程式。

例如,本指南的範例應用程式是程式碼套件和模型套件,每個套件都以預留位置帳戶 ID 命名。命import-application令會重新命名這些項目,以使用 CLI 從您的工作區認證推斷出的AWS帳戶 ID。

/aws-panorama-sample ├── assets ├── graphs │   └── my-app │   └── graph.json └── packages    ├── 123456789012-SAMPLE_CODE-1.0    │   ├── Dockerfile    │   ├── application.py    │   ├── descriptor.json    │   ├── package.json    │   ├── requirements.txt    │   └── squeezenet_classes.json    └── 123456789012-SQUEEZENET_PYTORCH-1.0    ├── descriptor.json    └── package.json

123456789012在包目錄名稱和應用程序 manifest(graph.json)中引用它們的帳戶 ID 替換為您的帳戶 ID。您可以撥打電話aws sts get-caller-identity來確認您的帳戶 ID AWS CLI。

$ aws sts get-caller-identity { "UserId": "AIDAXMPL7W66UC3GFXMPL", "Account": "210987654321", "Arn": "arn:aws:iam::210987654321:user/devenv" }

建立容器映像檔

您的應用程式程式碼會封裝在 Docker 容器映像中,其中包含您在 Dockerfile 中安裝的應用程式程式碼和程式庫。使用 AWS 全景應用程式 CLI build-container 命令建立 Docker 映像檔並匯出檔案系統映像檔。

my-app$ panorama-cli build-container --container-asset-name code_asset --package-path packages/210987654321-SAMPLE_CODE-1.0 { "name": "code_asset", "implementations": [ { "type": "container", "assetUri": "5fa5xmplbc8c16bf8182a5cb97d626767868d3f4d9958a4e49830e1551d227c5.tar.gz", "descriptorUri": "1872xmpl129481ed053c52e66d6af8b030f9eb69b1168a29012f01c7034d7a8f.json" } ] } Container asset for the package has been succesfully built at assets/5fa5xmplbc8c16bf8182a5cb97d626767868d3f4d9958a4e49830e1551d227c5.tar.gz

此指令會建立名為的 Docker 映像檔,code_asset並將檔案系統匯出至assets資料夾中的.tar.gz歸檔。CLI 從亞馬遜彈性容器註冊表(亞馬遜 ECR)中提取應用程序基礎映像,如應用程序的碼頭文件中的指定。

除了容器歸檔之外,CLI 還會為套件描述元 (descriptor.json) 建立資產。這兩個檔案都會以反映原始檔案雜湊的唯一識別碼來重新命名。AWS 全景應用程式 CLI 也會在套件組態中新增一個區塊,以記錄這兩個資產的名稱。在部署程序期間,應用裝置會使用這些名稱。

範例 套件 /123456789012-範例代碼 -1.0/封裝檔 — 含資產區塊
{ "nodePackage": { "envelopeVersion": "2021-01-01", "name": "SAMPLE_CODE", "version": "1.0", "description": "Computer vision application code.", "assets": [ { "name": "code_asset", "implementations": [ { "type": "container", "assetUri": "5fa5xmplbc8c16bf8182a5cb97d626767868d3f4d9958a4e49830e1551d227c5.tar.gz", "descriptorUri": "1872xmpl129481ed053c52e66d6af8b030f9eb69b1168a29012f01c7034d7a8f.json" } ] } ], "interfaces": [ { "name": "interface", "category": "business_logic", "asset": "code_asset", "inputs": [ { "name": "video_in", "type": "media" },

build-container命令中指定的程式碼資產名稱必須與套件組態中的asset欄位值相符。在前面的例子中,兩個值都是code_asset

匯入模型

您的應用程式可能在其 assets 資料夾中有模型歸檔,或者您分別下載。如果您有新模型、更新的模型或更新的模型描述元檔案,請使用add-raw-model指令匯入它。

my-app$ panorama-cli add-raw-model --model-asset-name model_asset \ --model-local-path my-model.tar.gz \ --descriptor-path packages/210987654321-SQUEEZENET_PYTORCH-1.0/descriptor.json \ --packages-path packages/210987654321-SQUEEZENET_PYTORCH-1.0

如果您只需要更新描述符文件,則可以重複使用 assets 目錄中的現有模型。您可能需要更新描述器檔案,以配置諸如浮點精確度模式之類的功能。例如,下列指令碼顯示如何使用範例應用程式執行此操作。

範例 實用程序腳本/.sh update-model-config
#!/bin/bash set -eo pipefail MODEL_ASSET=fd1axmplacc3350a5c2673adacffab06af54c3f14da6fe4a8be24cac687a386e MODEL_PACKAGE=SQUEEZENET_PYTORCH ACCOUNT_ID=$(ls packages | grep -Eo '[0-9]{12}' | head -1) panorama-cli add-raw-model --model-asset-name model_asset --model-local-path assets/${MODEL_ASSET}.tar.gz --descriptor-path packages/${ACCOUNT_ID}-${MODEL_PACKAGE}-1.0/descriptor.json --packages-path packages/${ACCOUNT_ID}-${MODEL_PACKAGE}-1.0 cp packages/${ACCOUNT_ID}-${MODEL_PACKAGE}-1.0/package.json packages/${ACCOUNT_ID}-${MODEL_PACKAGE}-1.0/package.json.bup

在使用 CLI 重新匯入模型套件目錄中的描述元檔案之前,不會套用對該描述元檔案的變更。CLI 會使用新的資產名稱就地更新模型套件組態,類似於當您重建容器時更新應用程式程式碼套件的組態。

上傳應用程式資

要上傳和註冊應用程序的資產,其中包括模型歸檔,容器文件系統歸檔和它們的描述符文件,請使用package-application命令。

my-app$ panorama-cli package-application Uploading package SQUEEZENET_PYTORCH Patch version for the package 5d3cxmplb7113faa1d130f97f619655d8ca12787c751851a0e155e50eb5e3e96 Deregistering previous patch version e845xmpl8ea0361eb345c313a8dded30294b3a46b486dc8e7c174ee7aab29362 Asset fd1axmplacc3350a5c2673adacffab06af54c3f14da6fe4a8be24cac687a386e.tar.gz already exists, ignoring upload upload: assets/87fbxmpl6f18aeae4d1e3ff8bbc6147390feaf47d85b5da34f8374974ecc4aaf.json to s3://arn:aws:s3:us-east-2:212345678901:accesspoint/panorama-210987654321-6k75xmpl2jypelgzst7uux62ye/210987654321/nodePackages/SQUEEZENET_PYTORCH/binaries/87fbxmpl6f18aeae4d1e3ff8bbc6147390feaf47d85b5da34f8374974ecc4aaf.json Called register package version for SQUEEZENET_PYTORCH with patch version 5d3cxmplb7113faa1d130f97f619655d8ca12787c751851a0e155e50eb5e3e96 ...

如果資產檔案或套件組態沒有任何變更,CLI 會略過它。

Uploading package SAMPLE_CODE Patch Version ca91xmplca526fe3f07821fb0c514f70ed0c444f34cb9bd3a20e153730b35d70 already registered, ignoring upload Register patch version complete for SQUEEZENET_PYTORCH with patch version 5d3cxmplb7113faa1d130f97f619655d8ca12787c751851a0e155e50eb5e3e96 Register patch version complete for SAMPLE_CODE with patch version ca91xmplca526fe3f07821fb0c514f70ed0c444f34cb9bd3a20e153730b35d70 All packages uploaded and registered successfully

CLI 會將每個套件的資產上傳到您帳戶專屬的 Amazon S3 存取點。AWS 全景會為您管理存取點,並透過 DescribePackageAPI 提供存取點的相關資訊。CLI 會將每個套件的資產上傳到為該套件提供的位置,並使用套件組態描述的設定向 AWS Panorama 服務註冊這些資產。

使用 AWS 全景主控台部署應用程式

您可以使用 AWS 全景主控台部署應用程式。在部署過程中,您可以選擇要傳遞給應用程式程式碼的攝影機串流,並設定應用程式開發人員提供的選項。

若要部署應用程式
  1. 開啟 AWS 全景主控台已部署的應用程式頁面

  2. 選擇部署應用程式

  3. 將應用程式資訊清單的內容貼到文字編輯器中。graph.json選擇 下一步

  4. 輸入名稱和解除選項。

  5. 選擇繼續進行部署

  6. 選擇 [開始部署]。

  7. 如果您的應用程式使用角色,請從下拉式功能表中選擇角色。選擇 下一步

  8. 選擇 [選取裝置],然後選擇您的設備。選擇 下一步

  9. 在 [選取資料來源] 步驟中,選擇 [檢視輸入],然後將您的攝影機串流新增為資料來源。選擇 下一步

  10. 在 [設] 步驟中,設定開發人員定義的任何應用程式特定設定。選擇 下一步

  11. 選擇 [部署],然後選擇 [完成]。

  12. 在已部署的應用程式清單中,選擇要監視其狀態的應用程式。

部署過程需要 15-20 分鐘。應用程式啟動時,設備的輸出可以長時間保持空白。如果遇到錯誤,請參閱疑難排解

自動化應用部署

您可以使用 CreateApplicationInstanceAPI 自動化應用程式部署程序。該 API 需要兩個配置文件作為輸入。應用程序清單指定使用的包及其關係。第二個檔案是覆寫檔案,指定應用程式資訊清單中值的部署時間覆寫。使用覆寫檔案可讓您使用相同的應用程式資訊清單,以不同的攝影機串流部署應用程式,以及設定其他應用程式特定的設定。

如需本主題中每個步驟的詳細資訊和範例指令碼,請參閱自動化應用部署