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

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

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

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

패키지 버전 수명 주기

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

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

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

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

    콘솔을 사용하거나 또는 UpdatePackageVersion DeletePackageVersion API 작업을 발급deleted하여 draft 상태published인 패키지 버전을 로 전환할 수 있습니다.

  • Published

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

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

  • Deprecated

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

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

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

  • Deleted

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

    참고

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

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

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

패키지 버전 명명 규칙

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

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

기본 버전

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

패키지 버전을 만들면 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 소프트웨어 패키지 카탈로그에 저장할 수 있습니다. 소프트웨어 패키지에는 하나 이상의 패키지 버전이 포함되어 있으며 각 패키지 버전은 하나 이상의 구성 요소로 구성됩니다. 특정 패키지 버전의 구성을 지원하는 각 구성 요소는 소프트웨어 재료표를 사용하여 설명하고 카탈로그화할 수 있습니다. 지원되는 소프트웨어 재료표에 대한 업계 표준은 SPDX 및 CycloneDX 입니다. SBOM 이 처음 생성되면 SPDX 및 CycloneDX 산업 표준 형식에 대한 검증을 거칩니다. 에 대한 자세한 내용은 시스템 패키지 데이터 교환 섹션을 SPDX참조하세요. CycloneDX 에 대한 자세한 내용은 CycloneDX 참조하세요.

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

SPDX 형식의 예SBOM입니다.

소프트웨어 재료표 이점

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

취약성 관리

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

소프트웨어 자재 명세서 스토리지

각 소프트웨어 패키지 버전의 소프트웨어 재료표(SBOM)는 Amazon S3 버전 관리 기능을 사용하여 Amazon S3 버킷에 저장됩니다. 를 저장하는 Amazon S3 버킷은 패키지 버전이 생성된 리전과 동일한 리전에 있어야 SBOM 합니다. 버전 관리 기능을 사용하는 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가 변경되고 소프트웨어 패키지 카탈로그에 업데이트가 통지되므로 새 Amazon S3 버킷을 적절한 패키지 버전URL과 연결해야 합니다. 의 패키지 버전 페이지에 있는 Amazon S3 객체 버전 ID 열에 새 버전 ID가 표시됩니다 AWS Management Console. 또한 API 작업 GetPackageVersion 또는 CLI 명령을 사용하여 새 버전 ID를 get-package-version 볼 수 있습니다.

참고

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

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

AWS IoT 플릿 인덱싱 활성화

소프트웨어 패키지 카탈로그를 사용하여 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 호출은 Device Shadow 및 레지스트리 작업에 포함되며 비용이 발생할 수 있습니다. 자세한 내용은 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 호출을 사용하여 소프트웨어 패키지를 삭제하는 경우 먼저 패키지 버전을 삭제한 다음 소프트웨어 패키지를 삭제해야 합니다.