소프트웨어 패키지 카탈로그 사용 준비 - AWS IoT Core

소프트웨어 패키지 카탈로그 사용 준비

아래 섹션에서는 패키지 버전 수명 주기에 대한 개요와 AWS IoT Device Management 소프트웨어 패키지 카탈로그 사용에 대한 정보를 제공합니다.

패키지 버전 수명 주기

패키지 버전은 draft, published, 및 deprecated와 같은 수명 주기 상태를 따라 변화할 수 있습니다. deleted 상태일 수도 있습니다.

Draft, Published, Deprecated 상태를 거치는 패키지 버전 수명 주기. Deleted 상태일 수도 있습니다.
  • Draft

    패키지 버전이 생성되면 draft 상태가 됩니다. 이 상태는 소프트웨어 패키지가 준비 중이거나 불완전함을 나타냅니다.

    패키지 버전이 이 상태인 동안에는 배포할 수 없습니다. 패키지 버전의 설명, 속성 및 태그를 편집할 수 있습니다.

    콘솔을 사용하거나 UpdatePackageVersion 또는 DeletePackageVersion API 작업을 실행하여 현재 draft 상태에 있는 패키지 버전을 published 상태로 전환하거나 deleted 상태로 만들 수 있습니다.

  • Published

    패키지 버전을 배포할 준비가 되면 패키지 버전을 published 상태로 전환하세요. 이 상태에서는 콘솔에서 소프트웨어 패키지를 편집하거나 UpdatePackage API 작업을 통해 패키지 버전을 기본 버전으로 지정할 수 있습니다. 이 상태에서는 설명과 태그만 편집할 수 있습니다.

    콘솔을 사용하거나 UpdatePackageVersion 또는 DeletePackageVersion API 작업을 실행하여 현재 published 상태에 있는 패키지 버전을 deprecated 상태로 전환하거나 deleted 상태로 만들 수 있습니다.

  • Deprecated

    새 패키지 버전을 사용할 수 있는 경우 이전 패키지 버전을 deprecated로 전환할 수 있습니다. 더 이상 사용되지 않는 패키지 버전으로 작업을 배포할 수 있습니다. 사용되지 않는 패키지 버전의 이름을 기본 버전으로 지정하고 설명 및 태그만 편집할 수도 있습니다.

    버전이 오래된 경우 패키지 버전을 deprecated로 전환하는 것이 좋지만, 이전 버전을 사용 중이거나 런타임 종속성으로 인해 유지 관리해야 하는 디바이스가 여전히 필드에 있습니다.

    콘솔을 사용하거나 UpdatePackageVersion 또는 DeletePackageVersion API 작업을 실행하여 현재 deprecated 상태에 있는 패키지 버전을 published 상태로 전환하거나 deleted 상태로 만들 수 있습니다.

  • Deleted

    패키지 버전을 더 이상 사용하지 않으려는 경우 콘솔이나 DeletePackageVersion API 작업을 사용하여 삭제할 수 있습니다.

    참고

    패키지 버전을 참조하는 보류 중인 작업이 있을 때 해당 패키지 버전을 삭제하면 작업이 성공적으로 완료되고 명명된 예약 섀도우를 업데이트하려고 하면 오류 메시지가 표시됩니다.

    삭제하려는 소프트웨어 패키지 버전이 기본 패키지 버전으로 명명된 경우 먼저 패키지를 업데이트하여 다른 버전을 기본 버전으로 명명하거나 필드에 이름을 지정하지 않은 상태로 두어야 합니다. 이 작업은 콘솔 또는 UpdatePackageVersion API 작업을 사용하여 수행할 수 있습니다. 명명된 패키지 버전을 기본값에서 제거하려면 UpdatePackage API 작업을 실행할 때 unsetDefaultVersion 파라미터를 참으로 설정하세요.

    콘솔을 통해 소프트웨어 패키지를 삭제하면 기본 버전으로 명명되지 않은 한 해당 패키지와 관련된 모든 패키지 버전이 삭제됩니다.

패키지 버전 명명 규칙

패키지 버전의 이름을 지정할 때는 사용자와 다른 사람들이 최신 패키지 버전과 버전 진행 상황을 쉽게 식별할 수 있도록 논리적인 이름 지정 전략을 계획하고 적용하는 것이 중요합니다. 패키지 버전을 만들 때 버전 이름을 입력해야 하지만 전략과 형식은 주로 비즈니스 사례에 따라 달라집니다.

모범 사례로 시맨틱 버전 관리 SemVer 형식을 사용하는 것이 좋습니다. 예를 들어, 1.2.3에서 1은 기능적으로 호환되지 않는 변경의 메이저 버전이고 2는 기능적으로 호환되는 변경의 메이저 버전이며 3은 패치 버전(버그 수정용)입니다. 자세한 내용을 알아보려면 의미 체계 버전 관리 2.0.0을 참조하세요. 패키지 버전 이름 요구 사항에 대한 자세한 내용은 AWS IoT API 참조 가이드의 versionName을 참조하세요.

