Systems Manager を利用したエッジデバイスの管理
このセクションでは、アカウント管理者とシステム管理者が AWS IoT Greengrass コアデバイスの設定と管理を有効にするために実行する設定タスクについて説明します。これらのタスクを完了すると、AWS アカウント 管理者によって権限が付与されたユーザーは AWS Systems Manager を使って組織の AWS IoT Greengrass コアデバイスを設定と管理することができます。
-
AWS IoT Greengrass 用の SSM Agent は macOS と Windows 10 にサポートされていません。Systems Manager 機能でこれらのオペレーティングシステムを使用するエッジデバイスの管理と設定をすることはできません。
-
Systems Manager は、AWS IoT Greengrass コアデバイスとして設定されていないエッジデバイスもサポートしています。Systems Manager を使用して AWS IoT コアデバイスおよび非 AWS エッジデバイスを管理する場合、ハイブリッドアクティベーションを使用して設定する必要があります。詳細については、「Systems Manager を利用したハイブリッド環境およびマルチクラウド環境でのノードの管理」を参照してください。
-
Session Manager と Microsoft アプリケーションパッチをエッジデバイスと使用する場合、アドバンストインスタンス層を有効にする必要があります。詳細については、「アドバンストインスタンス層を有効にするには」を参照してください。
開始する前に
エッジデバイスが以下の要件を満たしていることを確認します。
-
エッジデバイスを AWS IoT Greengrass コアデバイスとして設定する場合、要件を満たしている必要があります。詳細については、AWS IoT Greengrass Version 2 デベロッパーガイドの「AWS IoT Greengrass コアデバイスの設定」を参照してください。
-
エッジデバイスは AWS Systems Manager エージェント (SSM Agent) と互換性がなければなりません。詳細については、「System Manager でサポートされているオペレーティングシステム」を参照してください。
-
エッジデバイスはクラウド内の Systems Manager サービスと通信できる必要があります。Systems Manager は切断されたエッジデバイスをサポートしていません。
エッジデバイスのセットアップについて
Systems Manager 用に AWS IoT Greengrass デバイスの設定には以下のプロセスが含まれます。
エッジデバイス用の IAM サービスロールを作成
AWS IoT Greengrass コアデバイスは AWS Systems Manager と通信するため、AWS Identity and Access Management (IAM) サービスロールが必要となります。ロールは、Systems Manager サービスに AWS Security Token Service (AWS STS) AssumeRole の信頼を付与します。サービスロールの作成は AWS アカウント ごとに一度のみ行う必要があります。AWS IoT Greengrass デバイスに SSM Agent のコンポーネントを設定と展開する際、このロールは RegistrationRole
のパラメータに指定します。ハイブリッドおよびマルチクラウド環境用に非 EC2 ノードをセットアップするときにこのロールを既に作成している場合は、この手順をスキップできます。
エッジデバイスで Systems Manager を社内または組織内で使用するユーザーは、Systems Manager API を呼び出すために IAM で許可を付与する必要があります。
S3 バケットのポリシーの要件
次のいずれかのケースに当てはまる場合は、この手順を実行する前に Amazon Simple Storage Service (Amazon S3) バケット用のカスタム IAM アクセス許可ポリシーを作成する必要があります。
-
ケース 1: VPC エンドポイントを使用して、サポートされている AWS のサービス、および AWS PrivateLink を搭載した VPC エンドポイントサービスに VPC をプライベート接続しています。
-
ケース 2: Systems Manager オペレーションの一環として作成した S3 バケットを使用します (例: Run Command コマンドまたは、Session Manager セッションの出力を S3 バケットに保存)。先に進む前に、「インスタンスプロファイル用のカスタム S3 バケットポリシーを作成する」の手順に従います。そのトピックの S3 バケットポリシーに関する情報は、サービスロールにも適用されます。
デバイスがファイアウォールで保護され、かつ Patch Manager を使用する場合、ファイアウォールはパッチベースラインのエンドポイント arn:aws:s3:::patch-baseline-snapshot-region
/*
へアクセスを許可する必要があります。
region
は、米国東部 (オハイオ) リージョンの us-east-2
のように、AWS Systems Manager でサポートされている AWS リージョン の識別子を表します。サポートされている region
値の一覧については、「Amazon Web Services 全般のリファレンス」の「Systems Manager サービスエンドポイント」にある Region 列を参照してください。
- AWS CLI
-
AWS IoT Greengrass 環境用 (AWS CLI) に IAM サービスロールを作成する方法
まだ AWS Command Line Interface (AWS CLI) をインストールして設定していない場合は、インストールして設定します。
詳細については、「AWS CLI の最新バージョンをインストールまたは更新します。」を参照してください。
-
ローカルマシンで以下の信頼ポリシーを使用して、SSMService-Trust.json
のような名前でテキストファイルを作成します。ファイル保存時に、必ずファイル拡張子 (.json
) を付けます。
名前をメモします。SSM Agent を AWS IoT Greengrass コアデバイスに展開する際にそれを指定します。
{
"Version": "2012-10-17",
"Statement": {
"Effect": "Allow",
"Principal": {
"Service": "ssm.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
}
-
AWS CLI を開き、JSON ファイルを作成したディレクトリで create-role コマンドを実行してサービスロールを作成します。各リソースプレースホルダーの例
をユーザー自身の情報に置き換えます。
Linux と macOS
aws iam create-role \
--role-name SSMServiceRole
\
--assume-role-policy-document file://SSMService-Trust
.json
Windows
aws iam create-role ^
--role-name SSMServiceRole
^
--assume-role-policy-document file://SSMService-Trust
.json
-
以下のように attach-role-policy を実行して、先ほど作成したサービスロールでセッショントークンを作成できるようにします。セッショントークンは、Systems Manager を使用してコマンドを実行するため、エッジデバイスに許可を付与します。
エッジデバイスに対してサービスプロファイル用に追加するポリシーは、Amazon Elastic Compute Cloud (Amazon EC2) インスタンスのインスタンスプロファイルの作成に使用されるものと同じポリシーです。次のコマンドで使用する IAM ポリシーの詳細については、「Systems Manager に必要なインスタンスのアクセス許可を設定する」を参照してください。
(必須) 以下のコマンドを実行して、エッジデバイスが AWS Systems Manager サービスの主要機能を使用できるようにします。
Linux と macOS
aws iam attach-role-policy \
--role-name SSMServiceRole
\
--policy-arn arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore
Windows
aws iam attach-role-policy ^
--role-name SSMServiceRole
^
--policy-arn arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore
サービスロールのカスタム S3 バケットポリシーを作成した場合は、次のコマンドを実行して、ポリシーで指定したバケットに AWS Systems Manager Agent (SSM Agent) がアクセスできるようにします。account_ID
と my_bucket_policy_name
をユーザーの AWS アカウント ID とバケット名に置き換えます。
Linux と macOS
aws iam attach-role-policy \
--role-name SSMServiceRole
\
--policy-arn arn:aws:iam::account_ID
:policy/my_bucket_policy_name
Windows
aws iam attach-role-policy ^
--role-name SSMServiceRole
^
--policy-arn arn:aws:iam::account_id
:policy/my_bucket_policy_name
(選択可) 以下のコマンドを実行して、エッジデバイスからドメインの統合するリクエストのため、ユーザーに代わって SSM Agent が AWS Directory Service にアクセスできるようにします。エッジデバイスを Microsoft AD ディレクトリに統合する場合のみ、サービスロールはこのポリシーが必要です。
Linux と macOS
aws iam attach-role-policy \
--role-name SSMServiceRole
\
--policy-arn arn:aws:iam::aws:policy/AmazonSSMDirectoryServiceAccess
Windows
aws iam attach-role-policy ^
--role-name SSMServiceRole
^
--policy-arn arn:aws:iam::aws:policy/AmazonSSMDirectoryServiceAccess
(選択可) 以下のコマンドを実行して、CloudWatch エージェントがエッジデバイスの実行できるようにします。このコマンドはデバイスの情報を読み込んでCloudWatch に書き込むことを可能にします。サービスロールは、Amazon EventBridge や Amazon CloudWatch Logs などのサービスを利用する場合にのみ、このポリシーが必要です。
aws iam attach-role-policy \
--role-name SSMServiceRole
\
--policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy
- Tools for PowerShell
-
AWS IoT Greengrass 環境用 (AWS Tools for Windows PowerShell) に IAM サービスロールを作成する方法
AWS Tools for PowerShell (Tools for Windows PowerShell) をインストールして設定します (まだインストールしていない場合)。
詳細については、「AWS Tools for PowerShell のインストール」を参照してください。
-
ローカルマシンで以下の信頼ポリシーを使用して、SSMService-Trust.json
のような名前でテキストファイルを作成します。ファイル保存時に、必ずファイル拡張子 (.json
) を付けます。
名前をメモします。SSM Agent を AWS IoT Greengrass コアデバイスに展開する際にそれを指定します。
{
"Version": "2012-10-17",
"Statement": {
"Effect": "Allow",
"Principal": {
"Service": "ssm.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
}
-
PowerShell を管理モードで開き、JSON ファイルを作成したディレクトリで以下のように New-IAMRole を実行してサービスロールを作成します。
New-IAMRole `
-RoleName SSMServiceRole
`
-AssumeRolePolicyDocument (Get-Content -raw SSMService-Trust
.json)
-
以下のように、Register-IAMRolePolicy を使用して、作成したサービスロールでセッショントークンを作成できます。セッショントークンは、Systems Manager を使用してコマンドを実行するため、エッジデバイスに許可を付与します。
(必須) 以下のコマンドを実行して、エッジデバイスが AWS Systems Manager サービスの主要機能を使用できるようにします。
Register-IAMRolePolicy `
-RoleName SSMServiceRole
`
-PolicyArn arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore
サービスロールのカスタム S3 バケットポリシーを作成した場合は、次のコマンドを実行し、ポリシーで指定したバケットに SSM Agent がアクセスできるようにします。account_ID
と my_bucket_policy_name
をユーザーの AWS アカウント ID とバケット名に置き換えます。
Register-IAMRolePolicy `
-RoleName SSMServiceRole
`
-PolicyArn arn:aws:iam::account_ID
:policy/my_bucket_policy_name
(選択可) 以下のコマンドを実行して、エッジデバイスからドメインの統合するリクエストのため、ユーザーに代わって SSM Agent が AWS Directory Service にアクセスできるようにします。エッジデバイスを Microsoft AD ディレクトリに統合する場合のみ、サービスロールはこのポリシーが必要です。
Register-IAMRolePolicy `
-RoleName SSMServiceRole
`
-PolicyArn arn:aws:iam::aws:policy/AmazonSSMDirectoryServiceAccess
(選択可) 以下のコマンドを実行して、CloudWatch エージェントがエッジデバイスの実行できるようにします。このコマンドはデバイスの情報を読み込んでCloudWatch に書き込むことを可能にします。サービスロールは、Amazon EventBridge や Amazon CloudWatch Logs などのサービスを利用する場合にのみ、このポリシーが必要です。
Register-IAMRolePolicy `
-RoleName SSMServiceRole
`
-PolicyArn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy
AWS IoT Greengrass のためにエッジデバイスを設定する
エッジデバイスを AWS IoT Greengrass コアデバイスとしてセットアップします。セットアッププロセスは、サポートされたオペレーティングシステムとシステム要件の確認、並びにデバイス上に AWS IoT Greengrass コアソフトウェアのインストールと設定が含まれます。詳細については、AWS IoT Greengrass Version 2 デベロッパーガイドの「AWS IoT Greengrass コアデバイスの設定」を参照してください。
AWS IoT Greengrass トークン交換ロールを更新して SSM Agent をエッジデバイスにインストールします。
Systems Manager用の AWS IoT Greengrass コアデバイスのセットアップと設定における最終ステップでは、AWS IoT Greengrass AWS Identity and Access Management (IAM) デバイスサービスロール (トークン交換ロール) と AWS Systems Manager エージェント (SSM Agent) を AWS IoT Greengrass デバイスにデプロイする必要があります。これらのプロセスの詳細については、AWS IoT Greengrass Version 2 デベロッパーガイドの「AWS Systems Manager エージェントのインストール」を参照してください。
デバイスに SSM Agent を展開したら、AWS IoT Greengrass はデバイスを自動的に Systems Manager に登録します。追加登録は必要ありません。Systems Manager 機能の使用を開始して AWS IoT Greengrass デバイスへアクセス、管理、設定することができます。
エッジデバイスはクラウド内の Systems Manager サービスと通信できる必要があります。Systems Manager は切断されたエッジデバイスをサポートしていません。