コアデバイスにデプロイするコンポーネントをパブリッシュ
コンポーネントのバージョンを構築または完成した後、AWS IoT Greengrass サービスにパブリッシュできます。次に、Greengrass コアデバイスにデプロイできます。
Greengrass Development Kit CLI (GDK CLI) を使用してコンポーネントを開発と構築する場合、GDK CLI を使用してコンポーネントを AWS クラウド にパブリッシュできます。それ以外の場合、組込み型のシェルコマンドと AWS CLI を使用してコンポーネントをパブリッシュします。
AWS CloudFormation を使用して、テンプレートでコンポーネントと他の AWS リソースを作成することもできます。詳細については、「AWS CloudFormation ユーザーガイド」の「AWS CloudFormation とは」と「AWS::GreengrassV2::ComponentVersion」を参照してください。
コンポーネントをパブリッシュ (GDK CLI)
このセクションの指示に従って、GDK CLI を使用してコンポーネントをパブリッシュします。GDK CLI は、S3 バケットにビルドアーティファクトをアップロード、recipe のアーティファクト URI を更新、recipe からコンポーネントを作成します。S3 バケットとリージョンが GDK CLI 設定ファイルを使用するように指定します。
GDK CLI v1.1.0 以降を使用する場合、--bucket
引数を指定して、GDK CLI がコンポーネントのアーティファクトをアップロードする S3 バケットを指定します。この引数を指定しない場合、GDK CLI は名前が
である S3 バケットにアップロードします。ここでは、bucket
-region
-accountId
gdk-config.json
で指定する値は bucket
と region
であり、accountId
は AWS アカウント ID です。GDK CLI は、バケットが存在しない場合に作成します。
コアデバイスのロールは、デフォルトで S3 バケットへのアクセスを許可しません。この S3 バケットを初めて使用する場合、コアデバイスがこの S3 バケットからコンポーネントアーティファクトを取得するため、ロールに許可を追加する必要があります。詳細については、「コンポーネントのアーティファクトの S3 バケットへのアクセスを許可する」を参照してください。
Greengrass コンポーネントをパブリッシュするには (GDK CLI)
-
コマンドプロントまたはターミナルでコンポーネントフォルダを開きます。
-
まだ作成していない場合、Greengrass コンポーネントを作成します。コンポーネントビルドコマンドは、コンポーネントフォルダにある
greengrass-build
フォルダに recipe とアーティファクトを作成します。以下のコマンドを実行します。gdk component build
-
コンポーネントを AWS クラウド にパブリッシュします。コンポーネントをパブリッシュコマンドは、コンポーネントのアーティファクトを Amazon S3 にアップロードし、各アーティファクトの URI でコンポーネントの recipe を更新します。次に、コンポーネントを AWS IoT Greengrass サービスに作成します。
注記 AWS IoT Greengrass は、コンポーネントの作成時に各アーティファクトのダイジェストを計算します。つまり、コンポーネントを作成した後、S3 バケットのアーティファクトファイルを修正することはできません。そうした場合、ファイルダイジェストが一致しないため、このコンポーネントを含むデプロイは失敗します。アーティファクトファイルを修正する場合、コンポーネントの新しいバージョンを作成する必要があります。
GDK CLI 設定ファイルのコンポーネントバージョンに
NEXT_PATCH
を指定した場合、GDK CLI は AWS IoT Greengrass サービスにまだ存在しない次のパッチバージョンを使用します。以下のコマンドを実行します。
gdk component publish
出力には、GDK CLI が作成したコンポーネントのバージョンが示されます。
コンポーネントをパブリッシュした後、コンポーネントをコアデバイスにデプロイできます。詳細については、「デバイスに AWS IoT Greengrass コンポーネントのデプロイ」を参照してください。
コンポーネントをパブリッシュ (シェルコマンド)
シェルコマンドと AWS Command Line Interface (AWS CLI) を使用してコンポーネントをパブリッシュするには、次の手順を実行します。コンポーネントをパブリッシュするときは、次の手順を実行します。
-
S3 バケットにコンポーネントアーティファクトをパブリッシュします。
-
各アーティファクトの Amazon S3 URI をコンポーネント recipe に追加します。
-
コンポーネント recipe から AWS IoT Greengrass でコンポーネントバージョンを作成します。
アップロードする各コンポーネントバージョンは一意である必要があります。アップロード後は編集できないため、必ず正しいコンポーネントバージョンをアップロードしてください。
これらの手順に従って、開発コンピュータまたは Greengrass コアデバイスからコンポーネントをパブリッシュできます。
コンポーネントをパブリッシュするには (シェルコマンド)
-
コンポーネントが、AWS IoT Greengrass サービスに存在するバージョンを使用している場合、コンポーネントのバージョンを変更する必要があります。テキストエディタで recipe を開き、バージョンをインクリメントしてファイルを保存します。コンポーネントに加えた変更を反映する新しいバージョンを選択します。
注記 AWS IoT Greengrass はコンポーネントのセマンティックバージョンを使用します。セマンティックバージョンは、major.minor.patch といった番号システムに準拠します。例えば、バージョン
1.0.0
は、コンポーネントの最初のメジャーリリースを表しています。詳細については、「セマンティックバージョンの仕様」を参照してください。 -
コンポーネントにアーティファクトがある場合、次の手順を実行します。
-
AWS アカウント の S3 バケットにコンポーネントのアーティファクトをパブリッシュします。
ヒント S3 バケットのアーティファクトへのパスに、コンポーネント名とバージョンを含めることをお勧めします。この命名規則は、以前のバージョンのコンポーネントが使用していたアーティファクトを維持するうえで役立ち、以前のコンポーネントバージョンを引き続きサポートできるようにします。
次のコマンドを実行して、アーティファクトファイルを S3 バケットにパブリッシュします。
DOC-EXAMPLE-BUCKET
をバケットの名前に置き換えて、artifacts/com.example.HelloWorld/1.0.0/artifact.py
をアーティファクトファイルへのパスに置き換えます。aws s3 cp
artifacts/com.example.HelloWorld/1.0.0/artifact.py
s3://DOC-EXAMPLE-BUCKET
/artifacts/com.example.HelloWorld/1.0.0/artifact.py
重要 コアデバイスのロールは、デフォルトで S3 バケットへのアクセスを許可しません。この S3 バケットを初めて使用する場合、コアデバイスがこの S3 バケットからコンポーネントアーティファクトを取得するため、ロールに許可を追加する必要があります。詳細については、「コンポーネントのアーティファクトの S3 バケットへのアクセスを許可する」を参照してください。
-
Artifacts
という名前のリストが存在しない場合、コンポーネント recipe に追加します。Artifacts
リストは各マニフェストに表示され、サポートする各プラットフォームにおけるコンポーネントの要件 (またはすべてのプラットフォームに対するコンポーネントのデフォルト要件) を定義します。 -
各アーティファクトをアーティファクトのリストに追加、あるいは既存アーティファクトの URI を更新します。Amazon S3 URI は、バケット名とバケット内のアーティファクトオブジェクトへのパスで設定されます。アーティファクトの Amazon S3 URI は次の例のようになります。
s3://
DOC-EXAMPLE-BUCKET
/artifacts/com.example.HelloWorld/1.0.0/artifact.py
これらのステップが完了したら、recipe の
Artifacts
リストは次のようになります。recipe の詳細については、「AWS IoT Greengrass コンポーネントレシピのリファレンス」を参照してください。
-
-
AWS IoT Greengrass コンソールを使用して、recipe ファイルからコンポーネントを作成します。
次のコマンドを実行して、recipe ファイルからコンポーネントを作成します。このコマンドは、コンポーネントを作成して AWS アカウント のプライベート AWS IoT Greengrass コンポーネントとしてパブリッシュします。
path/to/recipeFile
を recipe ファイルへのパスに置き換えます。aws greengrassv2 create-component-version --inline-recipe fileb://
path/to/recipeFile
レスポンスから
arn
をコピーして、次のステップでコンポーネントの状態をチェックします。注記 AWS IoT Greengrass は、コンポーネントの作成時に各アーティファクトのダイジェストを計算します。つまり、コンポーネントを作成した後、S3 バケットのアーティファクトファイルを修正することはできません。そうした場合、ファイルダイジェストが一致しないため、このコンポーネントを含むデプロイは失敗します。アーティファクトファイルを修正する場合、コンポーネントの新しいバージョンを作成する必要があります。
-
AWS IoT Greengrass サービスの各コンポーネントには状態があります。次のコマンドを実行して、この手順でパブリッシュするコンポーネントバージョンの状態を確認します。
com.example.HelloWorld
と1.0.0
をクエリするコンポーネントバージョンに置き換えます。arn
を、前のステップで書き留めた ARN に置き換えます。aws greengrassv2 describe-component --arn "arn:aws:greengrass:
region
:account-id
:components:com.example.HelloWorld
:versions:1.0.0
"このオペレーションは、コンポーネントのメタデータを含むレスポンスを返します。メタデータには、コンポーネントの状態とエラーを含む
status
オブジェクトが含まれています (該当する場合)。コンポーネントの状態が
DEPLOYABLE
な場合、コンポーネントをデバイスにデプロイできます。詳細については、「デバイスに AWS IoT Greengrass コンポーネントのデプロイ」を参照してください。