翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
コアデバイスでのコンポーネントの開発が完了したら、コンポーネントを AWS クラウドの AWS IoT Greengrass
サービスにアップロードすることができます。また、コンポーネントをAWS IoT Greengrass コンソール
-
コンポーネントのアーティファクトを S3 バケットにのアップロードします。
-
各アーティファクトの Amazon Simple Storage Service (Amazon S3) URI をコンポーネント recipe に追加します。
-
コンポーネントレシピ AWS IoT Greengrass から にコンポーネントを作成します。
このセクションでは、Greengrass コアデバイスでこれらのステップを完了して、Hello World コンポーネントを AWS IoT Greengrass サービスにアップロードします。
-
AWS アカウントの S3 バケットを使用して、 AWS IoT Greengrass コンポーネントアーティファクトをホストします。コンポーネントをコアデバイスにデプロイすると、デバイスがバケットからコンポーネントのアーティファクトをダウンロードします。
既存の S3 バケットを使用するか、新しいバケットを作成することができます。
-
Amazon S3 コンソール
で [Buckets] (バケット)、[Create bucket] (バケットの作成) の順に選択します。 -
[Bucket name] (バケット名) に、一意のバケット名前を入力します。たとえば、
greengrass-component-artifacts-
を使用できます。region
-123456789012
123456789012
を AWS アカウント ID に置き換え、region
AWS リージョン をこのチュートリアルで使用する に置き換えます。 -
AWS リージョンの場合は、このチュートリアルで使用する AWS リージョンを選択します。
-
[Create bucket] (バケットの作成) を選択します。
-
[Buckets] (バケット) で作成したバケットを選択し、
hello_world.py
スクリプトをバケット内のartifacts/com.example.HelloWorld/1.0.0
フォルダにアップロードします。オブジェクトを S3 バケットにアップロードする際の詳細については、「Amazon Simple Storage Service ユーザーガイド」の「オブジェクトをアップロードする」を参照してください。 -
S3 バケット内にある
hello_world.py
オブジェクトの S3 URI をコピーします。この URI は次の例のようになります。amzn-s3-demo-bucket を S3 バケットの名前に置き換えます。s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py
-
-
コアデバイスが S3 バケット内のコンポーネントアーティファクトにアクセスすることを許可します。
各コアデバイスには、 AWS クラウドとやり取り AWS IoT してログを送信できるコアデバイス IAM ロールがあります。このデバイスロールは、デフォルトでは S3 バケットへのアクセスを許可しないため、コアデバイスが S3 バケットからコンポーネントアーティファクトを取得できるようにするポリシーを作成して、アタッチする必要があります。
デバイスのロールで S3 バケットへのアクセスが既に許可されている場合は、このステップを省略できます。そうでない場合は、次に示す方法で、アクセスを許可する IAM ポリシーを作成し、ロールにアタッチします。
-
[IAM console]
(IAM コンソール) ナビゲーションメニューで、[Policies] (ポリシー) を選択し、[Create policy] (ポリシーの作成) を選択します。 -
JSON タブで、プレースホルダーコンテンツを以下のポリシーに置き換えます。amzn-s3-demo-bucket をコアデバイスでダウンロードするコンポーネントアーティファクトが含まれる S3 バケットの名前に置き換えます。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*" } ] }
-
[Next (次へ)] を選択します。
-
[ポリシーの詳細セクション] で、[名前] に「
MyGreengrassV2ComponentArtifactPolicy
」と入力します。 -
[Create policy] を選択します。
-
[IAM console]
(IAM コンソール) ナビゲーションメニューで、[Role] (ロール) をクリックし、コアデバイスのロールの名前を選択します。 AWS IoT Greengrass Core ソフトウェアをインストールしたときに、このロール名を指定しました。名前を指定していない場合、デフォルトで GreengrassV2TokenExchangeRole
が設定されます。 -
[Permissions] (アクセス許可) タブを選択し、[Add permissions] (アクセス許可の追加) を選択してから、[Attach policies] (ポリシーの添付) を選択します。
-
[アクセス許可の追加] ページで、作成した
MyGreengrassV2ComponentArtifactPolicy
ポリシーの横にあるチェックボックスを選択し、[アクセス許可の追加] を選択します。
-
-
コンポーネント recipe を使用して、AWS IoT Greengrass コンソール
にコンポーネントを作成します。 -
AWS IoT Greengrass コンソール
のナビゲーションメニューで、[Components] (コンポーネント) 、[Create component] (コンポーネントを作成) の順に選択します。 -
[Component information] (コンポーネント情報) で、[Enter recipe as JSON] (recipe を JSON として入力します) を選択します。プレースホルダ recipe は、次の例のようになります。
{ "RecipeFormatVersion": "2020-01-25", "ComponentName": "com.example.HelloWorld", "ComponentVersion": "1.0.0", "ComponentDescription": "My first AWS IoT Greengrass component.", "ComponentPublisher": "Amazon", "ComponentConfiguration": { "DefaultConfiguration": { "Message": "world" } }, "Manifests": [ { "Platform": { "os": "linux" }, "Lifecycle": { "Run": "python3 -u {artifacts:path}/hello_world.py \"{configuration:/Message}\"" }, "Artifacts": [ { "URI": "s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py" } ] }, { "Platform": { "os": "windows" }, "Lifecycle": { "Run": "py -3 -u {artifacts:path}/hello_world.py \"{configuration:/Message}\"" }, "Artifacts": [ { "URI": "s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py" } ] } ] }
-
各
Artifacts
セクションにあるプレースホルダー URI を、hello_world.py
オブジェクトの S3 URI に置き換えます。 -
[Create component] (コンポーネントの作成) を選択します。
-
com.example.HelloWorld コンポーネントページで、コンポーネントの [Status] (ステータス) が [Deployable] (デプロイ可能) になっていることを確認します。
-
Hello World コンポーネントをアップロードするには
-
で S3 バケット AWS アカウント を使用して、 AWS IoT Greengrass コンポーネントアーティファクトをホストします。コンポーネントをコアデバイスにデプロイすると、デバイスがバケットからコンポーネントのアーティファクトをダウンロードします。
既存の S3 バケットを使用するか、次のコマンドを実行してバケットを作成します。このコマンドは、 AWS アカウント ID と を使用してバケットを作成し AWS リージョン 、一意のバケット名を作成します。
123456789012
を AWS アカウント ID に置き換え、リージョン
AWS リージョン をこのチュートリアルで使用する に置き換えます。aws s3 mb s3://greengrass-component-artifacts-
123456789012
-region
以下は、リクエストが成功した場合の出力です。
make_bucket: greengrass-component-artifacts-
123456789012
-region
-
コアデバイスが S3 バケット内のコンポーネントアーティファクトにアクセスすることを許可します。
各コアデバイスには、 とのやり取り AWS IoT と へのログの送信を許可するコアデバイス IAM ロールがあります AWS クラウド。このデバイスロールは、デフォルトでは S3 バケットへのアクセスを許可しないため、コアデバイスが S3 バケットからコンポーネントアーティファクトを取得できるようにするポリシーを作成して、アタッチする必要があります。
コアデバイスのロールで S3 バケットへのアクセスが既に許可されている場合は、このステップを省略できます。そうでない場合は、次に示す方法で、アクセスを許可する IAM ポリシーを作成し、ロールにアタッチします。
-
component-artifact-policy.json
という名前のファイルを作成して、次の JSON をファイルにコピーします。このポリシーは、S3 バケット内のすべてのファイルへのアクセスを許可します。amzn-s3-demo-bucket を S3 バケットの名前に置き換えます。{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*" } ] }
-
次のコマンドを実行して、
component-artifact-policy.json
のポリシードキュメントからポリシーを作成します。出力のポリシーメタデータから、ポリシーの Amazon リソースネーム (ARN) をコピーします。この ARN を使用して、次の手順で、このポリシーをコアデバイスのロールにアタッチします。
-
次のコマンドを実行して、ポリシーをコアデバイスのロールにアタッチします。
GreengrassV2TokenExchangeRole
を、コアデバイスのロール名に置き換えます。 AWS IoT Greengrass Core ソフトウェアをインストールしたときに、このロール名を指定しました。ポリシー ARN を、前のステップで書き留めた ARN に置き換えます。成功した場合は、コマンドからの出力はありません。コアデバイスが、この S3 バケットにアップロードしたアーティファクトにアクセスできるようになりました。
-
-
Hello World Python スクリプトアーティファクトを S3 バケットにアップロードします。
次のコマンドを実行して、スクリプトが AWS IoT Greengrass コアに存在するバケット内の同じパスにスクリプトをアップロードします。amzn-s3-demo-bucket を S3 バケットの名前に置き換えます。
リクエストが成功した場合、コマンドは
upload:
で始まる行を出力します。 -
アーティファクトの Amazon S3 URI をコンポーネント recipe に追加します。
Amazon S3 URI は、バケット名とバケット内のアーティファクトオブジェクトへのパスで設定されます。スクリプトアーティファクトの Amazon S3 URI は、前のステップでアーティファクトをアップロードした URI です。この URI は次の例のようになります。amzn-s3-demo-bucket を S3 バケットの名前に置き換えます。
s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py
アーティファクトを recipe に追加するには、Amazon S3 URI の構造が含まれる
Artifacts
のリストを追加します。 -
recipe AWS IoT Greengrass から にコンポーネントリソースを作成します。次のコマンドを実行して、recipe からコンポーネントを作成します。このコンポーネントをバイナリファイルとして提供します。
リクエストが成功すると、レスポンスは次の例のようになります。
{ "arn": "arn:aws:greengrass:
region
:123456789012
:components:com.example.HelloWorld:versions:1.0.0", "componentName": "com.example.HelloWorld", "componentVersion": "1.0.0", "creationTimestamp": "Mon Nov 30 09:04:05 UTC 2020", "status": { "componentState": "REQUESTED", "message": "NONE", "errors": {} } }次のステップでコンポーネントの状態をチェックするために、出力から
arn
をコピーします。注記
Hello World コンポーネントは、AWS IoT Greengrass コンソール
の [Components] (コンポーネント) ページでも確認できます。 -
コンポーネントが作成され、デプロイする準備が整っていることを確認します。コンポーネントを作成すると、その状態は
REQUESTED
になります。次に、 はコンポーネントがデプロイ可能であることを AWS IoT Greengrass 検証します。次のコマンドを実行して、コンポーネントのステータスを照会し、コンポーネントがデプロイ可能であることを確認します。arn
を、前のステップで書き留めた ARN に置き換えます。aws greengrassv2 describe-component --arn "arn:aws:greengrass:
region
:123456789012
:components:com.example.HelloWorld:versions:1.0.0"コンポーネントが検証されると、レスポンスでコンポーネントの状態が
DEPLOYABLE
であることが示されます。{ "arn": "arn:aws:greengrass:
region
:123456789012
:components:com.example.HelloWorld:versions:1.0.0", "componentName": "com.example.HelloWorld", "componentVersion": "1.0.0", "creationTimestamp": "2020-11-30T18:04:05.823Z", "publisher": "Amazon", "description": "My first Greengrass component.", "status": { "componentState": "DEPLOYABLE", "message": "NONE", "errors": {} }, "platforms": [ { "os": "linux", "architecture": "all" } ] }
Hello World コンポーネントが で使用できるようになりました AWS IoT Greengrass。この Greengrass コアデバイスまたは他のコアデバイスにデプロイして戻すことができます。