기본 버전

버전을 기본값으로 설정하는 것은 선택 사항입니다. 기본 패키지 버전을 추가하거나 제거할 수 있습니다. 기본 버전으로 명명되지 않은 패키지 버전을 배포할 수도 있습니다.

패키지 버전을 만들면 draft 상태가 되며 패키지 버전을 Published로 전환하기 전까지는 기본 버전으로 명명할 수 없습니다. 소프트웨어 패키지 카탈로그는 자동으로 버전을 기본 버전으로 선택하거나 새 패키지 버전을 기본 버전으로 업데이트하지 않습니다. 콘솔을 통해 또는 UpdatePackageVersion API 작업을 실행하여 선택한 패키지 버전의 이름을 의도적으로 지정해야 합니다.

버전 속성

버전 속성 및 해당 값에는 패키지 버전에 대한 중요한 정보가 들어 있습니다. 패키지 또는 패키지 버전의 범용 속성을 정의하는 것이 좋습니다. 예를 들어 플랫폼, 아키텍처, 운영 체제, 출시일, 작성자 또는 Amazon S3 URL에 대한 이름-값 페어를 생성할 수 있습니다.

작업 문서로 AWS IoT 작업을 생성할 때 속성 값을 참조하는 대체 변수($parameter)를 사용할 수도 있습니다. 자세한 내용은 AWS IoT 작업 준비를 참조하세요.

패키지 버전에서 사용되는 버전 속성은 예약 및 명명된 섀도우에 자동으로 추가되지 않으며 플릿 인덱싱을 통해 직접 인덱싱하거나 쿼리할 수 없습니다. 플릿 인덱싱을 통해 패키지 버전 속성을 인덱싱하거나 쿼리하려면 예약 및 명명된 섀도우에 버전 속성을 채우면 됩니다.

예약 및 명명된 섀도우 캡처 디바이스에서 보고한 속성(예: 운영 체제 및 설치 시간)의 버전 속성 파라미터를 사용하는 것이 좋습니다. 플릿 인덱싱을 통해 인덱싱하고 쿼리할 수도 있습니다.

버전 속성에 대한 특정 명명 규칙을 따를 필요는 없습니다. 비즈니스 요구 사항에 맞게 이름-값 페어를 만들 수 있습니다. 패키지 버전의 모든 속성을 합친 크기는 3KB로 제한됩니다. 자세한 내용은 소프트웨어 패키지 카탈로그 소프트웨어 패키지 및 패키지 버전 제한을 참조하세요.

작업 문서의 모든 속성 사용

선택한 디바이스의 작업 배포에 모든 패키지 버전 속성을 자동으로 추가할 수 있습니다. API 또는 CLI 명령에서 프로그래밍 방식으로 모든 패키지 버전 속성을 자동으로 사용하려면 다음 작업 문서 예제를 참조하세요.

"TestPackage": "${aws:iot:package:TestPackage:version:PackageVersion:attributes}"

소프트웨어 재료표

소프트웨어 재료표(SBOM)는 소프트웨어 패키지의 모든 측면을 위한 중앙 리포지토리를 제공합니다. 소프트웨어 패키지 및 패키지 버전을 저장하는 것 외에도 각 패키지 버전과 연결된 소프트웨어 재료표(SBOM)를 AWS IoT Device Management Software Package Catalog에 저장할 수 있습니다. 소프트웨어 패키지에는 하나 이상의 패키지 버전이 포함되어 있으며 각 패키지 버전은 하나 이상의 구성 요소로 구성됩니다. 특정 패키지 버전의 구성을 지원하는 각 구성 요소는 소프트웨어 재료표를 사용하여 설명하고 카탈로그화할 수 있습니다. 지원되는 소프트웨어 재료표에 대한 업계 표준은 SPDX 및 CycloneDX 입니다. SBOM이 처음 생성되면 SPDX 및 CycloneDX 산업 표준 형식에 대한 검증을 거칩니다. SPDX에 대한 자세한 내용은 시스템 패키지 데이터 교환을 참조하세요. CycloneDX에 대한 자세한 내용은 CycloneDX를 참조하세요.

소프트웨어 자료표는 패키지 정보, 파일 정보 및 기타 관련 메타데이터와 같은 특정 패키지 버전 구성 요소의 모든 측면을 설명합니다. SPDX 형식의 소프트웨어 재료표 문서 구조의 아래 예제를 참조하세요.

SPDX 형식의 SBOM 예제입니다.

소프트웨어 재료표 이점

Software Package Catalog의 패키지 버전에 대한 소프트웨어 재료 명세서를 추가할 때 얻을 수 있는 주요 이점 중 하나는 취약성 관리입니다.

