

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

# AWS IoT Device Management ソフトウェアパッケージカタログ
<a name="software-package-catalog"></a>

 AWS IoT Device Management Software Package Catalog を使用すると、ソフトウェアパッケージとそのバージョンのインベントリを維持できます。パッケージバージョンを個々のモノと AWS IoT モノの動的グループに関連付け、社内プロセスまたは[AWS IoT ジョブ](https://docs.aws.amazon.com/iot/latest/developerguide/iot-jobs.html)を通じてデプロイできます。

ソフトウェアパッケージには、1 つ以上のパッケージバージョンが含まれます。パッケージバージョンは、1 つのユニットとしてデプロイできるファイルの集まりです。パッケージバージョンには、ファームウェア、オペレーティングシステムの更新、デバイスアプリケーション、設定、およびセキュリティパッチを含めることができます。ソフトウェアが時間の経過とともに進化するにつれて、新しいパッケージバージョンを作成してフリートにデプロイできます。

 AWS IoT ソフトウェアパッケージハブは 内にあります AWS IoT Core。ハブを使用して、ソフトウェアパッケージのインベントリとメタデータを一元的に登録および保守できます。これにより、ソフトウェアパッケージとそのバージョンのカタログが作成されます。デバイスにデプロイされたソフトウェアパッケージとパッケージバージョンに基づいてデバイスをグループ化することを選択できます。この機能により、デバイス側のパッケージインベントリを名前付きシャドウとして保持したり、バージョンに基づいてデバイスを関連付けてグループ化したり、フリートメトリクスを使用してフリート全体のパッケージバージョン分布を視覚化したりできます。

社内でソフトウェアデプロイシステムを確立している場合は、引き続きそのプロセスを使用してパッケージバージョンをデプロイできます。デプロイプロセスがまだ確立されていない場合や、希望する場合は、[AWS IoT ジョブ](https://docs.aws.amazon.com/iot/latest/developerguide/iot-jobs.html)を使用して Software Package Catalog の機能を使用することをお勧めします。詳細については、[AWS IoT 「ジョブの準備](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-jobs-for-service-package-catalog.html)」を参照してください。

**Topics**
+ [Software Package Catalog の使用準備](preparing-to-use-software-package-catalog.md)
+ [セキュリティの準備](preparing-security.md)
+ [フリートインデックス作成の準備](preparing-fleet-indexing.md)
+ [AWS IoT ジョブの準備](preparing-jobs-for-service-package-catalog.md)
+ [Software Package Catalog の開始方法](getting-started-with-software-package-catalog.md)

# Software Package Catalog の使用準備
<a name="preparing-to-use-software-package-catalog"></a>

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

## パッケージバージョンライフサイクル
<a name="package-version-lifecycle"></a>

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

![\[下書き、公開済み、廃止済みを含むパッケージバージョンのライフサイクル。削除することもできます。\]](http://docs.aws.amazon.com/ja_jp/iot/latest/developerguide/images/package-catalog-version-lifecycle.png)

+ **下書き**

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

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

  コンソールを使用するか、[UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html) または [DeletePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_DeletePackageVersion.html) API オペレーションのいずれかを発行することで、現在 `draft` の状態のパッケージバージョンを `published` に移行するか `deleted` にできます。
+ **公開済み**

  パッケージバージョンをデプロイする準備ができたら、パッケージバージョンを `published` 状態に移行します。この状態では、コンソールでソフトウェアパッケージを編集するか、[UpdatePackage](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackage.html) API オペレーションを使用して、パッケージバージョンをデフォルトバージョンとして指定できます。この状態では、説明とタグのみを編集できます。

  コンソールを使用するか、[UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html) または [DeletePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_DeletePackageVersion.html) API オペレーションのいずれかを発行することで、現在 `published` の状態のパッケージバージョンを `deprecated` に移行するか、`deleted` にできます。
+ **廃止済み**

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

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

  コンソールを使用するか、[UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html) または [DeletePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_DeletePackageVersion.html) API オペレーションのいずれかを発行することで、現在 `deprecated `の状態のパッケージバージョンを `published` に移行するか、`deleted` にできます。
+ **[Deleted]** (削除済み)

  パッケージバージョンを使用する意図がなくなった場合は、コンソールまたは [DeletePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_DeletePackageVersion.html) API オペレーションを使用して削除できます。
**注記**  
そのパッケージバージョンを参照している保留中のジョブがあるときにパッケージバージョンを削除した場合、ジョブが正常に完了して予約済みの名前付きシャドウを更新しようとしたときにエラーメッセージが表示されます。  
 削除するソフトウェアパッケージバージョンがデフォルトパッケージバージョンとして指定されている場合は、最初にパッケージを更新して別のバージョンをデフォルトとして指定するか、フィールドを名前なしのままにする必要があります。これを行うには、コンソールまたは [UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html) API オペレーションを使用します。(指定されたパッケージバージョンをデフォルトとして削除するには、[UpdatePackage](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackage.html) API オペレーションを発行するときに [unsetDefaultVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackage.html#iot-UpdatePackage-request-unsetDefaultVersion) パラメーターを true に設定します)。

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

## パッケージバージョンの命名規則
<a name="package-version-naming"></a>

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

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

## デフォルトバージョン
<a name="default-version"></a>

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

パッケージバージョンを作成すると、そのバージョンは `draft` 状態になり、パッケージバージョンを公開済みに移行するまでデフォルトバージョンとして指定することはできません。Software Package Catalog は、デフォルトとしてバージョンを自動的に選択したり、新しいパッケージバージョンをデフォルトとして更新したりしません。コンソールから、または [UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html) API オペレーションを発行して、選択したパッケージバージョンに意図的に名前を付ける必要があります。

## バージョン属性
<a name="version-attributes"></a>

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

 AWS IoT ジョブドキュメントを使用してジョブを作成するときに、属性の値を参照する置換変数 (`$parameter`) を使用することもできます。詳細については、[AWS IoT 「ジョブの準備](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-jobs-for-service-package-catalog.html)」を参照してください。

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

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

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

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

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

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

## ソフトウェア部品表
<a name="software-bill-of-materials"></a>

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

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

![\[SPDX 形式の SBOM の例。\]](http://docs.aws.amazon.com/ja_jp/iot/latest/developerguide/images/spdx-2.3-document.png)


### ソフトウェア部品表の利点
<a name="spc-sbom-benefits"></a>

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

**脆弱性管理**

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

### ソフトウェア部品表のストレージ
<a name="spc-sbom-storage"></a>

各ソフトウェアパッケージバージョンのソフトウェア部品表 (SBOM) は、Amazon S3 バージョニング機能を使用して Amazon S3 バケットに保存されます。SBOM を格納する Amazon S3 バケットは、パッケージバージョンが作成されたのと同じリージョンに配置する必要があります。バージョニング機能を使用する Amazon S3 バケットは、同じバケットにオブジェクトの複数のバリアントを保持します。Amazon S3 バケットでのバージョニングの使用の詳細については、「[Amazon S3 バケットでのバージョニングの使用](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html)」を参照してください。

**注記**  
各ソフトウェアパッケージバージョンには複数の SBOM ファイルをアタッチできますが、SBOM ファイルは 1 つの zip アーカイブファイルに保存されている必要があります。

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

**注記**  
単一の SBOM ファイルを持つパッケージバージョンの場合、その SBOM ファイルを Amazon S3 バケットに zip アーカイブファイルとして保存できます。  
複数の SBOM ファイルを含むパッケージバージョンでは、すべての SBOM ファイルを 1 つの 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 リソースベースのポリシー](security_iam_service-with-iam.md#security_iam_service-with-iam-resource-based-policies)」を参照してください。

**SBOM の更新**

ソフトウェア部品表は、デバイスフリートを保護し強化するために必要な頻度で更新できます。Amazon S3 バケットでソフトウェア部品表が更新されるたびに、バージョン ID が変更されます。このため、新しい Amazon S3 バケット URL を適切なパッケージバージョンに関連付ける必要があります。新しいバージョン ID は、 AWS マネジメントコンソールのパッケージバージョンページの **Amazon S3 オブジェクトバージョン ID** 列に表示されます。さらに、API オペレーション `[GetPackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_GetPackageVersion.html)` または CLI コマンド `[get-package-version](https://docs.aws.amazon.com/cli/latest/reference/iot/get-package-version.html)` を使用して、新しいバージョン ID を表示できます。

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

Amazon S3 オブジェクトキー名の詳細については、「[オブジェクトキー名の作成](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html)」を参照してください。

## AWS IoT フリートインデックス作成の有効化
<a name="enable-fleet-indexing"></a>

 AWS IoT フリートインデックス作成を有効にすることは、 AWS IoT Device Management Software Package Catalog を使用するための要件です。Software Package Catalog で AWS IoT フリートのインデックス作成をするには、インデックスを作成してメトリクスを収集する各デバイスのデータソースとして予約済み名前付きシャドウ (`$package`) を設定します。予約済みの名前付きシャドウの詳細については、「[予約済みの名前付きシャドウ](#reserved-named-shadow)」を参照してください。

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

**注記**  
Software Package Catalog のフリートインデックス作成を有効にすると、標準のサービスコストが発生します。詳細については、「[AWS IoT Device Management, Pricing](https://aws.amazon.com/iot-device-management/pricing/)」(、料金) を参照してください。

## 予約済みの名前付きシャドウ
<a name="reserved-named-shadow"></a>

予約済みの名前付きシャドウ、`$package` は、デバイスにインストールされているソフトウェアパッケージとパッケージバージョンの状態を反映しています。フリートインデックス作成では、予約済みの名前付きシャドウをデータソースとして使用して標準メトリクスとカスタムメトリクスを構築し、フリートの状態をクエリできるようにします。詳細については、「[フリートインデックス作成の準備](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-fleet-indexing.html)」を参照してください。

予約済みの名前付きシャドウは、名前があらかじめ定義されていて変更できないという点を除いて、[名前付きのシャドウ](https://docs.aws.amazon.com/iot/latest/developerguide/iot-device-shadows.html)と似ています。さらに、予約済みの名前付きシャドウはメタデータを更新せず、`version` および `attributes` のキーワードのみを使用します。

`description` など、他のキーワードを含む更新リクエストには、`rejected` トピックの下でエラーレスポンスが返されます。詳細については、「[Device Shadow エラーメッセージ](https://docs.aws.amazon.com/iot/latest/developerguide/device-shadow-error-messages.html)」を参照してください。

コンソールを使用して AWS IoT モノを作成するとき、 AWS IoT ジョブが正常にシャドウを完了して更新するとき、および [https://docs.aws.amazon.com/iot/latest/apireference/API_iotdata_UpdateThingShadow.html](https://docs.aws.amazon.com/iot/latest/apireference/API_iotdata_UpdateThingShadow.html) API オペレーションを発行するときに作成できます。詳細については、 デ AWS IoT Core ベロッパーガイドの[UpdateThingShadow](https://docs.aws.amazon.com/iot/latest/developerguide/device-shadow-rest-api.html#API_UpdateThingShadow)」を参照してください。

**注記**  
予約済みの名前付きシャドウをインデックスしても、フリートインデックスでインデックスできる名前付きシャドウの数にはカウントされません。クォータと制限の詳細については、「[AWS IoT Device Management フリートインデックス作成の制限とクォータ](https://docs.aws.amazon.com/general/latest/gr/iot_device_management.html#fleet-indexing-limits)」を参照してください。さらに、 AWS IoT ジョブが正常に完了したときに予約された名前付きシャドウをジョブで更新することを選択した場合、API コールは Device Shadow およびレジストリオペレーションにカウントされ、コストが発生する可能性があります。詳細については、「[AWS IoT Device Management jobs limits and quotas](https://docs.aws.amazon.com/general/latest/gr/iot_device_management.html#job-limits)」(ジョブの制限とクォータ) および [IndexingFilter](https://docs.aws.amazon.com/iot/latest/apireference/API_IndexingFilter.html) API データタイプを参照してください。

**`$package` シャドウの構造**

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

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

シャドウのプロパティは次の情報で更新されます。
+  `<packageName>`: インストール済みのソフトウェアパッケージの名前。[packageName](https://docs.aws.amazon.com/iot/latest/apireference/API_CreatePackage.html#API_CreatePackage_RequestSyntax) パラメータで更新されます。
+  `version`: インストールされているパッケージバージョンの名前。[versionName](https://docs.aws.amazon.com/iot/latest/apireference/API_CreatePackageVersion.html#API_CreatePackageVersion_RequestSyntax) パラメータで更新されます。
+  `attributes`: デバイスに保存され、フリートインデックスによってインデックス化されるオプションのメタデータ。これにより、保存されたデータに基づいてインデックスにクエリを実行できます。
+ `version`: シャドウのバージョン番号。シャドウが更新されるたびに自動的に増加し、`1` から開始します。
+ `timestamp`: シャドウが最後に更新された日時を示し、[Unix 時間](https://en.wikipedia.org/wiki/Unix_time)で記録されます。

名前付きシャドウの形式と動作の詳細については、「[AWS IoT Device Shadow サービス メッセージの順序](https://docs.aws.amazon.com/iot/latest/developerguide/iot-device-shadows.html#message-ordering)」を参照してください。

## ソフトウェアパッケージとそのパッケージバージョンの削除
<a name="deleting-packages-and-versions"></a>

ソフトウェアパッケージを削除する前に、次の操作を行います。
+ パッケージとそのバージョンがアクティブにデプロイされていないことを確認します。
+ 最初に、関連するすべてのバージョンを削除します。いずれかのバージョンが**デフォルトバージョン**として指定されている場合は、指定されたデフォルトバージョンをパッケージから削除する必要があります。デフォルトバージョンの指定は任意であり、削除しても競合はありません。ソフトウェアパッケージからデフォルトバージョンを削除するには、コンソールからパッケージを編集するか、[ UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html) API オペレーションを使用します。

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

# セキュリティの準備
<a name="preparing-security"></a>

このセクションでは、 AWS IoT Device Management Software Package Catalog の主なセキュリティ要件について説明します。

## リソースベースの認証
<a name="resource-based-authorization"></a>

Software Package Catalog では、リソースベースの認可を使用して、フリートのソフトウェアを更新する際のセキュリティを強化します。つまり、ソフトウェアパッケージとパッケージバージョンに対して `create`、、`update`、`delete`、および `list`アクションを実行する権限を付与する AWS Identity and Access Management (IAM) `read`ポリシーを作成し、 `Resources`セクションでデプロイする特定のソフトウェアパッケージとパッケージバージョンを参照する必要があります。[予約済みの名前付きシャドウ](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-to-use-software-package-catalog.html#reserved-named-shadow)を更新するには、これらの権限も必要です。各エンティティに Amazon リソースネーム (ARN) を含めることで、ソフトウェアパッケージとパッケージバージョンを参照できます。

**注記**  
パッケージバージョンの API コール ([CreatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_CreatePackageVersion.html), [UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html), [DeletePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_DeletePackageVersion.html) など) の権限をポリシーで付与するようにする場合は、ソフトウェアパッケージとパッケージバージョン ARN の*両方*をポリシーに含める必要があります。ポリシーでソフトウェアパッケージ API コール ([CreatePackage](https://docs.aws.amazon.com/iot/latest/apireference/API_CreatePackage.html)、[UpdatePackage](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackage.html)、[DeletePackage](https://docs.aws.amazon.com/iot/latest/apireference/API_DeletePackage.html) など) の権限を付与する場合は、ソフトウェアパッケージ ARN のみをポリシーに含める必要があります。

ソフトウェアパッケージとパッケージバージョン ARN を次のように構成します。
+ ソフトウェアパッケージ: `arn:aws:iot:<region>:<accountID>:package/<packageName>/package` 
+ パッケージバージョン: `arn:aws:iot:<region>:<accountID>:package/<packageName>/version/<versionName>` 

**注記**  
このポリシーに含めることができる、その他の関連する権利もあります。例えば、`job`、`thinggroup`、`jobtemplate` に ARN を含めることができます。ポリシーオプションの詳細と詳細なリストについては、[AWS IoT 「ジョブによるユーザーとデバイスの保護](https://docs.aws.amazon.com/iot/latest/developerguide/iot-jobs-security.html)」を参照してください。

例えば、次のような名前のソフトウェアパッケージとパッケージバージョンがあるとします。
+ AWS IoT モノ: `myThing`
+ パッケージ名: `samplePackage`
+ バージョン `1.0.0`

ポリシーは以下の例のようになります。

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:createPackage",
                "iot:createPackageVersion",
                "iot:updatePackage",
                "iot:updatePackageVersion"
            ],
            "Resource": [
               "arn:aws:iot:us-east-1:111122223333:package/samplePackage",
               "arn:aws:iot:us-east-1:111122223333:package/samplePackage/version/1.0.0"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:GetThingShadow",
                "iot:UpdateThingShadow"
            ],
            "Resource": "arn:aws:iot:us-east-1:111122223333:thing/myThing/$package"
        }
    ]
}
```

## AWS IoT パッケージバージョンをデプロイするためのジョブ権限
<a name="job-rights-deploy-versions"></a>

セキュリティ上の理由から、パッケージとパッケージバージョンをデプロイする権限を付与し、デプロイが許可されている特定のパッケージとパッケージバージョンに名前を付けることが重要です。そのためには、パッケージバージョンでジョブをデプロイするアクセス許可を付与する IAM ロールとポリシーを作成します。ポリシーでは、リソースとしてターゲットパッケージのバージョンを指定する必要があります。

**IAM ポリシー**

IAM ポリシーは、`Resource` セクションで指定されているパッケージとバージョンを含むジョブを作成する権限を付与します。

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:CreateJob",
                "iot:CreateJobTemplate"
            ],
            "Resource":[
                "arn:aws:iot:*:111122223333:job/<jobId>",
                "arn:aws:iot:*:111122223333:thing/<thingName>/$package",
                "arn:aws:iot:*:111122223333:thinggroup/<thingGroupName>",
                "arn:aws:iot:*:111122223333:jobtemplate/<jobTemplateName>",
                "arn:aws:iot:*:111122223333:package/<packageName>/version/<versionName>"
            ]
        }
    ]
}
```

**注記**  
ソフトウェアパッケージとパッケージのバージョンをアンインストールするジョブをデプロイする場合は、以下のようにパッケージバージョンが `$null` の ARN を認可する必要があります。

```
arn:aws:iot:<regionCode>:111122223333:package/<packageName>/version/$null
```

## AWS IoT 予約済み名前付きシャドウを更新するジョブ権限
<a name="job-rights-update-reserved-named-shadow"></a>

ジョブが正常に完了したときにジョブがモノの予約名シャドウを更新できるようにするには、IAM ロールとポリシーを作成する必要があります。 AWS IoT コンソールでこれを行うには 2 つの方法があります。1 つ目は、コンソールでソフトウェアパッケージを作成するときです。**[パッケージ管理の依存関係を有効にする]** ダイアログボックスが表示されたら、既存のロールを使用するか、新しいロールを作成するかを選択できます。または、 AWS IoT コンソールで **[設定]** を選択し、**[インデックス作成の管理]** を選択し、次に **[デバイスパッケージとバージョンのインデックス作成の管理]** を選択します。

**注記**  
 AWS IoT ジョブが正常に完了したときに予約された名前付きシャドウをジョブサービスで更新することを選択した場合、API コールは **Device Shadow およびレジストリオペレーション**にカウントされ、コストが発生する可能性があります。詳細については、[AWS IoT Core 料金表](https://aws.amazon.com/iot-core/pricing/)を参照してください。

**[ロールを作成]** オプションを使用すると、生成されるロールの名前は `aws-iot-role-update-shadows` で始まり、次のポリシーが含まれています。

**ロールのセットアップ**

**アクセス許可**  
アクセス許可ポリシーにより、モノのシャドウへのクエリと更新を行う権限が付与されます。リソース ARN の `$package` パラメータは、予約済みの名前付きシャドウを対象としています。    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "iot:DescribeEndpoint",
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:GetThingShadow",
                "iot:UpdateThingShadow"
            ],
            "Resource": [
            "arn:aws:iot:us-east-1:111122223333:thing/<thingName>/$package"
            ]
        }
    ]
}
```

**信頼関係**  
アクセス許可ポリシーに加えて、エンティティがロールを引き継いで予約済みの名前付きシャドウを更新できるように、ロールと AWS IoT Core の信頼関係も必要です。    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "iot.amazonaws.com"
        },
            "Action": "sts:AssumeRole"
        }
    ]
}
```

**ユーザーポリシーの設定**

**iam:PassRole アクセス許可**  
最後に、[UpdatePackageConfiguration](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageConfiguration.html) API オペレーションを呼び出す AWS IoT Core ときに にロールを渡すアクセス許可が必要です。    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iam:PassRole",
                "iot:UpdatePackageConfiguration"
            ],
            "Resource": "arn:aws:iam::111122223333:role/<roleName>"
        }
    ]
}
```

## AWS IoT Amazon S3 からダウンロードするジョブのアクセス許可
<a name="job-rights-download-job-document"></a>

ジョブドキュメントは Amazon S3 に保存されます。 AWS IoT ジョブを介してディスパッチするときに、このファイルを参照します。ファイルをダウンロードする権限を AWS IoT Jobs に提供する必要があります (`s3:GetObject`)。また、Amazon S3 と AWS IoT ジョブ間の信頼関係を設定する必要があります。これらのポリシーを作成する手順については、「[ジョブを管理する](https://docs.aws.amazon.com/iot/latest/developerguide/create-manage-jobs.html)」の「[署名付き URL](https://docs.aws.amazon.com/iot/latest/developerguide/create-manage-jobs.html#create-manage-jobs-presigned-URLs)」を参照してください。

## パッケージバージョンのソフトウェア部品表を更新するアクセス許可
<a name="job-rights-update-sbom"></a>

`Draft`、、または `Deprecated`ライフサイクル状態のパッケージバージョンのソフトウェア部品表を更新するには、Amazon S3 で新しいソフトウェア部品表を検索し`Published`、 でパッケージバージョンを更新するための AWS Identity and Access Management ロールとポリシーが必要です AWS IoT Core。

まず、更新されたソフトウェア部品表をバージョニングされた Amazon S3 バケットに配置し、`sboms` パラメータを含む `[UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html)` API オペレーションを呼び出します。次に、承認されたプリンシパルが作成した IAM ロールを引き受け、Amazon S3 で更新されたソフトウェア部品表を見つけ、ソフトウェアパッケージカタログ AWS IoT Core の でパッケージ検証を更新します。

この更新を実行するには、次のポリシーが必要です。

**ポリシー**
+ **信頼ポリシー** IAM ロールを引き受ける承認されたプリンシパルとの信頼関係を確立し、Amazon S3 のバージョニングされたバケットから更新されたソフトウェア部品表を見つけ、 AWS IoT Coreのパッケージバージョンを更新できるようにします。
  +   
****  

    ```
    {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
            {
                "Effect": "Allow",
                "Principal": {
                    "Service": "s3.amazonaws.com"
            },
                "Action": "sts:AssumeRole"
            }
        ]
    }
    ```
  +   
****  

    ```
    {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
            {
                "Effect": "Allow",
                "Principal": {
                    "Service": "iot.amazonaws.com"
            },
                "Action": "sts:AssumeRole"
            }
        ]
    }
    ```
+ **アクセス許可ポリシー**: ソフトウェア部品表がパッケージバージョン用に保存されている Amazon S3 バージョニングバケットにアクセスし、 AWS IoT Coreでパッケージバージョンを更新するポリシー。
  +   
****  

    ```
    {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "s3:GetObject"
                ],
                "Resource": [
                    "arn:aws:s3:::awsexamplebucket1"
                ]
            }
        ]
    }
    ```
  +   
****  

    ```
    {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "iot:UpdatePackageVersion"
                ],
                "Resource": [
                    "arn:aws:iot:*:111122223333:package/<packageName>/version/<versionName>"
                ]
            }
        ]
    }
    ```
+ **ロールのアクセス許可を渡す**: `[UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html)` API オペレーションを呼び出す AWS IoT Core ときに IAM ロールを Amazon S3 に渡すアクセス許可を付与するポリシー。
  +   
****  

    ```
    {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "iam:PassRole",
            "s3:GetObject"
          ],
          "Resource": [
            "arn:aws:s3:::awsexamplebucket1"
          ]
        }
      ]
    }
    ```
  +   
****  

    ```
    {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "iam:PassRole",
                    "iot:UpdatePackageVersion"
                ],
                "Resource": "arn:aws:iam::111122223333:role/<roleName>"
            }
        ]
    }
    ```

**注記**  
`Deleted` ライフサイクル状態に移行したパッケージバージョンでは、ソフトウェア部品表を更新することはできません。

 AWS サービスの IAM ロールの作成の詳細については、[AWS 「 サービスにアクセス許可を委任するロールの作成](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)」を参照してください。

Amazon S3 バケットの作成とそれへのオブジェクトのアップロードの詳細については、「[バケットの作成](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)」と「[オブジェクトのアップロード](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html)」を参照してください。

# フリートインデックス作成の準備
<a name="preparing-fleet-indexing"></a>

 AWS IoT フリートインデックス作成では、予約された名前付きシャドウ () を使用してデータを検索および集計できます`$package`。 AWS IoT およびモノの[予約済みの名前付きシャドウ](preparing-to-use-software-package-catalog.md#reserved-named-shadow)[動的グループをクエリすることで、モノ](https://docs.aws.amazon.com/iot/latest/developerguide/dynamic-thing-groups.html)をグループ化することもできます。たとえば、特定のパッケージバージョンを使用しているモノ、特定のパッケージバージョンがインストールされていないモノ、またはパッケージバージョンがインストールされていない AWS IoT モノに関する情報を確認できます。属性を組み合わせることで、さらに詳しいインサイトを得ることができます。例えば、特定のバージョンで特定のタイプのもの (バージョン 1.0.0 や pump\$1sensor のモノのタイプなど) を識別します。詳細については、「[フリートインデックス作成](https://docs.aws.amazon.com/iot/latest/developerguide/iot-indexing.html)」を参照してください。

## `$package` シャドウをデータソースとして設定する
<a name="shadow-as-data-source"></a>

Software Package Catalog でフリートインデックス作成を使用するには、フリートインデックス作成を有効にし、名前付きシャドウをデータソースとして設定して、名前付きシャドウフィルターとして `$package` を定義する必要があります。フリートインデックス作成をまだ有効にしていない場合は、このプロセス内で有効にできます。コンソールの [AWS IoT Core](https://console.aws.amazon.com/iot/home) から **[設定]** を開き、**[インデックス作成の管理]**、**[名前付きシャドウの追加]**、**[デバイスソフトウェアパッケージとバージョンの追加]**、**[更新]** の順に選択します。詳細については、「[モノのインデックス作成の管理](https://docs.aws.amazon.com/iot/latest/developerguide/managing-fleet-index.html#thing-index)」を参照してください。

または、最初のパッケージを作成するときにフリートインデックス作成を有効にすることもできます。**[パッケージ管理の依存関係を有効にする]** ダイアログボックスが表示されたら、デバイスソフトウェアのパッケージとバージョンをデータソースとしてフリートインデックス作成に追加するオプションを選択します。このオプションを選択すると、フリートインデックス作成も有効になります。

**注記**  
Software Package Catalog のフリートインデックス作成を有効にすると、標準のサービスコストが発生します。詳細については、「[AWS IoT Device Management, Pricing](https://aws.amazon.com/iot-device-management/pricing/)」(、料金) を参照してください。

## コンソールに表示されるメトリクス
<a name="metrics-displayed-in-console"></a>

![\[標準メトリクスのイメージ\]](http://docs.aws.amazon.com/ja_jp/iot/latest/developerguide/images/package-catalog-discovery-metrics.png)


 AWS IoT コンソールソフトウェアパッケージの詳細ページでは、**検出**パネルにシャ`$package`ドウを介して取り込まれた標準メトリクスが表示されます。
+ **現行バージョンのディストリビューション**チャートには、このソフトウェアパッケージに関連付けられているすべてのデバイスの AWS IoT モノに関連付けられている最新のパッケージバージョン 10 のデバイス数と割合が表示されます。**注:** ソフトウェアパッケージに含まれるパッケージバージョンが、グラフに表示されているバージョンよりも多い場合は、**その他**にグループ分けして表示できます。
+ **履歴グラフ**には、指定した期間における選択したパッケージバージョンに関連するデバイスの数が表示されます。最大 5 つのパッケージバージョンを選択し、日付範囲と時間間隔を定義するまで、最初はグラフは空です。グラフのパラメータを選択するには、**[設定]** を選択します。**[履歴グラフ]** に表示されるデータは、表示されるパッケージバージョンの数が異なることと、**[履歴グラフ]** で分析するパッケージバージョンを選択できるため、**[現在のバージョン分布]** グラフと異なる場合があります。**注:** 視覚化するパッケージバージョンを選択すると、そのバージョンはフリートメトリクスの最大数制限にカウントされます。クォータと制限の詳細については、「[フリートインデックス作成の制限とクォータ](https://docs.aws.amazon.com/general/latest/gr/iot_device_management.html#fleet-indexing-limits)」を参照してください。

パッケージバージョン分布を収集する方法についてインサイトを得る別の方法については、「[Collecting package version distribution through `getBucketsAggregation`](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-fleet-indexing.html#package-version-distribution)」(によるパッケージバージョン配布の収集) を参照してください。

## クエリパターン
<a name="query-patterns"></a>

Software Package Catalog によるフリートのインデックス作成では、標準的にサポートされている大抵の機能 (用語、フレーズ、検索フィールドなど) を使用します。ただし、予約済みの名前付きシャドウ (`$package`) `version` キーでは、比較演算子 (小なり「`<`」や、大なり「`>`」など) と `range` クエリは使用できません。ただし、`attributes` キーではこれらのクエリを使用できます。詳細については、「[クエリ構文](https://docs.aws.amazon.com/iot/latest/developerguide/query-syntax.html)」を参照してください。

### サンプルデータ
<a name="query-patterns-example-data"></a>

**注:** 予約済みの名前付きシャドウとその構造については、「[予約済みの名前付きシャドウ](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-to-use-software-package-catalog.html#reserved-named-shadow)」を参照してください。

この例では、最初のデバイスに `AnyThing` という名前が付けられ、次のパッケージがインストールされています。
+ ソフトウェアパッケージ: `SamplePackage`

  パッケージバージョン: `1.0.0`

  パッケージ ID: `1111`

シャドウは次のようになります。

```
{
    "state": {
        "reported": {
            "SamplePackage": {
                "version": "1.0.0",
                "attributes": {
                    "s3UrlForSamplePackage": "https://EXAMPIEBUCKET.s3.us-west-2.amazonaws.com/exampleCodeFile1",
                    "packageID": "1111"
                    }
            }
        }
    }
}
```

2 番目のデバイスには `AnotherThing` という名前が付けられ、次のパッケージがインストールされています。
+ ソフトウェアパッケージ: `SamplePackage`

  パッケージバージョン: `1.0.0`

  パッケージ ID: `1111`
+ ソフトウェアパッケージ: `OtherPackage`

  パッケージバージョン: `1.2.5`

  パッケージ ID: `2222`

シャドウは次のようになります。

```
{
    "state": {
        "reported": {
            "SamplePackage": {
                "version": "1.0.0",
                "attributes": {
                    "s3UrlForSamplePackage": "https://EXAMPIEBUCKET.s3.us-west-2.amazonaws.com/exampleCodeFile1",
                    "packageID": "1111"
                }
            },
            "OtherPackage": {
                "version": "1.2.5",
                "attributes": {
                    "s3UrlForOtherPackage": "https://EXAMPIEBUCKET.s3.us-west-2.amazonaws.com/exampleCodeFile2",
                    "packageID": "2222"
                    }
            },
        }
    }
}
```

### サンプルクエリ
<a name="sample-queries"></a>

次の表は、`AnyThing` および `AnotherThing` のデバイスシャドウの例に基づいたクエリの例を示しています。詳細については、「[モノのクエリの例](https://docs.aws.amazon.com/iot/latest/developerguide/example-queries.html)」を参照してください。


**AWS IoT Device Tester for FreeRTOS の最新バージョン**  

| **リクエストされた情報** | **クエリ** | **結果** | 
| --- | --- | --- | 
|  特定のパッケージバージョンがインストールされているモノ  |  `shadow.name.$package.reported.SamplePackage.version:1.0.0`  |  `AnyThing`, `OtherThing`  | 
|  特定のパッケージバージョンがインストールされていないモノ  |  `NOT shadow.name.$package.reported.OtherPackage.version:1.2.5`  |  `AnyThing`  | 
|  パッケージ ID が 1500 を超えるパッケージバージョンを使用するすべてのデバイス  |  `shadow.name.$package.reported.*.attributes.packageID>1500"`  |  `OtherThing`  | 
|  特定のパッケージがインストールされていて、複数のパッケージがインストールされているモノ  |  `shadow.name.$package.reported.SamplePackage.version:1.0.0 AND shadow.name.$package.reported.totalCount:2`  |  `OtherThing`  | 

