翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
デプロイの作成
モノまたはモノグループをターゲットとするデプロイを作成できます。
デプロイを作成するときは、デプロイするソフトウェアコンポーネントと、デプロイジョブをターゲットデバイスにロールアウトする方法を設定します。デプロイは、 AWS CLIに提供する JSON ファイルで定義できます。
デプロイターゲットによって、コンポーネントを実行するデバイスが決まります。1 つのコアデバイスにデプロイするには、モノを指定します。複数のコアデバイスにデプロイするには、これらのデバイスが含まれるモノグループを指定します。モノのグループを設定する方法についての詳細は、「AWS IoT デベロッパーガイド」の「静的モノグループ」と「動的モノグループ」を参照してください。
このセクションのステップに従って、ターゲットへのデプロイを作成します。デプロイがあるターゲット上で、ソフトウェアコンポーネントを更新する方法についての詳細は、「展開の改訂」を参照してください。
警告
CreateDeployment 動作では、コアデバイスからコンポーネントをアンインストールできます。コンポーネントが新しいデプロイではなく以前のデプロイに存在する場合、コアデバイスはそのコンポーネントをアンインストールします。コンポーネントのアンインストールを回避するには、まず ListDeployments 動作を使用して、デプロイのターゲットに既存のデプロイがすでにあるかどうかを確認します。次に、GetDeployment 動作を使用して、新しいデプロイを作成するときに、その既存のデプロイから開始するようにします。
デプロイを作成するには (AWS CLI)
-
deployment.jsonという名前のファイルを作成して、次の JSON オブジェクトをファイルにコピーします。targetArnをデプロイがターゲットとする AWS IoT モノまたはモノグループの ARN に置き換えます。モノおよびモノグループの ARN の形式は、次のとおりです。-
モノ:
arn:aws:iot:region:account-id:thing/thingName -
モノのグループ:
arn:aws:iot:region:account-id:thinggroup/thingGroupName
{ "targetArn": "targetArn" } -
-
デプロイメント対象に、修正が必要な既存のデプロイメントがあるかどうかをチェックします。以下を行います:
-
次のコマンドを実行して、デプロイメント対象のデプロイメントを一覧表示します。
targetArnをターゲットの AWS IoT モノまたはモノグループの ARN に置き換えます。aws greengrassv2 list-deployments --target-arntargetArnレスポンスには、対象の最新デプロイメントのリストが含まれています。レスポンスが空の場合は、ターゲットに既存のデプロイがありません。ステップ 3 はスキップできます。そうでない場合は、次のステップで使用するため、レスポンスから
deploymentIdをコピーします。注記
ターゲットの最新リビジョン以外のデプロイを修正することもできます。
--history-filter ALL引数を指定して、ターゲットのすべてのデプロイを一覧表示します。次に、修正するデプロイの ID をコピーします。 -
次のコマンドを実行して、デプロイの詳細を取得します。これらの詳細には、メタデータ、コンポーネント、ジョブ設定が含まれます。
deploymentIdを前のステップの ID に置き換えます。aws greengrassv2 get-deployment --deployment-iddeploymentIdレスポンスには、デプロイの詳細が含まれています。
-
前のコマンドのレスポンスにある次のキーと値のペアを
deployment.jsonにコピーします。これらの値を、新しいデプロイに変更することができます。-
deploymentName- デプロイの名前。 -
components- デプロイのコンポーネント。コンポーネントをアンインストールする場合は、このオブジェクトから削除してください。 -
deploymentPolicies- デプロイのポリシー。 -
iotJobConfiguration- デプロイのジョブ設定。 -
tags- デプロイのタグ。
-
-
-
(オプション) デプロイの名前を定義します。
deploymentNameをデプロイの名前で置き換えます。{ "targetArn": "targetArn", "deploymentName": "deploymentName" } -
各コンポーネントを追加して、ターゲットデバイスをデプロイします。そのためには、キーと値のペアを
componentsオブジェクトに追加します。ここでのキーはコンポーネント名、値はそのコンポーネントの詳細が含まれるオブジェクトになります。追加する各コンポーネントに対して、次の詳細を指定します。-
version- デプロイするコンポーネントのバージョン。 -
configurationUpdate- デプロイする設定の更新。更新とは、各ターゲットデバイス上のコンポーネントにある既存の設定、またはターゲットデバイス上に既存の設定がない場合はコンポーネントのデフォルト設定を変更するパッチ操作のことを指します。次の設定更新を指定できます。 -
runWith– (オプション) AWS IoT Greengrass Core ソフトウェアがコアデバイスでこのコンポーネントのプロセスを実行するために使用するシステムプロセスオプション。runWithオブジェクトでパラメータを省略すると、 AWS IoT Greengrass Core ソフトウェアは Greengrass nucleus コンポーネントで設定したデフォルト値を使用します。以下のいずれかのオプションを指定できます。
-
posixUser- Linux コアデバイスでこのコンポーネントを実行する際に使用する POSIX システムユーザーおよびオプションでグループ。ユーザーまたはグループを指定する場合は、各 Linux コアデバイス上に存在している必要があります。ユーザーとグループをuser:groupの形式に従ってコロン (:) で区切って指定します。グループはオプションです。グループを指定しない場合、 AWS IoT Greengrass Core ソフトウェアはユーザーのプライマリグループを使用します。詳細については、「コンポーネントを実行するユーザーを設定する」を参照してください。 -
windowsUser– Windows コアデバイスでこのコンポーネントを実行する際に使用する Windows ユーザー。ユーザーは各 Windows コアデバイスに存在し、その名前とパスワードが LocalSystem アカウントの認証情報マネージャーインスタンスに格納されている必要があります。詳細については、「コンポーネントを実行するユーザーを設定する」を参照してください。この機能は、Greengrass nucleus コンポーネントの v2.5.0 以降に利用できます。
-
systemResourceLimits- このコンポーネントのプロセスに適用されるシステムリソースの制限。システムリソースの制限を、ジェネリックおよびコンテナ化されていない Lambda コンポーネントプロセスに適用することができます。詳細については、「コンポーネントのシステムリソース制限を設定する」を参照してください。以下のいずれかのオプションを指定できます。
-
cpus– このコンポーネントのプロセスがコアデバイスで使用できる CPU 時間の最大量。コアデバイスの合計 CPU 時間は、デバイスの CPU コア数と同じです。例えば、4 つの CPU コアを持つコアデバイスの場合は、この値を2に設定することで、このコンポーネントのプロセスを各 CPU コアの 50% の使用率に制限することができます。CPU コアが 1 つのデバイスの場合は、この値を0.25に設定することで、このコンポーネントのプロセスを CPU の 25% の使用率に制限することができます。この値を CPU コア数よりも大きい数に設定した場合、 AWS IoT Greengrass Core ソフトウェアはコンポーネントの CPU 使用率を制限しません。 -
memory– このコンポーネントのプロセスがコアデバイスで使用できる RAM の最大量 (キロバイト単位)。
この機能は、Greengrass nucleus コンポーネントの v2.4.0 以降で使用できます。現在、この機能は Windows AWS IoT Greengrass コアデバイスでサポートされていません。
-
-
例 基本設定更新の例
次の
componentsオブジェクト例は、pythonVersionという名前の設定パラメータを必要とするコンポーネントであるcom.example.PythonRuntimeをデプロイするように指定しています。{ "targetArn": "targetArn", "deploymentName": "deploymentName", "components": { "com.example.PythonRuntime": { "componentVersion": "1.0.0", "configurationUpdate": { "merge": "{\"pythonVersion\":\"3.7\"}" } } } }例 リセット更新とマージ更新による設定更新の例
com.example.IndustrialDashboardは産業用ダッシュボードコンポーネントの一例です。次のデフォルト設定が設定されています。{ "name": null, "mode": "REQUEST", "network": { "useHttps": true, "port": { "http": 80, "https": 443 }, }, "tags": [] }次の設定更新では、次の手順が指定されています。
-
HTTPS 設定をデフォルト値 (
true) にリセットする。 -
産業タグのリストを空のリストにリセットする。
-
2 つのボイラーの温度と圧力のデータストリームを識別する産業用タグのリストをマージする。
{ "reset": [ "/network/useHttps", "/tags" ], "merge": { "tags": [ "/boiler/1/temperature", "/boiler/1/pressure", "/boiler/2/temperature", "/boiler/2/pressure" ] } }以下の
componentsオブジェクト例では、この産業用ダッシュボードコンポーネントと設定更新をデプロイするように指定しています。{ "targetArn": "targetArn", "deploymentName": "deploymentName", "components": { "com.example.IndustrialDashboard": { "componentVersion": "1.0.0", "configurationUpdate": { "reset": [ "/network/useHttps", "/tags" ], "merge": "{\"tags\":[\"/boiler/1/temperature\",\"/boiler/1/pressure\",\"/boiler/2/temperature\",\"/boiler/2/pressure\"]}" } } } } -
-
(オプション) デプロイのデプロイポリシーを定義します。コアデバイスがデプロイを安全に適用できるタイミングや、コアデバイスがデプロイの適用に失敗した場合の対処方法を設定できます。そのためには、
deploymentPoliciesオブジェクトをdeployment.jsonに追加し、以下のいずれかを実行します。-
(オプション) コンポーネント更新ポリシー (
componentUpdatePolicy) を指定します。このポリシーは、コンポーネントをデプロイする準備が整うまで、コンポーネントの更新を延期できるかどうかを定義します。例えば、再起動して更新を適用する前に、リソースをクリーンアップしたり、重要なアクションを完了する必要がある場合などです。このポリシーは、コンポーネントが更新通知に対してレスポンスする必要がある時間枠も定義します。このポリシーは、以下のパラメータを使用するオブジェクトです。
-
action- (オプション) コンポーネントに通知し、更新の準備が整ったときに報告されるまで待機するかどうかを示します。次のオプションから選択します。-
NOTIFY_COMPONENTS- デプロイは、コンポーネントを停止して更新する前に、各コンポーネントに通知します。コンポーネントは SubscribeToComponentUpdates IPC 操作を使用して、これらの通知を受信することができます。 -
SKIP_NOTIFY_COMPONENTS- デプロイは、コンポーネントに通知せず、安全に更新できるまで待機しません。
デフォルトは
NOTIFY_COMPONENTSです。 -
-
timeoutInSeconds各コンポーネントが DeferComponentUpdate IPC 操作による更新通知に応答する必要がある時間枠 (秒単位)。コンポーネントがこの時間内に応答しなかった場合、コアデバイスでデプロイが実行されます。デフォルトは 60 秒です。
-
-
(オプション) 設定検証ポリシー (
configurationValidationPolicy) を指定します。このポリシーは、各コンポーネントがデプロイからの設定更新を検証する必要がある期間を定義します。コンポーネントは SubscribeToValidateConfigurationUpdates IPC 操作を使用して、自身に対する設定更新の通知にサブスクライブすることができます。その後、コンポーネントは SendConfigurationValidityReport IPC オペレーションを使用して、設定の更新が有効かどうかを AWS IoT Greengrass Core ソフトウェアに通知できます。設定更新が有効でない場合、デプロイは失敗します。のポリシーは、次のパラメータを使用するオブジェクトです。
-
timeoutInSeconds(オプション) 各コンポーネントが設定更新を検証する必要がある時間 (秒単位)。コンポーネントがこの時間内に応答しなかった場合、コアデバイスでデプロイが実行されます。デフォルトは 30 秒です。
-
-
(オプション) 障害処理ポリシー (
failureHandlingPolicy) を指定します。このポリシーは、デプロイが失敗した場合にデバイスをロールバックするかどうかを定義する文字列です。次のオプションから選択します。-
ROLLBACK– コアデバイスでデプロイが失敗した場合、 AWS IoT Greengrass Core ソフトウェアはそのコアデバイスを以前の設定にロールバックします。 -
DO_NOTHING– コアデバイスでデプロイが失敗した場合、 AWS IoT Greengrass Core ソフトウェアは新しい設定を保持します。この場合、新しい設定が有効でない場合には、コンポーネントが壊れる可能性があります。
デフォルトは
ROLLBACKです。 -
deployment.jsonでのデプロイは次の例のようになります。{ "targetArn": "targetArn", "deploymentName": "deploymentName", "components": { "com.example.IndustrialDashboard": { "componentVersion": "1.0.0", "configurationUpdate": { "reset": [ "/network/useHttps", "/tags" ], "merge": "{\"tags\":[\"/boiler/1/temperature\",\"/boiler/1/pressure\",\"/boiler/2/temperature\",\"/boiler/2/pressure\"]}" } } }, "deploymentPolicies": { "componentUpdatePolicy": { "action": "NOTIFY_COMPONENTS", "timeoutInSeconds": 30 }, "configurationValidationPolicy": { "timeoutInSeconds": 60 }, "failureHandlingPolicy": "ROLLBACK" } } -
-
(オプション) デプロイを停止、ロールアウト、またはタイムアウトする方法を定義します。 AWS IoT Greengrass は AWS IoT Core ジョブを使用してコアデバイスにデプロイを送信するため、これらのオプションは AWS IoT Core ジョブの設定オプションと同じになります。詳細については、「AWS IoT デベロッパーガイド」の「ジョブのロールアウトと中止設定」を参照してください。
ジョブオプションを定義するには、
iotJobConfigurationオブジェクトをdeployment.jsonに追加します。次に、設定するオプションを定義します。deployment.jsonでのデプロイは次の例のようになります。{ "targetArn": "targetArn", "deploymentName": "deploymentName", "components": { "com.example.IndustrialDashboard": { "componentVersion": "1.0.0", "configurationUpdate": { "reset": [ "/network/useHttps", "/tags" ], "merge": "{\"tags\":[\"/boiler/1/temperature\",\"/boiler/1/pressure\",\"/boiler/2/temperature\",\"/boiler/2/pressure\"]}" } } }, "deploymentPolicies": { "componentUpdatePolicy": { "action": "NOTIFY_COMPONENTS", "timeoutInSeconds": 30 }, "configurationValidationPolicy": { "timeoutInSeconds": 60 }, "failureHandlingPolicy": "ROLLBACK" }, "iotJobConfiguration": { "abortConfig": { "criteriaList": [ { "action": "CANCEL", "failureType": "ALL", "minNumberOfExecutedThings": 100, "thresholdPercentage": 5 } ] }, "jobExecutionsRolloutConfig": { "exponentialRate": { "baseRatePerMinute": 5, "incrementFactor": 2, "rateIncreaseCriteria": { "numberOfNotifiedThings": 10, "numberOfSucceededThings": 5 } }, "maximumPerMinute": 50 }, "timeoutConfig": { "inProgressTimeoutInMinutes": 5 } } } -
(オプション) タグ (
tags) をデプロイに追加します。詳細については、「AWS IoT Greengrass Version 2 リソースにタグを付ける」を参照してください。 -
以下のコマンドを実行して、
deployment.jsonからデプロイを作成します。aws greengrassv2 create-deployment --cli-input-json file://deployment.jsonレスポンスには、このデプロイを識別する
deploymentIdが含まれます。デプロイ ID を使用して、デプロイのステータスを確認できます。詳細については、「デプロイのステータスを確認する」を参照してください。