ステップ 2: エッジデバイス用の IAM サービスロールを作成 - AWS Systems Manager

ステップ 2: エッジデバイス用の 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 のパラメータに指定します。ハイブリッド環境内のオンプレミスサーバーまたは仮想マシンのセットアップの際にこのロールをすでに作成している場合は、このステップを省略できます。

注記

エッジデバイスで Systems Manager を社内または組織内で使用するユーザーは、Systems Manager API を呼び出すために IAM で許可を付与する必要があります。詳細については、「Systems Manager の管理者以外の IAM ユーザーとグループを作成する」を参照してください。

S3 バケットのポリシーの要件

次のいずれかのケースに当てはまる場合は、この手順を実行する前に Amazon Simple Storage Service (Amazon S3) バケット用のカスタム IAM アクセス許可ポリシーを作成する必要があります。

  • ケース 1: VPC エンドポイントを使用して、サポートされている AWS のサービス、および AWS PrivateLink を搭載した VPC エンドポイントサービスに VPC をプライベート接続しています。

  • ケース 2: Run Command コマンドや Session Manager セッションの出力を Amazon S3 バケットに保存するなど、Systems Manager オペレーションの一環として作成する Amazon S3 バケットを使用します。先に進む前に、「インスタンスプロファイル用のカスタム S3 バケットポリシーを作成する」の手順に従います。そのトピックの S3 バケットポリシーに関する情報は、サービスロールにも適用されます。

    注記

    デバイスがファイアウォールで保護され、かつ Patch Manager を使用する場合、ファイアウォールはパッチベースラインのエンドポイント arn:aws:s3:::patch-baseline-snapshot-region/* へアクセスを許可する必要があります。

    リージョンは、米国東部 (オハイオ) リージョンの us-east-2 のように、AWS Systems Manager でサポートされている AWS リージョン の識別子を表します。サポートされている region 値の一覧については、アマゾン ウェブ サービスの全般リファレンスの「Systems Manager サービスエンドポイント」にある Region 列を参照してください。

AWS CLI

AWS IoT Greengrass 環境用 (AWS CLI) に IAM サービスロールを作成する方法

  1. まだ AWS Command Line Interface (AWS CLI) をインストールして設定していない場合は、インストールして設定します。

    詳細については、「AWS コマンドラインツールのインストールまたはアップグレード」を参照してください。

  2. ローカルマシンで以下の信頼ポリシーを使用して、SSMService-Trust.json のような名前でテキストファイルを作成します。ファイル保存時に、必ずファイル拡張子 (.json) を付けます。

    注記

    名前をメモします。SSM Agent を AWS IoT Greengrass コアデバイスに展開する際にそれを指定します。

    { "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Principal": { "Service": "ssm.amazonaws.com" }, "Action": "sts:AssumeRole" } }
  3. 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
  4. 以下のように attach-role-policy を実行して、先ほど作成したサービスロールでセッショントークンを作成できるようにします。セッショントークンは、Systems Manager を使用してコマンドを実行するため、エッジデバイスに許可を付与します。

    注記

    エッジデバイスに対してサービスプロファイル用に追加するポリシーは、Amazon Elastic Compute Cloud (Amazon EC2) インスタンスのインスタンスプロファイルの作成に使用されるものと同じポリシーです。以下のコマンドで使用する AWS ポリシーの詳細については、「Systems Manager の IAM インスタンスプロファイルを作成する」を参照してください。

    (必須) 以下のコマンドを実行して、エッジデバイスが 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_IDmy_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 サービスロールを作成する方法

  1. まだ AWS Tools for PowerShell をインストールして設定していない場合は、インストールして設定します。

    詳細については、「AWS コマンドラインツールのインストールまたはアップグレード」を参照してください。

  2. ローカルマシンで以下の信頼ポリシーを使用して、SSMService-Trust.json のような名前でテキストファイルを作成します。ファイル保存時に、必ずファイル拡張子 (.json) を付けます。

    注記

    名前をメモします。SSM Agent を AWS IoT Greengrass コアデバイスに展開する際にそれを指定します。

    { "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Principal": { "Service": "ssm.amazonaws.com" }, "Action": "sts:AssumeRole" } }
  3. PowerShell を管理モードで開き、JSON ファイルを作成したディレクトリで以下のように New-IAMRole を実行してサービスロールを作成します。

    New-IAMRole ` -RoleName SSMServiceRole ` -AssumeRolePolicyDocument (Get-Content -raw SSMService-Trust.json)
  4. 以下のように、Register-IAMRolePolicy を使用して、作成したサービスロールでセッショントークンを作成できます。セッショントークンは、Systems Manager を使用してコマンドを実行するため、エッジデバイスに許可を付与します。

    注記

    AWS IoT Greengrass 環境内でエッジデバイスに対してサービスロール用に追加するポリシーは、EC2 インスタンスのインスタンスプロファイルの作成に使用されるものと同じポリシーです。以下のコマンドで使用する AWS ポリシーの詳細については、「Systems Manager の IAM インスタンスプロファイルを作成する」を参照してください。

    (必須) 以下のコマンドを実行して、エッジデバイスが AWS Systems Manager サービスの主要機能を使用できるようにします。

    Register-IAMRolePolicy ` -RoleName SSMServiceRole ` -PolicyArn arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore

    サービスロールのカスタム S3 バケットポリシーを作成した場合は、次のコマンドを実行し、ポリシーで指定したバケットに SSM Agent がアクセスできるようにします。account_IDmy_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

ステップ 3: AWS IoT Greengrass の設定」に進みます。