

終止支援通知：2026 年 5 月 31 日， AWS 將終止對 的支援 AWS Panorama。2026 年 5 月 31 日之後，您將無法再存取 AWS Panorama 主控台或 AWS Panorama 資源。如需詳細資訊，請參閱[AWS Panorama 終止支援](https://docs.aws.amazon.com/panorama/latest/dev/panorama-end-of-support.html)。

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

# 部署應用程式
<a name="applications-deploy"></a>

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

如果您尚未部署應用程式，請參閱 [入門 AWS Panorama](panorama-gettingstarted.md)以取得逐步解說。

如需自訂和延伸範例應用程式的詳細資訊，請參閱[建置 AWS Panorama 應用程式](panorama-development.md)。

**Topics**
+ [安裝 AWS Panorama 應用程式 CLI](#applications-deploy-install)
+ [匯入應用程式](#applications-deploy-import)
+ [建置容器映像](#applications-deploy-build)
+ [匯入模型](#applications-deploy-model)
+ [上傳應用程式資產](#applications-deploy-package)
+ [使用 AWS Panorama 主控台部署應用程式](#applications-manage-deploy)
+ [自動化應用程式部署](#applications-deploy-automate)

## 安裝 AWS Panorama 應用程式 CLI
<a name="applications-deploy-install"></a>

若要安裝 AWS Panorama 應用程式 CLI 和 AWS CLI，請使用 pip。

```
$ pip3 install --upgrade awscli panoramacli
```

若要使用 AWS Panorama 應用程式 CLI 建置應用程式映像，您需要 Docker。在 Linux 上， `qemu`和相關的系統程式庫也是必要的。如需安裝和設定 AWS Panorama 應用程式 CLI 的詳細資訊，請參閱專案 GitHub 儲存庫中的 README 檔案。

****
+ [github.com/aws/aws-panorama-cli](https://github.com/aws/aws-panorama-cli)

如需使用 WSL2 在 Windows 中設定建置環境的說明，請參閱 [在 Windows 中設定開發環境](applications-devenvwindows.md)。

## 匯入應用程式
<a name="applications-deploy-import"></a>

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

```
my-app$ panorama-cli import-application
```

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

例如，本指南的範例應用程式包含程式碼套件和模型套件，每個套件都以預留位置帳戶 ID 命名。`import-application` 命令會重新命名這些項目，以使用 CLI 從工作區的 AWS 登入資料推論的帳戶 ID。

```
/aws-panorama-sample
├── assets
├── graphs
│   └── my-app
│       └── [graph.json](https://github.com/awsdocs/aws-panorama-developer-guide/blob/main/sample-apps/aws-panorama-sample/graphs/my-app/graph.json)
└── packages
    ├── [123456789012-SAMPLE\$1CODE-1.0](https://github.com/awsdocs/aws-panorama-developer-guide/blob/main/sample-apps/aws-panorama-sample/packages/123456789012-SAMPLE_CODE-1.0)
    │   ├── Dockerfile
    │   ├── application.py
    │   ├── descriptor.json
    │   ├── package.json
    │   ├── requirements.txt
    │   └── squeezenet_classes.json
    └── [123456789012-SQUEEZENET\$1PYTORCH-1.0](https://github.com/awsdocs/aws-panorama-developer-guide/blob/main/sample-apps/aws-panorama-sample/packages/123456789012-SQUEEZENET_PYTORCH-1.0)
        ├── descriptor.json
        └── package.json
```

`123456789012` 會在套件目錄名稱中，以您的帳戶 ID 取代，並在應用程式資訊清單 (`graph.json`) 中取代，而這些清單是參考。您可以使用 呼叫 `aws sts get-caller-identity` 來確認您的帳戶 ID AWS CLI。

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

## 建置容器映像
<a name="applications-deploy-build"></a>

您的應用程式碼封裝在 Docker 容器映像中，其中包含您在 Dockerfile 中安裝的應用程式碼和程式庫。使用 AWS Panorama Application 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 會從 Amazon Elastic Container Registry (Amazon ECR) 提取應用程式基礎映像，如應用程式的 Dockerfile 中所指定。

除了容器封存之外，CLI 還會為套件描述項 () 建立資產`descriptor.json`。這兩個檔案都會重新命名為唯一識別符，反映原始檔案的雜湊。AWS Panorama Application CLI 也會在記錄兩個資產名稱的套件組態中新增區塊。在部署過程中，設備會使用這些名稱。

**Example [package/123456789012-SAMPLE\$1CODE-1.0/package.json](https://github.com/awsdocs/aws-panorama-developer-guide/blob/main/sample-apps/aws-panorama-sample/packages/123456789012-SAMPLE_CODE-1.0/package.json) – 含資產區塊**  

```
{
    "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`。

## 匯入模型
<a name="applications-deploy-model"></a>

您的應用程式可能在其資產資料夾中有模型封存，或者您可以分別下載。如果您有新的模型、更新的模型或更新的模型描述項檔案，請使用 `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
```

如果您只需要更新描述項檔案，則可以重複使用資產目錄中的現有模型。您可能需要更新描述項檔案，才能設定浮點精確度模式等功能。例如，以下指令碼示範如何使用範例應用程式執行此操作。

**Example [util-scripts/update-model-config.sh](https://github.com/awsdocs/aws-panorama-developer-guide/blob/main/util-scripts/update-model-config.sh)**  

```
#!/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 會使用新的資產名稱來更新模型套件組態，類似於在重建容器時更新應用程式程式碼套件組態的方式。

## 上傳應用程式資產
<a name="applications-deploy-package"></a>

若要上傳和註冊應用程式的資產，包括模型封存、容器檔案系統封存及其描述項檔案，請使用 `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 Panorama 會為您管理存取點，並透過 [DescribePackage](https://docs.aws.amazon.com/panorama/latest/api/API_DescribePackage.html) API 提供相關資訊。CLI 會將每個套件的資產上傳至該套件提供的位置，並使用套件組態所述的設定向 AWS Panorama 服務註冊資產。

## 使用 AWS Panorama 主控台部署應用程式
<a name="applications-manage-deploy"></a>

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

**部署應用程式**

1. 開啟 AWS Panorama 主控台[部署的應用程式頁面](https://console.aws.amazon.com/panorama/home#deployed-applications)。

1. 選擇**部署應用程式**。

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

1. 輸入名稱和解壓縮。

1. 選擇**繼續以部署**。

1. 選擇**開始部署**。

1. 如果您的應用程式[使用角色](permissions-application.md)，請從下拉式功能表中選擇它。選擇 **Next (下一步)**。

1. 選擇**選取裝置**，然後選擇您的設備。選擇 **Next (下一步)**。

1. 在**選取資料來源**步驟中，選擇**檢視輸入**，然後將攝影機串流新增為資料來源。選擇 **Next (下一步)**。

1. 在**設定**步驟中，設定開發人員定義的任何應用程式特定設定。選擇 **Next (下一步)**。

1. 選擇**部署**，然後選擇**完成**。

1. 在部署的應用程式清單中，選擇要監控其狀態的應用程式。

部署程序需要 15-20 分鐘。當應用程式啟動時，設備的輸出可以長時間空白。如果您遇到錯誤，請參閱 [疑難排解](panorama-troubleshooting.md)。

## 自動化應用程式部署
<a name="applications-deploy-automate"></a>

您可以使用 [CreateApplicationInstance](https://docs.aws.amazon.com/panorama/latest/api/API_CreateApplicationInstance.html) API 自動化應用程式部署程序。API 會取得兩個組態檔案做為輸入。應用程式資訊清單會指定使用的套件及其關係。第二個檔案是覆寫檔案，指定應用程式資訊清單中值的部署時間覆寫。使用覆寫檔案可讓您使用相同的應用程式資訊清單，以不同的攝影機串流部署應用程式，並設定其他應用程式特定的設定。

如需詳細資訊，以及本主題中每個步驟的範例指令碼，請參閱 [自動化應用程式部署](api-deploy.md)。