취약성 관리

소프트웨어 구성 요소의 명백한 보안 위험에 대한 취약성을 평가하고 완화하는 것은 디바이스 플릿의 무결성을 보호하는 데 여전히 중요합니다. 각 패키지 버전에 대해 Software Package Catalog에 저장된 소프트웨어 자료 명세서를 추가하면 자체 취약성 관리 솔루션을 사용하여 패키지 버전 및 SBOM을 기반으로 어떤 디바이스가 위험에 처했는지 파악하여 보안 격차를 사전에 파악할 수 있습니다. 영향을 받는 디바이스에 수정 사항을 배포하고 디바이스 플릿을 보호할 수 있습니다.

소프트웨어 재료표 스토리지

각 소프트웨어 패키지 버전의 소프트웨어 재료표(SBOM)는 Amazon S3 버전 관리 기능을 사용하여 Amazon S3 버킷에 저장됩니다. SBOM을 저장하는 Amazon S3 버킷은 패키지 버전이 생성된 동일한 리전에 있어야 합니다. 버전 관리 기능을 사용하는 Amazon S3 버킷은 동일한 버킷에 객체의 여러 변형을 유지합니다. Amazon S3 버킷에서 버전 관리를 사용하는 방법에 대한 자세한 내용은 Amazon S3 버킷에서 버전 관리를 참조하세요.

참고

각 소프트웨어 패키지 버전에는 zip 아카이브 파일로 저장된 SBOM 파일이 하나만 있습니다.

버킷의 특정 Amazon S3 키 및 버전 ID는 패키지 버전에 대한 소프트웨어 재료표의 각 버전을 고유하게 식별하는 데 사용됩니다.

참고

단일 SBOM 파일이 있는 패키지 버전의 경우 해당 SBOM 파일을 Amazon S3 버킷에 zip 아카이브 파일로 저장할 수 있습니다.

여러 SBOM 파일이 있는 패키지 버전의 경우 모든 SBOM 파일을 단일 zip 아카이브 파일에 배치한 다음 해당 zip 아카이브 파일을 Amazon S3 버킷에 저장해야 합니다.

두 시나리오 모두에서 단일 zip 아카이브 파일에 저장된 모든 SBOM 파일은 SPDX 또는 CycloneDX .json 파일로 형식이 지정됩니다.

권한 정책

AWS IoT를 위해 지정된 위탁자 역할을 수행하여 Amazon S3 버킷에 저장된 SBOM zip 아카이브 파일에 액세스하려면 리소스 기반 권한 정책이 필요합니다. 올바른 리소스 기반 권한 정책은 다음 예제를 참조하세요.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "iot.amazonaws.com" ] }, "Action": "s3:*", "Resource": "arn:aws:s3:::bucketName/*" } ] }

리소스 기반 정책에 대한 자세한 내용은 AWS IoT 리소스 기반 정책 섹션을 참조하세요.

SBOM 업데이트

디바이스 플릿을 보호하고 강화하는 데 필요한 만큼 자주 소프트웨어 재료표를 업데이트할 수 있습니다. Amazon S3 버킷에서 소프트웨어 재료표가 업데이트될 때마다 버전 ID가 변경되고 Software Package Catalog에 업데이트가 통지되므로 새 Amazon S3 버킷 URL을 적절한 패키지 버전과 연결해야 합니다. AWS Management Console의 패키지 버전 페이지에 있는 Amazon S3 객체 버전 ID 열에 새 버전 ID가 표시됩니다. 또한 API 작업 GetPackageVersion 또는 CLI 명령 get-package-version을 사용하여 새 버전 ID를 볼 수 있습니다.

참고

새 버전 ID를 발생시키는 소프트웨어 재료 명세서를 업데이트해도 새 패키지 버전이 생성되지 않습니다.

Amazon S3 객체 키에 대한 자세한 내용은 객체 키 이름 생성을 참조하세요.

AWS IoT 플릿 인덱싱 활성화

Software Package Catalog를 사용하여 AWS IoT 플릿 인덱싱을 활용하려면 예약된 명명 섀도($package)를 인덱싱하고 지표를 수집하려는 각 디바이스의 데이터 소스로 설정합니다. 예약된 명명 섀도에 대한 자세한 내용은 명명된 예약 섀도우 섹션을 참조하세요.

플릿 인덱싱은 소프트웨어 패키지 버전별로 필터링되는 동적 사물 그룹을 통해 AWS IoT 사물을 그룹화할 수 있는 지원을 제공합니다. 예를 들어 플릿 인덱싱은 특정 패키지 버전이 설치되어 있거나 설치되지 않은 사물, 패키지 버전이 설치되지 않은 사물, 특정 이름-값 페어와 일치하는 사물을 식별할 수 있습니다. 마지막으로, 플릿 인덱싱은 디바이스 플릿 상태에 대한 인사이트를 얻는 데 사용할 수 있는 표준 및 사용자 지정 지표를 제공합니다. 자세한 내용은 플릿 인덱싱 준비 단원을 참조하십시오.

