Software Package Catalog の使用準備 - AWS IoT Core

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Software Package Catalog の使用準備

次のセクションでは、パッケージバージョンのライフサイクルの概要と、 AWS IoT Device Management Software Package Catalog を使用するための情報について説明します。

パッケージバージョンライフサイクル

パッケージバージョンは、draftpublisheddeprecated などのライフサイクルステータスを経て進化する可能性があります。deleted である可能性もあります。

下書き、公開済み、廃止済みを含むパッケージバージョンのライフサイクル。削除することもできます。
  • 下書き

    パッケージバージョンを作成すると、 draft状態になります。この状態は、ソフトウェアパッケージが準備中であるか、不完全であることを示します。

    この状態のパッケージバージョンでは、デプロイできません。パッケージバージョンの説明、属性、およびタグを編集することはできます。

    draft 状態にあるパッケージバージョンを publishedまたは に移行するには、コンソールdeletedを使用するか、 UpdatePackageVersion または DeletePackageVersionAPIオペレーションを発行します。

  • 公開済み

    パッケージバージョンをデプロイする準備ができたら、パッケージバージョンを published状態に移行します。この状態では、コンソールまたは UpdatePackageAPIオペレーションでソフトウェアパッケージを編集することで、パッケージバージョンをデフォルトバージョンとして識別できます。この状態では、説明とタグのみを編集できます。

    published 状態にあるパッケージバージョンを deprecatedに移行したり、 コンソールdeletedを使用したり、 UpdatePackageVersion または DeletePackageVersionAPIオペレーションを発行したりすることができます。

  • 廃止済み

    新しいパッケージバージョンがある場合は、以前のパッケージバージョンを deprecated に移行できます。非推奨のパッケージバージョンを使用してジョブをデプロイすることもできます。非推奨のパッケージバージョンをデフォルトバージョンとして命名し、説明とタグのみを編集することもできます。

    パッケージバージョンが古いdeprecated場合、またはランタイムの依存関係によりパッケージバージョンを維持する必要がある場合は、パッケージバージョンを に移行することを検討してください。

    deprecated 状態にあるパッケージバージョンを publishedまたは に移行するには、 コンソールdeletedを使用するか、 UpdatePackageVersion または DeletePackageVersion API オペレーションを発行します。

  • [Deleted] (削除済み)

    パッケージバージョンを使用する予定がなくなった場合は、コンソールを使用するか、 DeletePackageVersion API オペレーションを発行することでパッケージバージョンを削除できます。

    注記

    そのパッケージバージョンを参照している保留中のジョブがあるときにパッケージバージョンを削除した場合、ジョブが正常に完了して予約済みの名前付きシャドウを更新しようとしたときにエラーメッセージが表示されます。

    削除するソフトウェアパッケージバージョンがデフォルトパッケージバージョンとして指定されている場合は、最初にパッケージを更新して別のバージョンをデフォルトとして指定するか、フィールドを名前なしのままにする必要があります。これを行うには、コンソールまたは UpdatePackageVersionAPIオペレーションを使用します。(名前付きパッケージバージョンをデフォルトとして削除するには、 UpdatePackage API オペレーションを発行するときに unsetDefaultVersionパラメータを true に設定します)。

    デフォルトバージョンとして指定されていない限り、コンソールからソフトウェアパッケージを削除すると、そのパッケージに関連付けられているすべてのパッケージバージョンが削除されます。

パッケージバージョンの命名規則

パッケージバージョンに名前を付けるときは、自分や他の人が最新のパッケージバージョンとバージョンの進行状況を簡単に識別できるように、論理的な命名戦略を計画して適用することが重要です。パッケージバージョンを作成するときはバージョン名を指定する必要がありますが、戦略と形式はビジネスケースによって大きく異なります。

