翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
コアデバイスにデプロイするコンポーネントをパブリッシュ
コンポーネントのバージョンを構築または完了したら、それを 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、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 に追加します。
-
コンポーネントレシピ AWS IoT Greengrass から にコンポーネントバージョンを作成します。
注記
アップロードする各コンポーネントバージョンは一意である必要があります。アップロード後は編集できないため、必ず正しいコンポーネントバージョンをアップロードしてください。
これらの手順に従って、開発コンピュータまたは Greengrass コアデバイスからコンポーネントをパブリッシュできます。
コンポーネントをパブリッシュするには (シェルコマンド)
-
コンポーネントが AWS IoT Greengrass サービスに存在するバージョンを使用している場合は、コンポーネントのバージョンを変更する必要があります。テキストエディタで recipe を開き、バージョンをインクリメントしてファイルを保存します。コンポーネントに加えた変更を反映する新しいバージョンを選択します。
注記
AWS IoT Greengrass はコンポーネントにセマンティックバージョンを使用します。セマンティックバージョンは、major.minor.patch といった番号システムに準拠します。例えば、バージョン
1.0.0は、コンポーネントの最初のメジャーリリースを表しています。詳細については、「セマンティックバージョンの仕様」を参照してください。 -
コンポーネントにアーティファクトがある場合、次の手順を実行します。
-
コンポーネントのアーティファクトを の S3 バケットに発行します AWS アカウント。
ヒント
S3 バケットのアーティファクトへのパスに、コンポーネント名とバージョンを含めることをお勧めします。この命名規則は、以前のバージョンのコンポーネントが使用していたアーティファクトを維持するうえで役立ち、以前のコンポーネントバージョンを引き続きサポートできるようにします。
次のコマンドを実行して、アーティファクトファイルを S3 バケットにパブリッシュします。amzn-s3-demo-bucket をバケットの名前に置き換えて、
artifacts/com.example.HelloWorld/1.0.0/artifact.pyをアーティファクトファイルへのパスに置き換えます。aws s3 cpartifacts/com.example.HelloWorld/1.0.0/artifact.pys3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/artifact.pyヒント
大規模なアーティファクトのコンポーネント作成を高速化するには、SHA-256 チェックサムを有効にした単一パートアップロードとしてアーティファクトを S3 にアップロードすることを検討してください。で
--checksum-algorithm SHA256オプションを使用し AWS CLI、マルチパートアップロードを防ぐためにファイルサイズよりもs3.multipart_threshold大きく設定します。たとえば、2 GB のアーティファクトをアップロードするには:aws configure set s3.multipart_threshold 5GB aws s3 cpartifacts/com.example.HelloWorld/1.0.0/artifact.bins3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/artifact.bin--checksum-algorithm SHA256S3 バケットが制限付きバケットポリシーを使用している場合は、 が事前計算されたチェックサム AWS IoT Greengrass を取得できるように、ポリシーで
s3:GetObjectAttributesアクションが許可されていることを確認してください。重要
コアデバイスのロールは、デフォルトで S3 バケットへのアクセスを許可しません。この S3 バケットを初めて使用する場合、コアデバイスがこの S3 バケットからコンポーネントアーティファクトを取得するため、ロールに許可を追加する必要があります。詳細については、「コンポーネントのアーティファクトの S3 バケットへのアクセスを許可する」を参照してください。
-
Artifactsという名前のリストが存在しない場合、コンポーネント recipe に追加します。Artifactsリストは各マニフェストに表示され、サポートする各プラットフォームにおけるコンポーネントの要件 (またはすべてのプラットフォームに対するコンポーネントのデフォルト要件) を定義します。 -
各アーティファクトをアーティファクトのリストに追加、あるいは既存アーティファクトの URI を更新します。Amazon S3 URI は、バケット名とバケット内のアーティファクトオブジェクトへのパスで設定されます。アーティファクトの Amazon S3 URI は次の例のようになります。
s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/artifact.py
これらのステップが完了したら、recipe の
Artifactsリストは次のようになります。recipe の詳細については、「AWS IoT Greengrass コンポーネントレシピリファレンス」を参照してください。
-
-
AWS IoT Greengrass コンソールを使用して、レシピファイルからコンポーネントを作成します。
次のコマンドを実行して、recipe ファイルからコンポーネントを作成します。このコマンドはコンポーネントを作成し、 のプライベート AWS IoT Greengrass コンポーネントとして公開します AWS アカウント。
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 コンポーネントをデバイスにデプロイする」を参照してください。