

サポート終了通知: 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 アプライアンス は、構築したイメージからエクスポートされたコンテナファイルシステムとしてアプリケーションを実行します。アプリケーションの依存関係とリソースは、AWS Panorama アプリケーションのベースイメージを開始点として使用する Dockerfile で指定します。

アプリケーションイメージを構築するには、Docker と AWS Panorama アプリケーション CLI を使用します。このガイドのサンプルアプリケーションの次の例は、これらのユースケースを示しています。

**Example [packages/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` — 構築中にイメージ上でシェルコマンドを実行します。コマンド間に `&&` を使用することで、1回の `RUN` 操作で複数のコマンドを順番に実行することができます。この例では、`pip` パッケージマネージャーを更新し、`requirements.txt` に記載されているライブラリをインストールします。

`ADD` や `ARG` など、構築時に役立つ他の指示も使用できます。`ENV` のような、ランタイム情報をコンテナに追加する指示は、AWS Panorama では機能しません。AWS Panorama はイメージからコンテナを実行しません。イメージを使用してファイルシステムをエクスポートし、アプライアンスに転送するだけです。

## 依存関係の指定
<a name="applications-image-dependencies"></a>

`requirements.txt` は、アプリケーションが使用するライブラリを指定する Python 要件ファイルです。サンプルアプリケーションは Open CV と AWS SDK for Python (Boto3)を使用しています。

**Example [packages/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` コマンドは、これらのライブラリを `/usr/local/lib` の Python `dist-packages` ディレクトリにインストールし、アプリケーションコードでインポートできるようにします。

## ローカルストレージ
<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 [packages/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 に保存されるときに、アセットの一意の識別子として使用されます。