ベストプラクティスとして、セマンティックバージョニングSemVer形式を使用することをお勧めします。例えば、1.2.3 の場合、1 は機能的に互換性のない変更のメジャーバージョン、2 は機能的に互換性のある変更のメジャーバージョン、3 は (バグ修正用の) パッチバージョンです。詳細については、「セマンティックバージョニング 2.0.0」を参照してください。パッケージバージョン名の要件の詳細については、リファレンスガイドversionNameの AWS IoT API「」を参照してください。

デフォルトバージョン

バージョンをデフォルトとして設定することは任意です。デフォルトのパッケージバージョンを追加または削除できます。デフォルトバージョンとして指定されていないパッケージバージョンをデプロイすることもできます。

パッケージバージョンを作成すると、そのバージョンは draft 状態になり、パッケージバージョンを公開済みに移行するまでデフォルトバージョンとして指定することはできません。Software Package Catalog は、デフォルトとしてバージョンを自動的に選択したり、新しいパッケージバージョンをデフォルトとして更新したりしません。コンソールまたは UpdatePackageVersionAPIオペレーションを発行して、選択したパッケージバージョンに意図的に名前を付ける必要があります。

バージョン属性

バージョン属性とその値には、パッケージバージョンに関する重要な情報が格納されます。パッケージまたはパッケージバージョンの汎用属性を定義することをお勧めします。例えば、プラットフォーム、アーキテクチャ、オペレーティングシステム、リリース日、作成者、または Amazon S3 の名前と値のペアを作成できますURL。

AWS IoT ジョブドキュメントを使用してジョブを作成するときは、属性の値を参照する置換変数 ($parameter) を使用することもできます。詳細については、AWS IoT 「ジョブの準備」を参照してください。

パッケージバージョンで使用されるバージョン属性は、予約された名前付きシャドウに自動的に追加されず、フリートインデックス作成から直接インデックスを作成またはクエリすることはできません。フリートインデックス作成を使用してパッケージバージョン属性をインデックス化またはクエリするには、予約された名前付きシャドウにバージョン属性を入力します。

オペレーションシステムやインストール時間など、予約された名前付きシャドウキャプチャデバイスレポートプロパティ のバージョン属性パラメータを使用することをお勧めします。また、フリートインデックス作成を使用してインデックスを作成し、クエリを実行することもできます。

バージョン属性は、特定の命名規則に従う必要はありません。ビジネスニーズに合わせて名前と値のペアを作成できます。パッケージバージョンのすべての属性の合計サイズは 3 KB に制限されています。詳細については、「Software Package Catalog ソフトウェアパッケージとパッケージバージョンの制限」を参照してください。

ジョブドキュメント内のすべての属性の使用

選択したデバイスのジョブデプロイに、すべてのパッケージバージョン属性を自動的に追加できます。API または CLI コマンドでプログラムですべてのパッケージバージョン属性を自動的に使用するには、次のジョブドキュメントの例を参照してください。

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

ソフトウェア部品表

ソフトウェア部品表 (SBOM) は、ソフトウェアパッケージのあらゆる側面のための中央リポジトリを提供します。ソフトウェアパッケージとパッケージバージョンを保存するだけでなく、各パッケージバージョンに関連付けられたソフトウェア部品表 (SBOM) を AWS IoT Device Management Software Package Catalog に保存できます。ソフトウェアパッケージには 1 つ以上のパッケージバージョンが含まれ、各パッケージバージョンは 1 つ以上のコンポーネントで構成されます。特定のパッケージバージョンの構成をサポートする各コンポーネントは、ソフトウェア部品表を使用して説明およびカタログ化できます。サポートされているソフトウェア部品表の業界標準は、 SPDXおよび CycloneDX です。SBOM が最初に作成されると、 SPDXおよび CycloneDX 業界標準形式に対する検証が行われます。の詳細についてはSPDX、「System Package Data Exchange」を参照してください。CycloneDX の詳細については、CycloneDX」を参照してください。

ソフトウェア部品表には、パッケージ情報、ファイル情報、その他の関連メタデータなど、特定のパッケージバージョンのコンポーネントのあらゆる側面が記載されています。SPDX 以下の形式のソフトウェア部品表ドキュメント構造の例を参照してください。