참고

소프트웨어 패키지 카탈로그에 플릿 인덱싱을 활성화하면 표준 서비스 비용이 발생합니다. 자세한 내용은 AWS IoT Device Management 요금을 참조하세요.

명명된 예약 섀도우

명명된 예약 섀도우인 $package는 디바이스에 설치된 소프트웨어 패키지 및 패키지 버전의 상태를 반영합니다. 플릿 인덱싱은 명명된 예약 섀도우를 데이터 소스로 사용하여 플릿 상태를 쿼리할 수 있도록 표준 및 사용자 지정 지표를 구축합니다. 자세한 내용은 플릿 인덱싱 준비를 참조하세요.

명명된 예약 섀도우는 이름이 미리 정의되어 있고 변경할 수 없다는 점을 제외하면 명명된 섀도우와 비슷합니다. 또한 명명된 예약 섀도우는 메타데이터로 업데이트되지 않고 versionattributes 키워드만 사용합니다.

description과 같은 다른 키워드가 포함된 업데이트 요청은 rejected 주제에서 오류 응답을 받게 됩니다. 자세한 내용은 디바이스 섀도우 오류 메시지지를 참조하세요.

콘솔을 통해 AWS IoT 사물을 생성할 때, AWS IoT 작업이 성공적으로 완료되어 섀도우를 업데이트할 때, UpdateThingShadow API 작업을 실행할 때 생성할 수 있습니다. 자세한 내용은 AWS IoT Core 개발자 안내서의 UpdateThingShadow 섹션을 참조하세요.

참고

명명된 예약 섀도우를 인덱싱해도 플릿 인덱싱이 인덱싱할 수 있는 명명된 섀도우 개수에는 포함되지 않습니다. 자세한 내용은 AWS IoT Device Management 플릿 인덱싱 제한 및 할당량을 참조하세요. 또한 작업이 성공적으로 완료될 때 AWS IoT 작업이 명명된 예약 섀도우를 업데이트하도록 선택하면 API 호출이 디바이스 섀도우 및 레지스트리 작업으로 집계되므로 비용이 발생할 수 있습니다. 자세한 내용은 AWS IoT Device Management 작업 제한 및 할당량IndexingFilter API 데이터 유형을 참조하세요.

$package 섀도우의 구조

명명된 예약 섀도우에는 다음이 포함됩니다.

{ "state": { "reported": { "<packageName>": { "version": "", "attributes": { } } } }, "version" : 1 "timestamp" : 1672531201 }

섀도우 속성이 다음 정보로 업데이트됩니다.

  • <packageName>: 설치된 소프트웨어 패키지의 이름으로, packageName 파라미터로 업데이트됩니다.

  • version: 설치된 소프트웨어 패키지의 버전으로, versionName 파라미터로 업데이트됩니다.

  • attributes: 디바이스가 저장하고 플릿 인덱싱이 인덱싱하는 선택적 메타데이터입니다. 이를 통해 고객은 저장 데이터를 기반으로 인덱스를 쿼리할 수 있습니다.

  • version: 섀도우의 버전 번호입니다. 섀도우가 업데이트되고 1에서 시작될 때마다 자동으로 증가합니다.

  • timestamp: 섀도우가 마지막으로 업데이트된 시간을 나타내며 Unix 시간으로 기록됩니다.

명명된 섀도우의 형식 및 동작에 대한 자세한 내용은 AWS IoT 디바이스 섀도우 서비스 메시지 순서를 참조하세요.

소프트웨어 패키지 및 패키지 버전 삭제

소프트웨어 패키지를 삭제하기 전에 다음 작업을 수행하세요.

  • 패키지와 해당 버전이 활발하게 배포되고 있지 않은지 확인합니다.

  • 먼저 관련 버전을 모두 삭제합니다. 버전 중 하나가 기본 버전으로 지정된 경우 패키지에서 명명된 기본 버전을 제거해야 합니다. 기본 버전 지정은 선택 사항이므로 기본 버전을 제거해도 충돌이 발생하지 않습니다. 소프트웨어 패키지에서 기본 버전을 제거하려면 콘솔을 통해 패키지를 편집하거나 UpdatePackageVersion API 작업을 사용하세요.

명명된 기본 패키지 버전이 없는 한 콘솔을 사용하여 소프트웨어 패키지를 삭제할 수 있으며 해당 패키지 버전도 모두 삭제됩니다. API 호출을 사용하여 소프트웨어 패키지를 삭제하는 경우 먼저 패키지 버전을 삭제한 다음 소프트웨어 패키지를 삭제해야 합니다.