## `getBucketsAggregation` によるパッケージバージョン配布の収集
<a name="package-version-distribution"></a>

 AWS IoT コンソール内の **Discovery** パネルに加えて、 [https://docs.aws.amazon.com/iot/latest/apireference/API_GetBucketsAggregation.html](https://docs.aws.amazon.com/iot/latest/apireference/API_GetBucketsAggregation.html) API オペレーションを使用してパッケージバージョンのディストリビューション情報を取得することもできます。パッケージバージョンの配布情報を取得するには、以下を実行する必要があります。
+ 各ソフトウェアパッケージのフリートインデックス作成内のカスタムフィールドを定義します。**注:** カスタムフィールドの作成は、[AWS IoT フリートインデックス作成のサービスクォータ](https://docs.aws.amazon.com/general/latest/gr/iot_device_management.html#fleet-indexing-limits)にカウントされます。
+ カスタムフィールドを次のようにフォーマットします。

  `shadow.name.$package.reported.<packageName>.version`

詳細については、 AWS IoT フリートインデックス作成の[「カスタムフィールド](https://docs.aws.amazon.com/iot/latest/developerguide/managing-fleet-index.html#custom-field)」セクションを参照してください。

# AWS IoT ジョブの準備
<a name="preparing-jobs-for-service-package-catalog"></a>

AWS IoT Device Management Software Package Catalog は、置換パラメータ、 AWS IoT フリートインデックス作成、モノの動的グループ、モノ AWS IoT の予約済み名前付きシャドウとの統合を通じて AWS IoT ジョブを拡張します。

**注記**  
 Software Package Catalog が提供するすべての機能を使用するには、次の AWS Identity and Access Management (IAM) ロールとポリシーを作成する必要があります。[AWS IoT パッケージバージョンをデプロイするジョブ権限](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-security.html#job-rights-deploy-versions)と、[AWS IoT 予約された名前付きシャドウを更新するジョブ権限](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-security.html#job-rights-update-reserved-named-shadow)。詳細については、「[セキュリティの準備](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-security.html)」を参照してください。

## AWS IoT ジョブの置換パラメータ
<a name="substitution-parameters"></a>

置換パラメータは、 AWS IoT ジョブドキュメント内のプレースホルダーとして使用できます。ジョブサービスが代替パラメータを検出すると、そのジョブは、指定されたソフトウェアバージョンのパラメータ値の属性を指します。このプロセスを使用して 1 つのジョブドキュメントを作成し、汎用属性を介してメタデータをジョブに渡すことができます。例えば、Amazon Simple Storage Service (Amazon S3) URL、ソフトウェアパッケージ Amazon リソースネーム (ARN)、または署名をパッケージバージョン属性を介してジョブドキュメントに渡すことができます。

代替パラメータは、ジョブドキュメントで次のようにフォーマットする必要があります。
+ **ソフトウェアパッケージ名とパッケージバージョン**
  + `package::version` 間の空の文字列は、ソフトウェアパッケージ名の置換パラメータを表します。`version::attribute` 間の空の文字列は、ソフトウェアパッケージバージョンの置換パラメータを表します。ジョブドキュメントでパッケージ名とパッケージ検証置換パラメータを使用するには、次の例を参照してください。`${aws:iot:package::version::attributes:<attributekey>}`
  + ジョブドキュメントは、パッケージバージョンの詳細から*バージョン ARN* を使用して、これらの置換パラメータを自動入力します。API または CLI コマンドを使用して単一パッケージデプロイ用のジョブまたはジョブテンプレートを作成する場合、パッケージバージョンの*バージョン ARN* は `CreateJob` および `DescribeJob` の `destinationPackageVersions` パラメータで表されます。
+ **ソフトウェアパッケージバージョンのすべての属性**
  + ジョブドキュメントでソフトウェアパッケージバージョン置換パラメータのすべての属性を使用するには、次の例を参照してください。`${aws:iot:package:<packageName>:version:<versionName>:attributes}`

**注記**  
パッケージ名、パッケージバージョン、およびすべての属性置換パラメータを一緒に使用できます。ジョブドキュメントで 3 つの置換パラメータをすべて使用する方法については、次の例を参照してください。`${aws:iot:package::version::attributes}`

次の例では、`samplePackage` という名前のソフトウェアパッケージがあり、そのパッケージバージョンには以下の属性を持つ `2.1.5` という名前のパッケージバージョンがあります。
+ 名前: `s3URL`、値: `https://EXAMPIEBUCKET.s3.us-west-2.amazonaws.com/exampleCodeFile`
  + この属性は、Amazon S3 内に保存されているコードファイルの場所を識別します。
+ 名前: `signature`、値: `aaaaabbbbbcccccdddddeeeeefffffggggghhhhhiiiiijjjj`
  + この属性は、デバイスがセキュリティ対策として必要とするコード署名値を提供します。詳細については、「[ジョブのコード署名](https://docs.aws.amazon.com/iot/latest/developerguide/create-manage-jobs.html#create-manage-jobs-code-signing)」を参照してください。**注:** この属性は一例であり、Software Package Catalog やジョブの一部としては必須ではありません。

`s3URL` の場合、ジョブドキュメントパラメータは次のように記述されます。

```
{
"samplePackage": "${aws:iot:package:samplePackage1:version:2.1.5:attributes:s3URL}"
}
```

`signature` の場合、ジョブドキュメントパラメータは次のように記述されます。

```
{
"samplePackage": "${aws:iot:package:samplePackage1:version:2.1.5:attributes:signature}"
}
```

ジョブドキュメント全体は次のように記述されます。

```
{
  ...
  "Steps": {
    "uninstall": ["samplePackage"],
    "download": [ 
      { 
        "samplePackage": "${aws:iot:package:samplePackage1:version:2.1.5:attributes:s3URL}"
      },
    ],
    "signature": [
      "samplePackage" : "${aws:iot:package:samplePackage1:version:2.1.5:attributes:signature}"
    ]
  }
}
```

置換が行われると、次のジョブドキュメントがデバイスにデプロイされます。

```
{
  ...
  "Steps": {
    "uninstall": ["samplePackage"],
    "download": [ 
      { 
        "samplePackage": "https://EXAMPIEBUCKET.s3.us-west-2.amazonaws.com/exampleCodeFile"
      },
    ],
    "signature": [
      "samplePackage" : "aaaaabbbbbcccccdddddeeeeefffffggggghhhhhiiiiijjjj"
    ]
  }
}
```

**置換パラメータ (表示前と表示後)**

代替パラメータは、デフォルトのパッケージバージョンの `$default` など、さまざまなフラグを使用してジョブドキュメントの作成を効率化します。これにより、特定のパッケージ検証で参照されるメタデータがそれらのフラグに自動入力されるため、ジョブデプロイごとに特定のパッケージバージョンメタデータを手動で入力する必要がなくなります。デフォルトのパッケージバージョンの `$default` など、パッケージバージョンの属性の詳細については、「[デプロイ用のジョブドキュメントとパッケージバージョンの準備](#preparing-to-deploy)」を参照してください。

で AWS マネジメントコンソール、パッケージバージョンのジョブデプロイ中に*デプロイ指示ファイルエディタ*ウィンドウの*プレビュー置換*ボタンを切り替えると、置換パラメータの有無にかかわらずジョブドキュメントが表示されます。

`DescribeJob` および `GetJobDocument` API の「置換前」パラメータを使用すると、置換パラメータが削除される前後の API レスポンスを表示できます。`DescribeJob` および `GetJobDocument` API で次の例を参照してください。
+ `DescribeJob`
  + デフォルトビュー

    ```
    {
        "jobId": "<jobId>",
        "description": "<description>",
        "destinationPackageVersions": ["arn:aws:iot:us-west-2:123456789012:package/TestPackage/version/1.0.2"]
    }
    ```
  + 置換前ビュー

    ```
    {
        "jobId": "<jobId>",
        "description": "<description>",
        "destinationPackageVersions": ["arn:aws:iot:us-west-2:123456789012:package/TestPackage/version/$default"]
    }
    ```
+ `GetJobDocument`
  + デフォルトビュー

    ```
    {
        "attributes": {
            "location": "prod-artifacts.s3.us-east-1.amazonaws.com/mqtt-core",
            "signature": "IQoJb3JpZ2luX2VjEIrwEaCXVzLWVhc3QtMSJHMEUCIAofPNPpZ9cI",
            "streamName": "mqtt-core",
            "fileId": "0"
        },
    }
    ```
  + 置換前ビュー

    ```
    {
        "attributes": "${aws:iot:package:TestPackage:version:$default:attributes}",
    }
    ```

 AWS IoT ジョブ、ジョブドキュメントの作成、ジョブのデプロイの詳細については、[「ジョブ](https://docs.aws.amazon.com/iot/latest/developerguide/iot-jobs.html)」を参照してください。

## デプロイ用のジョブドキュメントとパッケージバージョンの準備
<a name="preparing-to-deploy"></a>

パッケージバージョンが作成されると、デプロイの準備中であることを示す `draft` 状態になります。デプロイのパッケージバージョンを準備するには、ジョブドキュメントを作成し、ジョブがアクセスできる場所 (Amazon S3 など) にドキュメントを保存して、パッケージバージョンにジョブドキュメントで使用したい属性値があることを確認し、パッケージバージョンを公開する必要があります。(注意: `draft` 状態にあるパッケージバージョンの属性のみを更新できます)。

単一パッケージデプロイ用の AWS IoT ジョブまたは ジョブテンプレートを作成する場合、ジョブドキュメントをカスタマイズするための以下のオプションがあります。

**デプロイ指示ファイル (`recipe`)**
+ パッケージバージョンのデプロイ指示ファイルには、パッケージバージョンを複数のデバイスにデプロイするためのインラインジョブドキュメントを含むデプロイ指示が含まれています。ファイルは、迅速かつ効率的なジョブデプロイのために、特定のデプロイ手順をパッケージバージョンに関連付けます。

  では AWS マネジメントコンソール、新しいパッケージの作成ワークフロー*のバージョンデプロイ設定*タブのデプロイ*手順ファイルのプレビュー*ウィンドウで ファイルを作成できます。 AWS IoT を使用して、*推奨ファイルから AWS IoT 開始*を使用してパッケージバージョン属性から指示ファイルを自動的に生成するか、*独自のデプロイ指示ファイル*を使用して Amazon S3 バケットに保存されている既存のジョブドキュメントを使用できます。
**注記**  
独自のジョブドキュメントを使用する場合は、*[デプロイ手順ファイルプレビュー]* ウィンドウで直接更新できますが、Amazon S3 バケットに保存されている元のジョブドキュメントは自動的に更新されません。

   AWS CLI または `CreatePackageVersion`、、 `GetPackageVersion`などの API コマンドを使用する場合`UpdatePackageVersion`、 はインラインジョブドキュメントを含むデプロイ指示ファイル`recipe`を表します。

  ジョブドキュメントの詳細については、「[基本概念](key-concepts-jobs.md#basic-concepts-jobs)」を参照してください。

  `recipe` で表されるデプロイ指示ファイルについては、次の例を参照してください。

  ```
  {
      "packageName": "sample-package-name",
      "versionName": "sample-package-version",
      ...
      "recipe": "{...}"
  }
  ```
**注記**  
`recipe` で表されるデプロイインストラクションファイルは、パッケージバージョンがパッケージバージョンメタデータとは別に `published` ステータスの状態にあるときに更新できます。ジョブのデプロイ中は変更できなくなります。

**`Artifact` バージョン属性**
+ ソフトウェアパッケージバージョンのバージョン属性 `artifact` を使用して、パッケージバージョンアーティファクトの Amazon S3 の場所を追加できます。 AWS IoT ジョブを使用してパッケージバージョンのジョブデプロイがトリガーされると、ジョブドキュメントの署名付き URL プレースホルダー ` ${aws:iot:package:<packageName>:version:<versionName>:artifact-location:s3-presigned-url}` は、Amazon S3 バケット、バケットキー、および Amazon S3 バケットに保存されているファイルのバージョンを使用して更新されます。パッケージバージョンのアーティファクトを格納する Amazon S3 バケットは、パッケージバージョンが作成されたのと同じリージョンに配置する必要があります。
**注記**  
Amazon S3 バケットに同じファイルの複数のオブジェクトバージョンを保存するには、バケットでバージョニングを有効にする必要があります。詳細については、「[バケットでのバージョニングの有効化](https://docs.aws.amazon.com/AmazonS3/latest/userguide/manage-versioning-examples.html)」を参照してください。

  `CreatePackageVersion` または `UpdatePackageVersion` API オペレーションを使用するときに Amazon S3 バケット内のパッケージバージョンアーティファクトにアクセスするには、次のアクセス許可が必要です。  
****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": "s3:GetObjectVersion",
              "Resource": "arn:aws:s3:::bucket-name/key-name"
          }
      ]
  }
  ```

  `CreatePackageVersion` および `UpdatePackageVersion` API オペレーションのバージョン属性 `artifact` の詳細については、「[CreatePackageVersion](https://amazonaws.com/iot/latest/apireference/API_CreatePackageVersion.html)」および「[UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html)」を参照してください。

  新しいパッケージバージョンを作成するときに Amazon S3 のアーティファクトの場所をサポートするバージョン属性 `artifact` を示す次の例を参照してください。

  ```
  {
      "packageName": "sample package name",
      "versionName": "1.0",
      "artifact": {
          "s3Location": {
              "bucket": "firmware",
              "key": "image.bin",
              "version": "12345"
          }
      }
  }
  ```
**注記**  
パッケージバージョンが `draft` ステータス状態から `published` ステータス状態に更新されると、パッケージバージョンの属性とアーティファクトの場所は変更不可能になります。この情報を更新するには、新しいパッケージバージョンを作成し、`draft` ステータス状態で更新を実行する必要があります。

**パッケージバージョン**
+ デフォルトのソフトウェアパッケージバージョンは、安全で安定したパッケージバージョンを提供するソフトウェアパッケージの利用可能なバージョンに表示できます。これは、 AWS IoT ジョブを使用してデフォルトのパッケージバージョンをデバイスフリートにデプロイするときのソフトウェアパッケージのベースラインバージョンとして機能します。ソフトウェアパッケージの `$default` パッケージバージョンをデプロイするジョブを作成する場合、ジョブドキュメントと新しいジョブデプロイのパッケージバージョンは `$default` と一致する必要があります。ジョブデプロイのパッケージバージョンは、API コマンドと CLI コマンドの `destinationPackageVersions` と AWS マネジメントコンソールの `VersionARN` で表されます。ジョブドキュメントのパッケージバージョンは、以下に示すジョブドキュメントプレースホルダーによって表されます。

  ```
  arn:aws:iot:<regionCode>:111122223333:package/<packageName>/version/$default
  ```

  デフォルトのパッケージバージョンを使用してジョブまたはジョブテンプレートを作成するには、以下に示すように、`CreateJob` または `CreateJobTemplate` API コマンドで `$default` フラグを使用します。

  ```
  "$ aws iot create-job \
      --destination-package-versions "arn:aws:iot:us-west-2:123456789012:package/TestPackage/version/$default"
      --document file://jobdoc.json
  ```
**注記**  
デフォルトバージョンを参照する `$default` パッケージバージョン属性は、 AWS IoT ジョブを介したジョブデプロイのデフォルトパッケージバージョンを参照する場合にのみ必要なオプションの属性です。

パッケージバージョンに満足したら、 AWS IoT コンソールのソフトウェアパッケージの詳細ページまたは [UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html) API オペレーションを発行して公開します。その後、 AWS IoT コンソールから、または [CreateJob](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateJob.html) API オペレーションを発行してジョブを作成するときに、パッケージバージョンを参照できます。

## デプロイ時のパッケージとバージョンの命名
<a name="naming-package-versions"></a>

ソフトウェアパッケージバージョンをデバイスにデプロイするには、ジョブドキュメントで参照されているソフトウェアパッケージとパッケージバージョンが、`CreateJob` API オペレーションの `destinationPackageVersions` パラメータに記載されているソフトウェアパッケージとパッケージバージョンと一致していることを確認します。一致しない場合は、両方の参照を一致させるように促すエラーメッセージが表示されます。Software Package Catalog のエラーメッセージの詳細については、「[エラーメッセージの一般的なトラブルシューティング](software-package-catalog-troubleshooting.md#spc-general-troubleshooting)」を参照してください。

ジョブドキュメントで参照されているソフトウェアパッケージとパッケージバージョンに加えて、ジョブドキュメントで参照されていない `CreateJob` API オペレーションの `destinationPackageVersions` パラメータに追加のソフトウェアパッケージとパッケージバージョンを含めることができます。追加のソフトウェアパッケージバージョンを適切にインストールするために、必要なインストール情報がジョブドキュメントに含まれていることを確認します。`CreateJob ` API オペレーションの詳細については、「[CreateJob](https://amazonaws.com/iot/latest/apireference/API_CreateJob.html)」を参照してください。

## モノの AWS IoT 動的グループによるジョブのターゲット設定
<a name="jobs-and-dynamic-groups"></a>

Software Package Catalog は、[フリートインデックス作成](https://docs.aws.amazon.com/iot/latest/developerguide/iot-indexing.html)、[AWS IoT のジョブ](https://docs.aws.amazon.com/iot/latest/developerguide/iot-jobs.html)、[AWS IoT のモノの動的グループ](https://docs.aws.amazon.com/iot/latest/developerguide/dynamic-thing-groups.html)と連携して、フリート内のデバイスをフィルタリングしてターゲットにし、デバイスにデプロイするパッケージバージョンを選択します。デバイスの現在のパッケージ情報に基づいてフリートインデックス作成クエリを実行し、それらのモノを AWS IoT ジョブにターゲットにすることができます。ソフトウェアアップデートをリリースすることもできますが、対象となるターゲットデバイスに対してのみです。例えば、現在 `iot-device-client 1.5.09` を実行しているデバイスにのみ設定をデプロイするように指定できます。詳細については、「[モノの動的グループを作成する](https://docs.aws.amazon.com/iot/latest/developerguide/dynamic-thing-groups.html#create-dynamic-thing-group)」を参照してください。

## 予約済みの名前付きシャドウとパッケージバージョン
<a name="reserved-shadow-and-package-versions"></a>

設定されている場合、 AWS IoT ジョブが正常に完了すると、ジョブはモノの予約済み名前付きシャドウ (`$package`) を更新できます。そうすれば、パッケージバージョンをモノの予約済みの名前付きシャドウに手動で関連付ける必要がなくなります。

次のような状況では、パッケージバージョンをモノの予約済みの名前付きシャドウに手動で関連付けるか、更新することを選択できます。
+ インストールされたパッケージバージョンを関連付け AWS IoT Core ずに、モノを に登録します。
+ AWS IoT ジョブは、モノの予約済み名前付きシャドウを更新するように設定されていません。
+ 社内プロセスを使用してパッケージバージョンをフリートにディスパッチすると、そのプロセスは完了 AWS IoT Core しても更新されません。

**注記**  
 AWS IoT ジョブを使用して、予約済み名前付きシャドウ () のパッケージバージョンを更新することをお勧めします`$package`。 AWS IoT Jobs も`$package`シャドウを更新するように設定されている場合、他のプロセス (手動またはプログラムによる API コールなど) を通じてシャドウ内のバージョンパラメータを更新すると、デバイス上の実際のバージョンと予約済みの名前付きシャドウに報告されたバージョンとの間に不整合が発生する可能性があります。

コンソールまたは [https://docs.aws.amazon.com/iot/latest/apireference/API_iotdata_UpdateThingShadow.html](https://docs.aws.amazon.com/iot/latest/apireference/API_iotdata_UpdateThingShadow.html) API オペレーションを使用して、モノの予約済みの名前付きシャドウ (`$package`) にパッケージバージョンを追加または更新できます。詳細については、[「 AWS IoT モノへのパッケージバージョンの関連付け](https://docs.aws.amazon.com/iot/latest/developerguide/associating-package-version.html)」を参照してください。

**注記**  
パッケージバージョンを AWS IoT モノに関連付けても、デバイスソフトウェアは直接更新されません。デバイスソフトウェアを更新するには、パッケージバージョンをデバイスにデプロイする必要があります。

## ソフトウェアパッケージとそのパッケージバージョンのアンインストール
<a name="uninstalling-packages-and-versions"></a>

`$null` は、 AWS IoT Jobs サービスに、デバイスの予約済み名前付きシャドウ から既存のソフトウェアパッケージとパッケージバージョンを削除するように求める予約済みプレースホルダーです`$package`。詳細については、「[予約済みの名前付きシャドウ](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-to-use-software-package-catalog.html#reserved-named-shadow)」を参照してください。

この機能を使用するには、[destinationPackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateJobTemplate.html#iot-CreateJobTemplate-request-destinationPackageVersions) Amazon リソースネーム (ARN) を `$null` に置き換えます。その後、デバイスからソフトウェアを削除するようにサービスに指示する必要があります。

承認された ARN は次の形式を使用します。

```
arn:aws:iot:<regionCode>:111122223333:package/<packageName>/version/$null
```

例えば、

```
$ aws iot create-job \
    ... \
    --destinationPackageVersions ["arn:aws:iot:us-east-1:111122223333:package/samplePackage/version/$null"]
```

# Software Package Catalog の開始方法
<a name="getting-started-with-software-package-catalog"></a>

 AWS IoT Device Management Software Package Catalog は AWS マネジメントコンソール、、 AWS IoT Core API オペレーション、および AWS Command Line Interface () を使用して構築および保守できますAWS CLI。

**注記**  
 AWS IoT フリートインデックス作成を有効にすることは、 Software Package Catalog を使用するための要件です。でソフトウェアパッケージバージョンを作成し、 `CreatePackage` API コマンド AWS マネジメントコンソール を使用するなどの基本的な操作は、 AWS IoT フリートインデックス作成を有効にしないと失敗します。  
Software Package Catalog での AWS IoT フリートインデックス作成の使用の詳細については、「」を参照してください[フリートインデックス作成の準備](preparing-fleet-indexing.md)。

**コンソールの使用**

を使用するには AWS マネジメントコンソール、 AWS アカウントにサインインし、 に移動します[AWS IoT Core](https://console.aws.amazon.com/iot/home)。ナビゲーションペインで、**[ソフトウェアパッケージ]** を選択します。その後で、このセクションからパッケージとそのバージョンを作成および管理できます。

**API または CLI オペレーションの使用**

 AWS IoT Core API オペレーションを使用して、 Software Package Catalog 機能を作成および管理できます。詳細については、「[AWS IoT API リファレンス](https://docs.aws.amazon.com/iot/latest/apireference/)」および「[AWS SDK とツールキット](https://aws.amazon.com/developer/tools/)」を参照してください。 AWS CLI コマンドはカタログも管理します。詳細については、「[AWS IoT CLI コマンドリファレンス](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/index.html)」を参照してください。

**Topics**
+ [ソフトウェアパッケージとパッケージバージョンの作成](creating-package-and-version.md)
+ [AWS IoT ジョブによるパッケージバージョンのデプロイ](deploying-package-version.md)
+ [AWS IoT モノへのパッケージバージョンの関連付け](associating-package-version.md)

# ソフトウェアパッケージとパッケージバージョンの作成
<a name="creating-package-and-version"></a>

次の手順を使用して、 AWS マネジメントコンソールからパッケージと初期バージョンのモノを作成できます。

**ソフトウェアパッケージを作成するには**

1.  AWS アカウントにサインインし、 [AWS IoT コンソール](https://console.aws.amazon.com/iot/home)に移動します。

1.  ナビゲーションペインで、**[ソフトウェアパッケージ]** を選択します。

1.  **[AWS IoT ソフトウェアパッケージ]** ページで、**[パッケージの作成]** を選択します。**[パッケージ管理の依存関係を有効にする]** ダイアログボックスが表示されます。

1.  **[フリートインデックス作成]** で、**[デバイスソフトウェアパッケージとバージョンの追加]** を選択します。これは、Software Package Catalog に必須で、フリートインデックス作成とフリートに関するメトリクスを提供します。

1. [オプション] AWS IoT ジョブが正常に完了したときに予約された名前付きシャドウをジョブで更新する場合は、**ジョブからシャドウの自動更新**を選択します。 AWS IoT ジョブでこの更新を行わない場合は、このチェックボックスはオフのままにします。

1.  [オプション] 予約済み名前付きシャドウを更新する権限を AWS IoT ジョブに付与するには、**「ロールの選択**」で**「ロールの作成**」を選択します。 AWS IoT ジョブでこの更新を行わない場合は、このロールは必要ありません。

1. ロールを作成または選択します。

   1. この目的の**ロールがない**場合: **[ロールを作成]** ダイアログボックスが表示されたら、**[ロール名]** を入力して **[作成]** を選択します。

   1. この目的の**ロールがある場合**: **[ロールを選択]** でロールを選択し、**[IAM ロールにポリシーをアタッチ]** チェックボックスがオンになっていることを確認します。

1. **[確認]** を選択します。**[新しいパッケージを作成]** ページが表示されます。

1. **[パッケージの詳細]** に、**パッケージ名**を入力します。

1. **[パッケージの説明]** に、このパッケージの識別と管理に役立つ情報を入力します。

1. [オプション] タグを使用すると、このパッケージを分類および管理しやすくなります。タグを追加するには、**[タグ]** を展開して **[タグを追加]** を選択し、キーと値のペアを入力します。最大 50 個のタグを入力できます。詳細については、「 [AWS IoT リソースのタグ付け](https://docs.aws.amazon.com/iot/latest/developerguide/tagging-iot.html)」を参照してください。

**新しいパッケージの作成時にパッケージバージョンを追加するには**

1. **[初期バージョン]** に、**[バージョン名]** を入力します。

   パッケージのバージョンを一意に識別するには、[SemVer 形式](https://semver.org/) (例: `1.0.0.0`) を使用することをお勧めします。また、ユースケースに適した別のフォーマット戦略を使用することもできます。詳細については、「[パッケージバージョンライフサイクル](preparing-to-use-software-package-catalog.md#package-version-lifecycle)」を参照してください。

1. **[バージョンの説明]** に、このパッケージバージョンの識別と管理に役立つ情報を入力します。
**注記**  
パッケージバージョンは `draft` 状態で作成されるため、**[デフォルトバージョン]** チェックボックスはオフになっています。パッケージバージョンの作成後、および状態を `published` に変更したときに、デフォルトバージョンに名前を付けることができます。詳細については、「[パッケージバージョンライフサイクル](preparing-to-use-software-package-catalog.md#package-version-lifecycle)」を参照してください。

1. [オプション] このバージョンを管理したり、デバイスに情報を伝えたりするには、**[バージョン属性]** に名前と値のペアを 1 つ以上入力します。入力する名前と値のペアごとに **[属性の追加]** を選択します。詳細については、「[バージョン属性](preparing-to-use-software-package-catalog.md#version-attributes)」を参照してください。

1. [オプション] タグを使用すると、このパッケージを分類および管理しやすくなります。タグを追加するには、**[タグ]** を展開して **[タグを追加]** を選択し、キーと値のペアを入力します。最大 50 個のタグを入力できます。詳細については、「 [AWS IoT リソースのタグ付け](https://docs.aws.amazon.com/iot/latest/developerguide/tagging-iot.html)」を参照してください。

1. [**次へ**] を選択します。

**ソフトウェア部品表をパッケージバージョンに関連付ける (オプション）**

1. **[SBOM 設定]** ウィンドウの **[ステップ 3: バージョン SBOM (オプション)]** で、パッケージバージョンに関連付ける前に、ソフトウェア部品表の検証に使用されるデフォルトの SBOM ファイル形式と検証モードを選択します。

1. **[SBOM ファイルを追加]** ウィンドウで、バージョニングされた Amazon S3 バケットを表す Amazon リソースネーム (ARN) と、デフォルトのタイプが機能しない場合は任意の SBOM ファイル形式を入力します。
**注記**  
パッケージバージョンに複数のソフトウェア部品表がある場合は、1 つの SBOM ファイルまたは複数の SBOM を含む 1 つの zip ファイルを追加できます。

1. **[追加された SBOM ファイル]** ウィンドウで、パッケージバージョンに追加した SBOM ファイルを表示できます。

1. **[パッケージとバージョンの作成]** を選択します。パッケージバージョンページが表示され、**[追加された SBOM ファイル]** ウィンドウで SBOM ファイルの検証ステータスを確認できます。SBOM ファイルが検証されるときに初期ステータスは `In progress` になります。
**注記**  
SBOM ファイルの検証ステータスは、`Invalid file`、`Not started`、`In progress`、`Validated (SPDX)`、`Validated (CycloneDX)` および検証失敗の理由です。

# AWS IoT ジョブによるパッケージバージョンのデプロイ
<a name="deploying-package-version"></a>

次の手順を使用して、 AWS マネジメントコンソールからパッケージバージョンをデプロイできます。

**前提条件**:

開始する前に、以下を実行します。
+  AWS IoT モノを に登録します AWS IoT Core。デバイスを追加する手順については AWS IoT Core、「モノ[のオブジェクトを作成する](https://docs.aws.amazon.com/iot/latest/developerguide/create-iot-resources.html#create-aws-thing)」を参照してください。
+ [オプション] AWS IoT モノのグループまたはモノの動的グループを作成して、パッケージバージョンをデプロイするデバイスをターゲットにします。モノのグループの作成方法については、「[モノの静的グループの作成](https://docs.aws.amazon.com/iot/latest/developerguide/thing-groups.html#create-thing-group)」を参照してください。モノの動的グループの作成方法については、「[モノの動的グループを作成する](https://docs.aws.amazon.com/iot/latest/developerguide/dynamic-thing-groups.html#create-dynamic-thing-group)」を参照してください。
+ ソフトウェアパッケージとパッケージバージョンを作成します。詳細については、「[ソフトウェアパッケージとパッケージバージョンの作成](creating-package-and-version.md)」を参照してください。
+ ジョブドキュメントを作成します。詳細については、「[デプロイ用のジョブドキュメントとパッケージバージョンの準備](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-jobs-for-service-package-catalog.html#preparing-to-deploy)」を参照してください。

**AWS IoT ジョブをデプロイするには**

1. [AWS IoT コンソール](https://console.aws.amazon.com/iot/home)で、**[ソフトウェアパッケージ]** を選択します。

1. デプロイするソフトウェアパッケージを選択します。**[ソフトウェアパッケージ詳細]** ページが表示されます。

1. **[バージョン]** でデプロイするパッケージバージョンを選択し、**[ジョブバージョンのデプロイ]** を選択します。

1. このポータルから初めてジョブをデプロイする場合は、要件を説明するダイアログボックスが表示されます。情報を確認してから、[**確認**] を選択します。

1. デプロイの名前を入力するか、自動生成された名前を **[名前]** フィールドに残します。

1. [オプション] **[説明]** フィールドに、デプロイの目的や内容を特定する説明を入力するか、自動生成された情報をそのまま残します。

   **注意:** ジョブ名および説明のフィールドに個人を特定できる情報を使用しないことをお勧めします。

1. [オプション] このジョブに関連付けるタグをすべて追加します。

1. [**次へ**] を選択します。

1. **[ジョブターゲット]** で、ジョブを受け取るモノまたはモノのグループを選択します。

1. **[ジョブファイル]** フィールドで、ジョブドキュメントの JSON ファイルを指定します。

1. **[Package Catalog サービスとのジョブの統合]** を開きます。

1. ジョブドキュメント内で指定されているパッケージとバージョンを選択します。
**注記**  
ジョブドキュメント内で指定されているのと同じパッケージとパッケージバージョンを選択する必要があります。さらに多くを含めることもできますが、ジョブから発行される指示は、ジョブドキュメントに含まれるパッケージとバージョンについてのみです。詳細については、「[デプロイ時のパッケージとバージョンの命名](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-jobs-for-service-package-catalog.html#naming-package-versions)」を参照してください。

1. [**次へ**] を選択します。

1. [ジョブ設定] ダイアログボックスの [ジョブ設定] ページで、次のいずれかのジョブタイプを選択します。
   + **スナップショットジョブ**: スナップショットジョブは、ターゲットデバイスおよびグループでの実行が終了すると完了します。
   + **連続ジョブ**: 連続ジョブはモノのグループに適用され、指定したターゲットグループに後に追加するあらゆるデバイス上で実行されます。

1. **[その他の設定 - オプション]** ダイアログボックスで、以下のオプションのジョブ設定を確認し、それに応じて選択してください。詳細については、「[ジョブのロールアウト、スケジュール、中止の設定](https://docs.aws.amazon.com/iot/latest/developerguide/jobs-configurations-details.html#job-rollout-abort-scheduling)」および「[ジョブ実行タイムアウトと再試行の設定](https://docs.aws.amazon.com/iot/latest/developerguide/jobs-configurations-details.html#job-timeout-retry)」を参照してください。
   + ロールアウト設定
   + スケジューリング設定
   + ジョブ実行タイムアウトの設定
   + ジョブ実行再試行設定
   + 中止設定

1. 選択したジョブを確認して、**[送信]** を選択します。

ジョブを作成した後、コンソールにより JSON 署名が生成され、ジョブドキュメントに入力されます。 AWS IoT コンソールを使用して、ジョブのステータスを表示したり、ジョブをキャンセルまたは削除したりできます。ジョブを管理するには、[コンソールの [Job hub]](https://console.aws.amazon.com/iot/home#/jobhub) (ジョブハブ) に移動します。

# AWS IoT モノへのパッケージバージョンの関連付け
<a name="associating-package-version"></a>

デバイスにソフトウェアをインストールしたら、パッケージバージョンを AWS IoT モノの予約済みの名前付きシャドウに関連付けることができます。 AWS IoT ジョブがデプロイされて正常に完了した後に、モノの予約済み名前付きシャドウを更新するようにジョブが設定されている場合は、この手順を完了する必要はありません。詳細については、「[予約済みの名前付きシャドウ](preparing-to-use-software-package-catalog.md#reserved-named-shadow)」を参照してください。

**前提条件**:

開始する前に、以下を実行します。
+  AWS IoT モノを作成し、テレメトリを確立します AWS IoT Core。詳細については、[「 の開始方法 AWS IoT Core](https://docs.aws.amazon.com/iot/latest/developerguide/iot-gs.html)」を参照してください。
+  ソフトウェアパッケージとパッケージバージョンを作成します。詳細については、「[ソフトウェアパッケージとパッケージバージョンの作成](creating-package-and-version.md)」を参照してください。
+  パッケージバージョンソフトウェアをデバイスにインストールします。

**注記**  
パッケージバージョンを AWS IoT モノに関連付けても、物理デバイスにソフトウェアは更新またはインストールされません。パッケージバージョンはデバイスにデプロイする必要があります。

**パッケージバージョンを AWS IoT モノに関連付けるには**

1. [AWS IoT コンソール](https://console.aws.amazon.com/iot/home)のナビゲーションペインで、**[すべてのデバイス]** メニューを展開して **[モノ]** を選択します。

1. リストから更新する AWS IoT モノを特定し、モノの名前を選択して詳細ページを表示します。

1. **[詳細]** セクションで、**[パッケージとバージョン]** を選択します。

1.  **[パッケージとバージョンに追加]** を選択します。

1.  **[デバイスパッケージの選択]** で、必要なソフトウェアパッケージを選択します。

1.  **[バージョンを選択]** で、必要なソフトウェアバージョンを選択します。

1.  **[デバイスパッケージの追加]** を選択します。

    パッケージとバージョンが **[選択したパッケージとバージョン]** リストに表示されます。

1.  このモノに関連付けるパッケージとバージョンごとに上記の手順を繰り返します。

1.  完了したら、**[パッケージとバージョンの詳細を追加]** を選択します。**[モノの詳細]** ページが開き、新しいパッケージとバージョンがリストに表示されます。