インベントリのリソースデータ同期を作成する
このトピックでは、AWS Systems Manager インベントリのリソースデータ同期を設定および構成する方法について説明します。Systems Manager Explorer のリソースデータ同期については、「複数のアカウントおよびリージョンのデータを表示するように Systems Manager Explorer を設定する」を参照してください。
リソースデータの同期について
Systems Manager のリソースデータ同期を使用して、すべてのマネージドノードから収集されたインベントリデータを、1 つの Amazon Simple Storage Service (Amazon S3) バケットに送信できます。その後、リソースデータの同期により、新しいインベントリデータが収集されると、一元化されたデータが自動的に更新されます。ターゲット Amazon S3 バケットに保存されたすべてのインベントリデータに対して、Amazon Athena や Amazon QuickSight などのサービスを使用して集計データのクエリや分析ができます。
たとえば、150 個のマネージドノードのフリートで実行されているオペレーティングシステム (OS) およびアプリケーションに関するデータを収集するようにインベントリを設定したとします。これらのノードのいくつかはオンプレミスデータセンターに配置され、その他のインスタンスは複数の AWS リージョン にまたがる Amazon Elastic Compute Cloud (Amazon EC2) で実行されています。リソースデータ同期を設定していない場合、各マネージドノードで収集されたインベントリデータを手動でまとめるか、この情報を収集するスクリプトを作成する必要があります。その後、クエリや分析を実行できるように、データをアプリケーションにポートする必要があります。
リソースデータ同期では、すべてのマネージドノードから収集したすべてのインベントリデータを同期する 1 回限りのオペレーションを実行します。同期が正常に作成されると、Systems Manager はすべてのインベントリデータのベースラインを作成し、それをターゲット Amazon S3 バケットに保存します。新しいインベントリデータが収集されると、Systems Manager は Amazon S3 バケットのデータを自動的に更新します。その後、Amazon Athena および Amazon QuickSight にデータを迅速かつコスト効率よくポートできます。
図 1 は、リソースデータ同期が、Amazon EC2 およびハイブリッドおよびマルチクラウド環境内の他のマシンタイプからターゲットの Amazon S3 バケットにインベントリデータを収集する方法を示しています。またこの図は、リソースデータ同期が複数の AWS アカウント および AWS リージョン と連携する仕組みについても示しています。
図 1: 複数の AWS アカウント とAWS リージョン とのリソースデータ同期
マネージドノードを削除した場合、リソースデータ同期は削除されたノードのインベントリファイルを維持します。ただし、実行中のノードの場合、新しいインベントリファイルが作成され Amazon S3 バケットに書き込まれると、リソースデータ同期は古いインベントリファイルを自動的に上書きします。インベントリの変更を継続的に追跡する場合は、AWS Config サービスを使用して SSM:ManagedInstanceInventory
リソースタイプを追跡できます。詳細については、「AWS Config の開始方法」を参照してください。
Amazon S3 および AWS Systems Manager コンソールを使用してインベントリのリソースデータ同期を作成するには、このセクションの手順に従います。AWS CloudFormation を使用してリソースデータ同期を作成または削除することもできます。AWS CloudFormation を使用するには、AWS CloudFormation テンプレートに AWS::SSM::ResourceDataSync
リソースを追加します。詳細については、次のいずれかのドキュメントリソースを参照してください。
-
AWS Systems Manager でのリソースデータ同期の AWS CloudFormation リソース
(ブログ) -
AWS CloudFormation ユーザーガイドの AWS CloudFormation のテンプレートの使用
注記
AWS Key Management Service (AWS KMS) を使用すると Amazon S3 バケットのインベントリデータを暗号化できます。AWS Command Line Interface (AWS CLI) を使用して暗号化された同期を作成する方法、および Amazon Athena および Amazon QuickSight で一元化されたデータを扱う方法の例については、「チュートリアル: リソースデータの同期を使用してインベントリデータを集計する」を参照してください。
開始する前に
リソースデータ同期を作成する前に、以下の手順に従って、集約されたインベントリデータを格納する中央 Amazon S3 バケットを作成します。この手順では、Systems Manager が複数のアカウントからバケットにインベントリデータを書き込めるようにするバケットポリシーの割り当て方法について説明します。リソースデータ同期のためのインベントリデータ集計に使用する Amazon S3 バケットが既にある場合、次の手順でポリシーを使用するようにバケットを設定する必要があります。
注記
指定した Amazon S3 バケットに Object Lock を使用するように設定されている場合、Systems Manager インベントリでは、そのバケットにデータを追加できません。リソースデータの同期用に作成または選択した Amazon S3 バケットが、Amazon S3 Object Lock を使用するように設定されていないことを確認します。詳細については、Amazon Simple Storage Service ユーザーガイドの「Amazon S3 Object Lock の仕組み」を参照してください。
リソースデータ同期用に Amazon S3 バケットを作成して設定するには
Amazon S3 コンソール (https://console.aws.amazon.com/s3/
) を開きます。 -
集計されたインベントリデータを保存するバケットを作成します。詳細については、Amazon Simple Storage Service ユーザーガイドの「バケットの作成」を参照してください。バケット名とそれを作成した AWS リージョン を書き留めます。
-
[Permissions] タブを選択し、[Bucket Policy] を選択します。
-
次のバケットポリシーをコピーし、ポリシーエディタに貼り付けます。amzn-s3-demo-bucket と
account-id
を、作成した S3 バケットの名前と有効な AWS アカウント ID に置き換えます。複数の AWS アカウント がインベントリデータを中央の Amazon S3 バケットに送信できるようにするには、次の
Resource
の例に示すように、ポリシーで各アカウントを指定します。"Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket1/*/accountid=123456789012/*", "arn:aws:s3:::amzn-s3-demo-bucket2/*/accountid=444455556666/*", "arn:aws:s3:::amzn-s3-demo-bucket3/*/accountid=777788889999/*" ], "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control", "aws:SourceAccount": [ "123456789012", "444455556666", "777788889999" ] }, "ArnLike": { "aws:SourceArn": [ "arn:aws:ssm:*:123456789012:resource-data-sync/*", "arn:aws:ssm:*:444455556666:resource-data-sync/*", "arn:aws:ssm:*:777788889999:resource-data-sync/*" ] } }
注記
AWS アカウント ID を表示する方法については、IAM ユーザーガイドの「Amazon Web Services アカウント ID とそのエイリアス」を参照してください。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "SSMBucketPermissionsCheck", "Effect": "Allow", "Principal": { "Service": "ssm.amazonaws.com" }, "Action": "s3:GetBucketAcl", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket" }, { "Sid": " SSMBucketDelivery", "Effect": "Allow", "Principal": { "Service": "ssm.amazonaws.com" }, "Action": "s3:PutObject", "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/*/accountid=
ID_number
/*", "arn:aws:s3:::amzn-s3-demo-bucket/*/accountid=ID_number
/*", "arn:aws:s3:::amzn-s3-demo-bucket/*/accountid=ID_number
/*", "arn:aws:s3:::amzn-s3-demo-bucket/*/accountid=ID_number
/*" ], "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control", "aws:SourceAccount": "ID_number
" }, "ArnLike": { "aws:SourceArn": "arn:aws:ssm:*:ID_number
:resource-data-sync/*" } } } ] }
インベントリのリソースデータの同期を作成
Systems Manager コンソールを使用して、Systems Manager Inventory のリソースデータ同期を作成するには、次の手順に従います。AWS CLI を使用したリソースデータ同期の作成については、「AWS CLI を使用してインベントリデータ収集を設定する」を参照してください。
リソースデータの同期を作成するには
AWS Systems Manager コンソール (https://console.aws.amazon.com/systems-manager/
) を開きます。 ナビゲーションペインで、[Fleet Manager] を選択します。
-
[Account management] メニューで、[Resource data sync] を選択します。
-
[Create resource data sync (リソースデータ同期の作成)] を選択します。
-
[Sync name] フィールドに、同期設定の名前を入力します。
-
[Bucket name] フィールドに、 リソースデータ同期用に Amazon S3 バケットを作成して設定するにはの手順を使用して作成した Amazon S3 バケットの名前を入力します。
-
(オプション) [Bucket prefix] フィールドに、Amazon S3 バケットのプレフィックス (サブディレクトリ) の名前を入力します。
-
作成した Amazon S3 バケットが現在の AWS リージョン にある場合は、[Bucket region (バケットリージョン)] フィールドで [This region (このリージョン)] を選択します。バケットが他の AWS リージョン にある場合は、[Another region(別のリージョン)] を選択して、リージョンの名前を入力します。
注記
同期とターゲット Amazon S3 バケットが異なるリージョンにある場合は、データ転送料金が発生する場合があります。詳細については、Amazon S3 の料金
を参照してください。 -
(オプション) [KMS キー ARN] フィールドで、KMS キー ARN を入力するか貼り付けて、Amazon S3 のインベントリデータを暗号化します。
-
[Create] を選択します。
複数の AWS リージョン からのインベントリデータを同期させるには、各リージョンでのリソースデータ同期を作成する必要があります。インベントリデータを収集し、中央 Amazon S3 バケットに送信する各 AWS リージョン でこの手順を繰り返します。各リージョンで同期を作成するときは、[Bucket name (バケット名)] フィールドで中央 Amazon S3 バケットを指定します。次に、[Bucket region (バケットリージョン)] オプションを使用して、次のスクリーンショットに示すように、中央 Amazon S3 バケットを作成したリージョンを選択します。次回インベントリデータを収集するために関連付けを実行すると、Systems Manager は中央 Amazon S3 バケットにデータを保存します。
で定義されたアカウントのインベントリリソースデータ同期の作成AWS Organizations
AWS Organizations で定義された AWS アカウント のインベントリデータを中央の Amazon S3 バケットに同期できます。次の手順を完了すると、インベントリデータは中央バケット内の個々の Amazon S3 キープレフィックスに同期されます。各キープレフィックスは、異なる AWS アカウント ID を表します。
開始する前に
開始する前に、AWS Organizations で AWS アカウント が設定および構成されていることを確認してください。詳細については、AWS Organizations ユーザーガイドを参照してください。
また、AWS Organizations で定義されている各 AWS リージョン と AWS アカウント について、組織ベースのリソースデータ同期を作成する必要があることに注意してください。
中央の Amazon S3 バケットを作成する
以下の手順に従って、集約されたインベントリデータを格納する中央 Amazon S3 バケットを作成します。この手順では、Systems Manager が AWS Organizations アカウント ID からバケットにインベントリデータを書き込めるようにするバケットポリシーの割り当て方法について説明します。リソースデータ同期のためのインベントリデータ集計に使用する Amazon S3 バケットが既にある場合、次の手順でポリシーを使用するようにバケットを設定する必要があります。
で定義された複数アカウントのリソースデータ同期用に Amazon S3 バケットを作成して設定するにはAWS Organizations
Amazon S3 コンソール (https://console.aws.amazon.com/s3/
) を開きます。 -
集計されたインベントリデータを保存するバケットを作成します。詳細については、Amazon Simple Storage Service ユーザーガイドの「バケットの作成」を参照してください。バケット名とそれを作成した AWS リージョン を書き留めます。
-
[Permissions] タブを選択し、[Bucket Policy] を選択します。
-
次のバケットポリシーをコピーし、ポリシーエディタに貼り付けます。amzn-s3-demo-bucket と
organization-id
を、作成した Amazon S3 バケットの名前と有効な AWS Organizations アカウント ID に置き換えます。任意で、
bucket-prefix
を Amazon S3 プレフィックス (サブディレクトリ) に置き換えます。プレフィックスを作成していない場合は、次のポリシーの ARN からbucket-prefix/
を削除します。{ "Version": "2012-10-17", "Statement": [ { "Sid": "SSMBucketPermissionsCheck", "Effect": "Allow", "Principal": { "Service": "ssm.amazonaws.com" }, "Action": "s3:GetBucketAcl", "Resource": "arn:aws:s3:::
S3_bucket_name
" }, { "Sid": " SSMBucketDelivery", "Effect": "Allow", "Principal": { "Service": "ssm.amazonaws.com" }, "Action": "s3:PutObject", "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket
/bucket-prefix
/*/accountid=*/*" ], "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control", "aws:SourceOrgID": "organization-id
" } } }, { "Sid": " SSMBucketDeliveryTagging", "Effect": "Allow", "Principal": { "Service": "ssm.amazonaws.com" }, "Action": "s3:PutObjectTagging", "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket
/bucket-prefix
/*/accountid=*/*" ] } ] }
で定義されたアカウントのインベントリリソースデータ同期を作成するAWS Organizations
次の手順では、AWS CLI を使用して、AWS Organizations で定義されているアカウントのリソースデータ同期を作成する方法について説明します。このタスクを実行するには AWS CLI を使用する必要があります。この手順は、AWS Organizations で定義されている各 AWS リージョン および AWS アカウント に対して実行する必要があります。
AWS Organizations で定義されたアカウントのインベントリリソースデータ同期を作成するには (AWS CLI)
まだ AWS Command Line Interface (AWS CLI) をインストールして設定していない場合は、インストールして設定します。
詳細については、「AWS CLI の最新バージョンをインストールまたは更新します。」を参照してください。
-
次のコマンドを実行して、他の AWS Organizations ベースのリソースデータの同期がないことを確認します。複数の標準同期と Organizations ベースの同期を含む、複数の標準同期を設定できます。ただし、Organizations ベースのリソースデータの同期は 1 つだけ設定できます。
aws ssm list-resource-data-sync
コマンドが他の組織ベースのリソースデータの同期を返す場合は、削除するか、新しいリソースデータ同期を作成しないように選択する必要があります。
-
AWS Organizations で定義されたアカウントのリソースデータ同期を作成するには、次のコマンドを実行します。amzn-s3-demo-bucket には、このトピックで先ほど作成した Amazon S3 バケットの名前を指定します。バケットのプレフィックス (サブディレクトリ) を作成した場合は、[
prefix-name
] にこの情報を指定します。aws ssm create-resource-data-sync --sync-name
name
--s3-destination "BucketName=amzn-s3-demo-bucket,Prefix=prefix-name
,SyncFormat=JsonSerDe,Region=AWS リージョン, for example us-east-2
,DestinationDataSharing={DestinationDataSharingType=Organization}" -
中央の Amazon S3 バケットにデータを同期する AWS リージョン と AWS アカウント ごとに、ステップ 2 と 3 を繰り返します。
リソースデータの同期を管理する
それぞれの AWS アカウント が AWS リージョン あたり 5 つのリソースデータを同期できます。AWS Systems Manager Fleet Manager コンソールを使って、リソースデータの同期を管理できます。
リソースデータの同期を表示するには
AWS Systems Manager コンソール (https://console.aws.amazon.com/systems-manager/
) を開きます。 ナビゲーションペインで、[Fleet Manager] を選択します。
-
[リソースデータの同期] メニューで、[アカウント管理] ドロップダウンを選択します。
-
テーブルからリソースデータの同期を選択し、[詳細の表示] を選択すると、リソースデータの同期に関する情報が表示されます。
リソースデータ同期を削除するには
AWS Systems Manager コンソール (https://console.aws.amazon.com/systems-manager/
) を開きます。 ナビゲーションペインで、[Fleet Manager] を選択します。
-
[リソースデータの同期] メニューで、[アカウント管理] ドロップダウンを選択します。
-
テーブルからリソースデータの同期を選択し、[削除] を選択します。