SBOM SPDX 形式の の例。

ソフトウェア部品表の利点

Software Package Catalog にパッケージバージョンのソフトウェア部品表を追加する主な利点の 1 つは、脆弱性管理です。

脆弱性管理

ソフトウェアコンポーネントの明らかなセキュリティリスクに対する脆弱性を評価して軽減することは、デバイスフリートの整合性を保護する上で重要です。パッケージバージョンごとに Software Package Catalog に保存されているソフトウェア部品表を追加すると、パッケージバージョンに基づいてリスクにさらされているデバイスを把握し、独自の社内脆弱性管理ソリューションSBOMを使用することで、セキュリティ上のギャップを事前に公開できます。影響を受けるデバイスに修正をデプロイし、デバイスのフリートを保護できます。

ソフトウェア部品表ストレージ

各ソフトウェアパッケージバージョンのソフトウェア部品表 (SBOM) は、Amazon S3 バージョニング機能を使用して Amazon S3 バケットに保存されます。を保存する Amazon S3 バケットは、パッケージバージョンが作成されたリージョンと同じリージョンに配置するSBOM必要があります。バージョニング機能を使用する Amazon S3 バケットは、同じバケット内のオブジェクトの複数のバリアントを維持します。Amazon S3 バケットでのバージョニングの使用の詳細については、Amazon S3バケットでのバージョニングの使用」を参照してください。

注記

各ソフトウェアパッケージバージョンには、zip アーカイブSBOMファイルとして保存されるファイルは 1 つだけです。

バケットの特定の Amazon S3 キーとバージョン ID は、パッケージバージョンのソフトウェア部品表の各バージョンを一意に識別するために使用されます。

注記

1 つのSBOMファイルを持つパッケージバージョンの場合、そのSBOMファイルを zip アーカイブファイルとして Amazon S3 バケットに保存できます。

複数のSBOMファイルを含むパッケージバージョンでは、すべてのSBOMファイルを 1 つの zip アーカイブファイルに配置し、その zip アーカイブファイルを Amazon S3 バケットに保存する必要があります。

両方のシナリオで 1 つの zip アーカイブファイルに保存されているすべてのSBOMファイルは、 SPDX または CycloneDX .json ファイルとしてフォーマットされます。

アクセス許可ポリシー

Amazon S3 バケットに保存されている SBOM zip アーカイブファイルにアクセスするための指定されたプリンシパル AWS IoT として機能するには、リソースベースのアクセス許可ポリシーが必要です。正しいリソースベースのアクセス許可ポリシーについては、次の例を参照してください。

