

終止支援通知：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-image"></a>

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

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

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

```
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
```

使用下列 Dockerfile 指示。

****
+ `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 Panorama 不會從映像執行容器。它只會使用映像來匯出檔案系統，該系統會傳輸至設備。

## 指定相依性
<a name="applications-image-dependencies"></a>

`requirements.txt` 是一種 Python 需求檔案，可指定應用程式使用的程式庫。範例應用程式使用 Open CV 和 適用於 Python (Boto3) 的 AWS SDK。

**Example [package/123456789012-SAMPLE\$1CODE-1.0/requirements.txt](https://github.com/awsdocs/aws-panorama-developer-guide/blob/main/sample-apps/aws-panorama-sample/packages/123456789012-SAMPLE_CODE-1.0/requirements.txt)**  

```
boto3==1.24.*
opencv-python==4.6.*
```

Dockerfile 中的 `pip install`命令會將這些程式庫安裝到 下的 Python `dist-packages`目錄`/usr/local/lib`，以便您的應用程式程式碼可以匯入這些程式庫。

## 本機儲存體
<a name="applications-image-storage"></a>

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

## 建置映像資產
<a name="applications-image-build"></a>

當您使用 AWS Panorama Application 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 Panorama 服務註冊。CLI 也會複製描述項檔案，指定應用程式指令碼的路徑 （應用程式的進入點）。

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

```
{
    "runtimeDescriptor":
    {
        "envelopeVersion": "2021-01-01",
        "entry":
        {
            "path": "python3",
            "name": "/panorama/application.py"
        }
    }
}
```

在資產資料夾中，描述符和應用程式映像會針對其 SHA-256 檢查總和命名。儲存資產時，此名稱會用作資產的唯一識別符，即為 Amazon S3。