建立應用程式影像 - AWS Panorama

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

建立應用程式影像

AWS Panorama 設備會以容器檔案系統的形式執行應用程式,從您建立的映像匯出。您可以在使用 AWS Panorama 應用程式基礎映像作為起點的 Dockerfile 中指定應用程式的相依性和資源。

若要建立應用程式映像,請使用 Docker 和 AWS 全景應用程式 CLI。本指南範例應用程式的下列範例示範了這些使用案例。

範例 套件 /123456789012-樣本 _ 程式碼頭檔案
FROM public.ecr.aws/panorama/panorama-application WORKDIR /panorama COPY . . RUN pip install --no-cache-dir --upgrade pip && \ pip install --no-cache-dir -r requirements.txt

下面的碼頭文件指令被使用。

  • FROM— 載入應用程式基礎影像 (public.ecr.aws/panorama/panorama-application)。

  • WORKDIR— 設定影像上的工作目錄。 /panorama用於應用程序代碼和相關文件。此設定只會在建置期間持續存在,不會影響執行階段應用程式的工作目錄 (/)。

  • COPY— 將檔案從本機路徑複製到影像上的路徑。 COPY . .將目前目錄 (套件目錄) 中的檔案複製到影像上的工作目錄中。例如,應用程式程式碼會從複製packages/123456789012-SAMPLE_CODE-1.0/application.py/panorama/application.py

  • RUN-在構建過程中在映像上運行 shell 命令。單個RUN操作可以通過在命令&&之間使用順序運行多個命令。此範例會更新pip套件管理員,然後安裝中列出的程式庫requirements.txt

您可以使用在構建時非常有用的其他指令ARG,例如ADD和。將執行階段資訊新增至容器的指示 (例如ENV,不適用於 AWS Panorama)。AWS 全景圖不會從映像執行容器。它僅使用影像匯出檔案系統,該檔案系統會傳輸至設備。

指定相依性

requirements.txt是指定應用程式所使用的程式庫的 Python 需求檔案。範例應用程式使用 Open CV 和AWS SDK for Python (Boto3).

範例 套裝軟體包 /樣本 _ 程式碼 -1.0 要求
boto3==1.24.* opencv-python==4.6.*

Dockerfile 中的pip install命令將這些庫安裝到下面的 Python dist-packages 目錄中/usr/local/lib,以便可以通過應用程序代碼導入它們。

本機儲存

AWS 全景圖會保留應用程式儲存的/opt/aws/panorama/storage目錄。您的應用程式可以在此路徑上建立和修改檔案。在儲存目錄中建立的檔案會在重新開機時持續存在。開機時會清除其他暫存檔案位置。

建立影像資產

當您使用 AWS 全景應用程式 CLI 為應用程式套件建立映像時,CLI 會docker build在套件目錄中執行。這會建立包含應用程式程式碼的應用程式映像檔。然後 CLI 會建立容器、匯出其檔案系統、壓縮,並將其儲存在assets資料夾中。

$ panorama-cli build-container --container-asset-name code_asset --package-path packages/123456789012-SAMPLE_CODE-1.0 docker build -t code_asset packages/123456789012-SAMPLE_CODE-1.0 --pull docker export --output=code_asset.tar $(docker create code_asset:latest) gzip -1 code_asset.tar { "name": "code_asset", "implementations": [ { "type": "container", "assetUri": "6f67xmpl32743ed0e60c151a02f2f0da1bf70a4ab9d83fe236fa32a6f9b9f808.tar.gz", "descriptorUri": "1872xmpl129481ed053c52e66d6af8b030f9eb69b1168a29012f01c7034d7a8f.json" } ] } Container asset for the package has been succesfully built at /home/user/aws-panorama-developer-guide/sample-apps/aws-panorama-sample/assets/6f67xmpl32743ed0e60c151a02f2f0da1bf70a4ab9d83fe236fa32a6f9b9f808.tar.gz

輸出中的 JSON 區塊是 CLI 新增至套件組態 (package.json) 並向 AWS 全景服務註冊的資產定義。CLI 也會複製描述器檔案,該檔案會指定應用程式指令碼 (應用程式的入口點) 的路徑。

範例 套件/程式碼
{ "runtimeDescriptor": { "envelopeVersion": "2021-01-01", "entry": { "path": "python3", "name": "/panorama/application.py" } } }

在 assets 資料夾中,描述器和應用程式影像會以其 SHA-256 總和檢查碼命名。此名稱在 Amazon S3 存放資產時,會用作資產的唯一識別碼。