インベントリのリソースデータの同期の設定 - AWS Systems Manager

インベントリのリソースデータの同期の設定

このトピックでは、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) およびアプリケーションに関するデータを収集するようにインベントリを設定したとします。これらのインスタンスのいくつかはハイブリッドデータセンターに配置され、その他のインスタンスは複数の にまたがる Amazon Elastic Compute Cloud (Amazon EC2) で実行されています AWS リージョン リソースデータ同期を設定していない場合、各インスタンスで収集されたインベントリデータを手動でまとめるか、この情報をまとめるスクリプトを作成する必要があります。その後、クエリや分析を実行できるように、データをアプリケーションにポートする必要があります。

リソースデータ同期では、すべてのマネージドインスタンスから収集したすべてのインベントリデータを同期する 1 回限りのオペレーションを実行します。同期が正常に作成されると、Systems Manager はすべてのインベントリデータのベースラインを作成し、それをターゲット Amazon S3 バケットに保存します。新しいインベントリデータが収集されると、Systems Manager は Amazon S3 バケットのデータを自動的に更新します。その後、Amazon Athena および Amazon QuickSight にデータを迅速かつコスト効率よくポートできます。

図 1 は、リソースデータ同期が Amazon EC2 およびハイブリッド環境のマネージドインスタンスからターゲット Amazon S3 バケットにインベントリデータを収集する方法を示します。またこの図は、リソースデータ同期が複数の AWS アカウント および AWS リージョン と連携する仕組みについても示しています。

図 1: 複数の AWS アカウント と AWS リージョン とのリソースデータ同期


                        Systems Manager リソースデータ同期のアーキテクチャ

マネージドインスタンスを削除した場合、リソースデータ同期は削除されたインスタンスのインベントリファイルを維持します。ただし、実行中のインスタンスの場合、新しいインベントリファイルが作成され Amazon S3 バケットに書き込まれると、リソースデータ同期は古いインベントリファイルを自動的に上書きします。インベントリの変更を継続的に追跡する場合は、AWS Config サービスを使用して SSM:ManagedInstanceInventory リソースタイプを追跡できます。詳細については、「AWS Config の開始方法」を参照してください。

Amazon S3 および AWS Systems Manager コンソールを使用してインベントリのリソースデータ同期を作成するには、このセクションの手順に従います。AWS CloudFormation を使用してリソースデータ同期を作成または削除することもできます。AWS CloudFormation を使用するには、AWS CloudFormation テンプレートに AWS::SSM::ResourceDataSync リソースを追加します。詳細については、次のいずれかのドキュメントリソースを参照してください。

注記

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 バケットにオブジェクトロックを使用するように設定されている場合、Systems Manager インベントリでは、そのバケットにデータを追加できません。リソースデータの同期用に作成または選択した Amazon S3 バケットが、Amazon S3 オブジェクトロックを使用するように設定されていないことを確認します。詳細については、Amazon Simple Storage Service コンソールユーザーガイドの「Amazon S3 オブジェクトロックの仕組み」を参照してください。