{ "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適切なパッケージバージョンに関連付ける必要があります。新しいバージョン ID は、 のパッケージバージョンページの Amazon S3 オブジェクトバージョン ID 列に表示されます AWS Management Console。さらに、 APIオペレーションGetPackageVersionまたは CLI コマンドを使用してget-package-version、新しいバージョン ID を表示できます。

注記

新しいバージョン ID の原因となるソフトウェア部品表を更新しても、新しいパッケージバージョンは作成されません。

Amazon S3 オブジェクトキーの詳細については、「 オブジェクトキー名の作成」を参照してください。

AWS IoT フリートインデックス作成の有効化

Software Package Catalog で AWS IoT フリートインデックスを作成するには、インデックスを作成してメトリクスを収集する各デバイスのデータソースとして予約済み名前付きシャドウ ($package) を設定します。予約された名前付きシャドウの詳細については、「」を参照してください予約済みの名前付きシャドウ

フリートインデックス作成は、ソフトウェアパッケージバージョンでフィルタリングされた動的モノグループを通じて AWS IoT モノをグループ化できるようにするサポートを提供します。例えば、フリートインデックス作成では、特定のパッケージバージョンがインストールされているモノ、されていないモノ、パッケージバージョンが何もインストールされていないモノ、特定の名前と値のペアに一致するモノを識別できます。最後に、フリートインデックス作成は、デバイスフリートの状態に関するインサイトを得るために使用できる標準メトリクスとカスタムメトリクスを提供します。詳細については、「フリートインデックス作成の準備」を参照してください。

注記

Software Package Catalog のフリートインデックス作成を有効にすると、標準のサービスコストが発生します。詳細については、「AWS IoT Device Management, Pricing」(、料金) を参照してください。

予約済みの名前付きシャドウ

予約済みの名前付きシャドウ、$package は、デバイスにインストールされているソフトウェアパッケージとパッケージバージョンの状態を反映しています。フリートインデックス作成では、予約済みの名前付きシャドウをデータソースとして使用して標準メトリクスとカスタムメトリクスを構築し、フリートの状態をクエリできるようにします。詳細については、「フリートインデックス作成の準備」を参照してください。

予約済みの名前付きシャドウは、名前があらかじめ定義されていて変更できないという点を除いて、名前付きのシャドウと似ています。さらに、予約済みの名前付きシャドウはメタデータを更新せず、version および attributes のキーワードのみを使用します。

などの他のキーワードを含む更新リクエストはdescriptionrejectedトピックの下にエラーレスポンスを受け取ります。詳細については、「Device Shadow エラーメッセージ」を参照してください。

これは、コンソールを使用して AWS IoT モノを作成するとき、 AWS IoT ジョブが正常にシャドウを完了して更新したとき、およびUpdateThingShadowAPIオペレーションを発行したときに作成できます。詳細については、 デ AWS IoT Core ベロッパーガイドのUpdateThingShadow「」を参照してください。

注記

予約済みの名前付きシャドウをインデックスしても、フリートインデックスでインデックスできる名前付きシャドウの数にはカウントされません。クォータと制限の詳細については、「AWS IoT Device Management フリートインデックス作成の制限とクォータ」を参照してください。さらに、 AWS IoT ジョブが正常に完了したときに予約された名前付きシャドウをジョブに更新させることを選択した場合、API呼び出しは Device Shadow およびレジストリオペレーションにカウントされ、コストが発生する可能性があります。詳細については、AWS IoT Device Management 「ジョブの制限とクォータ」とIndexingFilterAPI「データ型」を参照してください。

$package シャドウの構造

予約済みの名前付きシャドウには次のものが含まれます。

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

シャドウのプロパティは次の情報で更新されます。

  • <packageName>: インストールされたソフトウェアパッケージの名前。 packageNameパラメータで更新されます。

  • version: インストールされたパッケージバージョンの名前。 versionNameパラメータで更新されます。

  • attributes: デバイスに保存され、フリートインデックスによってインデックス化されるオプションのメタデータ。これにより、保存されたデータに基づいてインデックスにクエリを実行できます。

  • version: シャドウのバージョン番号。シャドウが更新されるたびに自動的に増加し、1 から開始します。

  • timestamp: シャドウが最後に更新された日時を示し、Unix 時間で記録されます。

名前付きシャドウの形式と動作の詳細については、「AWS IoT Device Shadow サービス メッセージの順序」を参照してください。

ソフトウェアパッケージとそのパッケージバージョンの削除

ソフトウェアパッケージを削除する前に、次の操作を行います。

  • パッケージとそのバージョンがアクティブにデプロイされていないことを確認します。

  • 最初に、関連するすべてのバージョンを削除します。いずれかのバージョンがデフォルトバージョンとして指定されている場合は、指定されたデフォルトバージョンをパッケージから削除する必要があります。デフォルトバージョンの指定は任意であり、削除しても競合はありません。ソフトウェアパッケージからデフォルトバージョンを削除するには、コンソールを使用してパッケージを編集するか、 UpdatePackageVersionAPIオペレーションを使用します。

指定されたデフォルトパッケージバージョンがない限り、コンソールを使用してソフトウェアパッケージを削除でき、そのパッケージバージョンもすべて削除されます。API 呼び出しを使用してソフトウェアパッケージを削除する場合は、まずパッケージバージョンを削除し、次にソフトウェアパッケージを削除する必要があります。