애플리케이션 이미지 구축 - AWS Panorama

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

애플리케이션 이미지 구축

AWS Panorama 어플라이언스는 구축한 이미지에서 내보낸 컨테이너 파일 시스템으로 애플리케이션을 실행합니다. AWS Panorama 애플리케이션 기본 이미지를 시작점으로 사용하는 Dockerfile에서 애플리케이션의 종속 파일과 리소스를 지정합니다.

애플리케이션 이미지를 빌드하려면 Docker와 AWS Panorama Application CLI를 사용하십시오. 이 설명서의 샘플 애플리케이션에 있는 다음 예시는 이러한 사용 사례를 보여줍니다.

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 – 빌드 중에 이미지에서 셸 명령을 실행합니다. 단일 RUN 작업은 명령 사이에 &&을 사용하여 여러 명령을 순차적으로 실행할 수 있습니다. 이 예시는 pip 패키지 관리자를 업데이트한 다음 requirements.txt에 나열된 라이브러리를 설치합니다.

빌드 시 유용한 기타 지침(예: ADDARG)을 사용할 수 있습니다. 컨테이너에 런타임 정보를 추가하는 명령(예: ENV)은 AWS Panorama와 함께 사용할 수 없습니다. AWS Panorama는 해당 이미지에서 컨테이너를 실행하지 않습니다. 이미지를 사용하여 파일 시스템을 내보내고, 파일 시스템은 어플라이언스로 전송됩니다.

종속 파일 지정

requirements.txt는 애플리케이션에서 사용하는 라이브러리를 지정하는 Python 요구 사항 파일입니다. 샘플 애플리케이션은 Open CV와 AWS SDK for Python (Boto3)를 사용합니다.

packages/123456789012-SAMPLE_CODE-1.0/requirements.txt
boto3==1.24.* opencv-python==4.6.*

Dockerfile의 pip install 명령은 이러한 라이브러리를 애플리케이션 코드에서 가져올 수 있도록 /usr/local/lib 아래의 Python dist-packages 디렉토리에 설치합니다.

로컬 스토리지

AWS Panorama는 애플리케이션 스토리지용 /opt/aws/panorama/storage 디렉토리를 예약합니다. 애플리케이션은 이 경로에서 파일을 생성하고 수정할 수 있습니다. 스토리지 디렉토리에 생성된 파일은 재부팅 후에도 유지됩니다. 다른 임시 파일 위치는 부팅 시 지워집니다.

이미지 자산 구축

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는 애플리케이션 스크립트(애플리케이션의 진입점) 경로를 지정하는 설명자 파일을 복사합니다.

packages/123456789012-SAMPLE_CODE-1.0/descriptor.json
{ "runtimeDescriptor": { "envelopeVersion": "2021-01-01", "entry": { "path": "python3", "name": "/panorama/application.py" } } }

자산 폴더에서 설명자와 애플리케이션 이미지는 SHA-256 체크섬의 이름을 따서 명명됩니다. 이 이름은 자산이 Amazon S3에 저장될 때 해당 자산의 고유 식별자로 사용됩니다.