リソースデータ同期用に Amazon S3 バケットを作成して設定するには

  1. Amazon S3 コンソール (https://console.aws.amazon.com/s3/) を開きます。

  2. 集計されたインベントリデータを保存するバケットを作成します。詳細については、Amazon Simple Storage Service 入門ガイドの「バケットの作成」を参照してください。バケット名とそれを作成した AWS リージョン を書き留めます。

  3. [Permissions] タブを選択し、[Bucket Policy] を選択します。

  4. 次のバケットポリシーをコピーし、ポリシーエディタに貼り付けます。DOC-EXAMPLE-BUCKETaccount-id を、作成した S3 バケット名と有効な AWS アカウント IDに置き換えます。

    複数の AWS アカウント がインベントリデータを中央の Amazon S3 バケットに送信できるようにするには、次の Resource の例に示すように、ポリシーで各アカウントを指定します。

    "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*/accountid=123456789012/*", "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*/accountid=444455556666/*", "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*/accountid=777788889999/*" ],

    任意で、bucket-prefix を Amazon S3 プレフィックス (サブディレクトリ) に置き換えます。プレフィックスを作成していない場合は、次のポリシーの ARN から bucket-prefix/ を削除します。

    注記

    AWS アカウント ID を表示する方法については、IAM ユーザーガイドの「アマゾン ウェブ サービスアカウント ID とその別名」を参照してください。

    { "Version":"2012-10-17", "Statement":[ { "Sid":" SSMBucketDelivery", "Effect":"Allow", "Principal":{ "Service":"ssm.amazonaws.com" }, "Action":"s3:PutObject", "Resource":[ "arn:aws:s3:::DOC-EXAMPLE-BUCKET/bucket-prefix/*/accountid=account-id-1/*", "arn:aws:s3:::DOC-EXAMPLE-BUCKET/bucket-prefix/*/accountid=account-id-2/*", "arn:aws:s3:::DOC-EXAMPLE-BUCKET/bucket-prefix/*/accountid=account-id-3/*" ], "Condition":{ "StringEquals":{ "s3:x-amz-acl":"bucket-owner-full-control" } } } ] }
    注記

    アジアパシフィックリージョンは、2019 年 4 月 25 日にオンラインになりました。アジアパシフィック (香港) リージョン (ap-east-1) 以降オンラインになった AWS リージョン のリソースデータ同期を作成する場合は、SSMBucketDelivery セクションにリージョン固有のサービスプリンシパルエントリを入力する必要があります。次の例では、ssm.ap-east-1.amazonaws.com のリージョン固有のサービスプリンシパルエントリが含まれています。

    { "Sid":" SSMBucketDelivery", "Effect":"Allow", "Principal":{ "Service":["ssm.amazonaws.com","ssm.ap-east-1.amazonaws.com"] },

インベントリのリソースデータの同期を作成

Systems Manager コンソールを使用して、Systems Manager Inventory のリソースデータ同期を作成するには、次の手順に従います。AWS CLI を使用したリソースデータ同期の作成については、「チュートリアル: CLI を使用したインベントリ用のマネージドインスタンスの設定」を参照してください。

リソースデータの同期を作成するには

  1. AWS Systems Manager コンソール (https://console.aws.amazon.com/systems-manager/) を開きます。

  2. ナビゲーションペインで、[Fleet Manager] を選択します。

    -または-

    AWS Systems Manager ホームページを最初に開く場合は、メニューアイコン ( ) を選択してナビゲーションペインを開き、[Fleet Manager] を選択します。

  3. [Account management] メニューで、[Resource data sync] を選択します。

  4. [Create resource data sync (リソースデータ同期の作成)] を選択します。

  5. [Sync name] フィールドに、同期設定の名前を入力します。

  6. [Bucket name] フィールドに、 リソースデータ同期用に Amazon S3 バケットを作成して設定するにはの手順を使用して作成した Amazon S3 バケットの名前を入力します。

  7. (オプション) [Bucket prefix] フィールドに、Amazon S3 バケットのプレフィックス (サブディレクトリ) の名前を入力します。

  8. 作成した Amazon S3 バケットが現在の AWS リージョン にある場合は、[Bucket region (バケットリージョン)] フィールドで [This region (このリージョン)] を選択します。バケットが他の AWS リージョン にある場合は、[Another region(別のリージョン)] を選択して、リージョンの名前を入力します。

    注記

    同期とターゲット Amazon S3 バケットが異なるリージョンにある場合は、データ転送料金が発生する場合があります。詳細については、Amazon S3 の料金 を参照してください。

  9. (オプション) [KMS キー ARN] フィールドで、KMS キー ARN を入力するか貼り付けて、Amazon S3 のインベントリデータを暗号化します。

  10. [Create] を選択します。

複数の AWS リージョン からのインベントリデータを同期させるには、リージョンでのリソースデータ同期を作成する必要があります。インベントリデータを収集し、中央 Amazon S3 バケットに送信する各 AWS リージョン でこの手順を繰り返します。各リージョンで同期を作成するときは、[Bucket name (バケット名)] フィールドで中央 Amazon S3 バケットを指定します。次に、[Bucket region (バケットリージョン)] オプションを使用して、次のスクリーンショットに示すように、中央 Amazon S3 バケットを作成したリージョンを選択します。次回インベントリデータを収集するために関連付けを実行すると、Systems Manager は中央 Amazon S3 バケットにデータを保存します。


                        複数の  からの Systems Manager リソースデータ同期
				AWS リージョン

で定義されたアカウントのインベントリリソースデータ同期の作成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

  1. Amazon S3 コンソール (https://console.aws.amazon.com/s3/) を開きます。

  2. 集計されたインベントリデータを保存するバケットを作成します。詳細については、Amazon Simple Storage Service 入門ガイドの「バケットの作成」を参照してください。バケット名とそれを作成した AWS リージョン を書き留めます。

  3. [Permissions] タブを選択し、[Bucket Policy] を選択します。

  4. 次のバケットポリシーをコピーし、ポリシーエディタに貼り付けます。DOC-EXAMPLE-BUCKET および organization-id を、作成した Amazon S3 バケットの名前と有効な AWS Organizations アカウント ID に置き換えます。

    任意で、bucket-prefix を Amazon S3 プレフィックス (サブディレクトリ) に置き換えます。プレフィックスを作成していない場合は、次のポリシーの ARN から bucket-prefix/ を削除します。

    { "Version": "2012-10-17", "Statement": [ { "Sid": " SSMBucketDelivery", "Effect": "Allow", "Principal": { "Service": "ssm.amazonaws.com" }, "Action": "s3:PutObject", "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET/bucket-prefix/*/accountid=*/*" ], "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control", "s3:RequestObjectTag/OrgId": "organization-id" } } }, { "Sid": " SSMBucketDeliveryTagging", "Effect": "Allow", "Principal": { "Service": "ssm.amazonaws.com" }, "Action": "s3:PutObjectTagging", "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET/bucket-prefix/*/accountid=*/*" ] } ] }
    注記

    アジアパシフィックリージョンは、2019 年 4 月 25 日にオンラインになりました。アジアパシフィック (香港) リージョン (ap-east-1) 以降オンラインになった AWS リージョン のリソースデータ同期を作成する場合は、SSMBucketDelivery セクションにリージョン固有のサービスプリンシパルエントリを入力する必要があります。次の例では、ssm.ap-east-1.amazonaws.com のリージョン固有のサービスプリンシパルエントリが含まれています。

    { "Sid":" SSMBucketDelivery", "Effect":"Allow", "Principal":{ "Service":["ssm.amazonaws.com","ssm.ap-east-1.amazonaws.com"] },

で定義されたアカウントのインベントリリソースデータ同期を作成するAWS Organizations

次の手順では、AWS CLI を使用して、AWS Organizations で定義されているアカウントのリソースデータ同期を作成する方法について説明します。このタスクを実行するには AWS CLI を使用する必要があります。この手順は、AWS Organizations で定義されている各 AWS リージョン および AWS アカウント に対して実行する必要があります。

AWS Organizations で定義されたアカウントのインベントリリソースデータ同期を作成するには (AWS CLI)

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

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

  2. 次のコマンドを実行して、他のリソースデータの同期がないことを確認します。組織ベースのリソースデータの同期は 1 つだけです。

    aws ssm list-resource-data-sync

    コマンドが別のリソースデータの同期を返す場合は、削除するか、新しいリソースデータ同期を作成しないように選択する必要があります。

  3. で定義されたアカウントのリソースデータ同期を作成するには、次のコマンドを実行しますAWS Organizations DOC-EXAMPLE-BUCKET の場合は、このトピックで前に作成した Amazon S3 バケットの名前を指定します。バケットのプレフィックス (サブディレクトリ) を作成した場合は、[prefix-name] にこの情報を指定します。

    aws ssm create-resource-data-sync --sync-name name --s3-destination "BucketName=DOC-EXAMPLE-BUCKET,Prefix=prefix-name,SyncFormat=JsonSerDe,Region= AWS リージョン , for example us-east-2,DestinationDataSharing={DestinationDataSharingType=Organization}"
  4. 中央の Amazon S3 バケットにデータを同期する AWS リージョン と AWS アカウント ごとに、ステップ 2 と 3 を繰り返します。