

지원 종료 알림: 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 Application 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 Application CLI 설치
<a name="applications-deploy-install"></a>

AWS Panorama Application CLI를 설치하려면 pip를 AWS CLI사용합니다.

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

AWS Panorama Application CLI로 애플리케이션 이미지를 빌드하려면 Docker가 필요합니다. Linux에서는 `qemu`와 관련 시스템 라이브러리도 필요합니다. AWS Panorama Application 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`는 패키지 디렉토리 이름과 이를 참조하는 애플리케이션 매니페스트(`graph.json`)에서 계정 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"
}
```

## 컨테이너 이미지 빌드
<a name="applications-deploy-build"></a>

애플리케이션 코드는 Dockerfile에 설치한 애플리케이션 코드와 라이브러리가 포함된 Docker 컨테이너 이미지에 패키징됩니다. AWS Panorama Application CLI `build-container` 명령을 사용하여 도커 이미지를 구축하고 파일 시스템 이미지를 내보냅니다.

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

이 명령은 `code_asset`이라는 이름의 도커 이미지를 생성하고 파일 시스템을 `assets` 폴더의 `.tar.gz` 아카이브로 내보냅니다. CLI는 애플리케이션의 Dockerfile에 지정된 대로 Amazon Elastic Container Registry(Amazon ECR)에서 애플리케이션 기본 이미지를 가져옵니다.

CLI는 컨테이너 아카이브 외에도 패키지 설명자(`descriptor.json`)에 대한 자산을 생성합니다. 두 파일 모두 원본 파일의 해시를 반영하는 고유 식별자로 이름이 바뀝니다. 또한 AWS Panorama Application CLI는 두 자산의 이름을 기록하는 블록을 패키지 구성에 추가합니다. 이러한 이름은 배포 프로세스 중에 어플라이언스에서 사용됩니다.

**Example [packages/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\$120분이 걸립니다. 애플리케이션이 시작되는 동안 어플라이언스의 출력이 오랫동안 비어 있을 수 있습니다. 오류가 발생하는 경우 [문제 해결](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) 단원을 참조하십시오.