ステップ 1: OpenSearch Service との統合を作成する - Amazon CloudWatch Logs

ステップ 1: OpenSearch Service との統合を作成する

最初のステップでは、OpenSearch Service との統合を作成します。これは 1 回だけ実行する必要があります。この統合を作成すると、お客様のアカウントに以下のリソースが作成されます。

  • 高可用性のないOpenSearch Service時系列コレクション

    コレクションとは、連携してワークロードをサポートする一連の OpenSearch Service インデックスです。

  • コレクションの 2 つのセキュリティポリシー。1 つは暗号化タイプを定義します。これは、カスタマーマネージド AWS KMS キーまたはサービス所有キーのいずれかです。もう 1 つのポリシーはネットワークアクセスを定義し、OpenSearch Service アプリケーションがコレクションにアクセスできるようにします。詳細については、「Amazon OpenSearch Service に保管中のデータの暗号化」を参照してください。

  • コレクション内のデータにアクセスできるユーザーを定義する OpenSearch Service データアクセスポリシー

  • ソースとして CloudWatch Logs が定義された OpenSearch Service ダイレクトクエリデータソース

  • aws-analytics という名前の OpenSearch Service アプリケーション。アプリケーションは、ワークスペースの作成を許可するように設定されます。aws-analytics という名前のアプリケーションが既に存在する場合、このコレクションをデータソースとして追加するように更新されます。

  • ダッシュボードをホストし、アクセス権限が付与されたすべてのユーザーにワークスペースからの読み取りを許可する OpenSearch Service ワークスペース

必要なアクセス許可

統合を作成するには、ここに表示されるCloudWatchOpenSearchDashboardsFullAccess マネージド IAM ポリシーまたは同等のアクセス許可を持つアカウントでサインインする必要があります。統合の削除、ダッシュボードの作成、編集、削除、ダッシュボードの手動更新を行うには、これらのアクセス許可も必要です。

JSON
{ "Version":"2012-10-17", "Statement": [{ "Sid": "CloudWatchOpenSearchDashboardsIntegration", "Effect": "Allow", "Action": [ "logs:ListIntegrations", "logs:GetIntegration", "logs:DeleteIntegration", "logs:PutIntegration", "logs:DescribeLogGroups", "opensearch:ApplicationAccessAll", "iam:ListRoles", "iam:ListUsers" ], "Resource": "*" }, { "Sid": "CloudWatchLogsOpensearchReadAPIs", "Effect": "Allow", "Action": [ "aoss:BatchGetCollection", "aoss:BatchGetLifecyclePolicy", "es:ListApplications" ], "Resource": "*", "Condition": { "StringEquals": { "aws:CalledViaFirst": "logs.amazonaws.com" } } }, { "Sid": "CloudWatchLogsOpensearchCreateServiceLinkedAccess", "Effect": "Allow", "Action": [ "iam:CreateServiceLinkedRole" ], "Resource": "arn:aws:iam::*:role/aws-service-role/opensearchservice.amazonaws.com/AWSServiceRoleForAmazonOpenSearchService", "Condition": { "StringEquals": { "iam:AWSServiceName": "opensearchservice.amazonaws.com", "aws:CalledViaFirst": "logs.amazonaws.com" } } }, { "Sid": "CloudWatchLogsObservabilityCreateServiceLinkedAccess", "Effect": "Allow", "Action": [ "iam:CreateServiceLinkedRole" ], "Resource": "arn:aws:iam::*:role/aws-service-role/observability.aoss.amazonaws.com/AWSServiceRoleForAmazonOpenSearchServerless", "Condition": { "StringEquals": { "iam:AWSServiceName": "observability.aoss.amazonaws.com", "aws:CalledViaFirst": "logs.amazonaws.com" } } }, { "Sid": "CloudWatchLogsCollectionRequestAccess", "Effect": "Allow", "Action": [ "aoss:CreateCollection" ], "Resource": "*", "Condition": { "StringEquals": { "aws:CalledViaFirst": "logs.amazonaws.com", "aws:RequestTag/CloudWatchOpenSearchIntegration": [ "Dashboards" ] }, "ForAllValues:StringEquals": { "aws:TagKeys": "CloudWatchOpenSearchIntegration" } } }, { "Sid": "CloudWatchLogsApplicationRequestAccess", "Effect": "Allow", "Action": [ "es:CreateApplication" ], "Resource": "*", "Condition": { "StringEquals": { "aws:CalledViaFirst": "logs.amazonaws.com", "aws:RequestTag/OpenSearchIntegration": [ "Dashboards" ] }, "ForAllValues:StringEquals": { "aws:TagKeys": "OpenSearchIntegration" } } }, { "Sid": "CloudWatchLogsCollectionResourceAccess", "Effect": "Allow", "Action": [ "aoss:DeleteCollection" ], "Resource": "*", "Condition": { "StringEquals": { "aws:CalledViaFirst": "logs.amazonaws.com", "aws:ResourceTag/CloudWatchOpenSearchIntegration": [ "Dashboards" ] } } }, { "Sid": "CloudWatchLogsApplicationResourceAccess", "Effect": "Allow", "Action": [ "es:UpdateApplication", "es:GetApplication" ], "Resource": "*", "Condition": { "StringEquals": { "aws:CalledViaFirst": "logs.amazonaws.com", "aws:ResourceTag/OpenSearchIntegration": [ "Dashboards" ] } } }, { "Sid": "CloudWatchLogsCollectionPolicyAccess", "Effect": "Allow", "Action": [ "aoss:CreateSecurityPolicy", "aoss:CreateAccessPolicy", "aoss:DeleteAccessPolicy", "aoss:DeleteSecurityPolicy", "aoss:GetAccessPolicy", "aoss:GetSecurityPolicy" ], "Resource": "*", "Condition": { "StringLike": { "aoss:collection": "cloudwatch-logs-*", "aws:CalledViaFirst": "logs.amazonaws.com" } } }, { "Sid": "CloudWatchLogsAPIAccessAll", "Effect": "Allow", "Action": [ "aoss:APIAccessAll" ], "Resource": "*", "Condition": { "StringLike": { "aoss:collection": "cloudwatch-logs-*" } } }, { "Sid": "CloudWatchLogsIndexPolicyAccess", "Effect": "Allow", "Action": [ "aoss:CreateAccessPolicy", "aoss:DeleteAccessPolicy", "aoss:GetAccessPolicy", "aoss:CreateLifecyclePolicy", "aoss:DeleteLifecyclePolicy" ], "Resource": "*", "Condition": { "StringLike": { "aoss:index": "cloudwatch-logs-*", "aws:CalledViaFirst": "logs.amazonaws.com" } } }, { "Sid": "CloudWatchLogsDQSRequestQueryAccess", "Effect": "Allow", "Action": [ "es:AddDirectQueryDataSource" ], "Resource": "arn:aws:opensearch:*:*:datasource/cloudwatch_logs_*", "Condition": { "StringEquals": { "aws:CalledViaFirst": "logs.amazonaws.com", "aws:RequestTag/CloudWatchOpenSearchIntegration": [ "Dashboards" ] }, "ForAllValues:StringEquals": { "aws:TagKeys": "CloudWatchOpenSearchIntegration" } } }, { "Sid": "CloudWatchLogsStartDirectQueryAccess", "Effect": "Allow", "Action": [ "opensearch:StartDirectQuery", "opensearch:GetDirectQuery" ], "Resource": "arn:aws:opensearch:*:*:datasource/cloudwatch_logs_*" }, { "Sid": "CloudWatchLogsDQSResourceQueryAccess", "Effect": "Allow", "Action": [ "es:GetDirectQueryDataSource", "es:DeleteDirectQueryDataSource" ], "Resource": "arn:aws:opensearch:*:*:datasource/cloudwatch_logs_*", "Condition": { "StringEquals": { "aws:CalledViaFirst": "logs.amazonaws.com", "aws:ResourceTag/CloudWatchOpenSearchIntegration": [ "Dashboards" ] } } }, { "Sid": "CloudWatchLogsPassRoleAccess", "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "*", "Condition": { "StringLike": { "iam:PassedToService": "directquery.opensearchservice.amazonaws.com", "aws:CalledViaFirst": "logs.amazonaws.com" } } }, { "Sid": "CloudWatchLogsAossTagsAccess", "Effect": "Allow", "Action": [ "aoss:TagResource" ], "Resource": "arn:aws:aoss:*:*:collection/*", "Condition": { "StringEquals": { "aws:CalledViaFirst": "logs.amazonaws.com", "aws:ResourceTag/CloudWatchOpenSearchIntegration": [ "Dashboards" ] }, "ForAllValues:StringEquals": { "aws:TagKeys": "CloudWatchOpenSearchIntegration" } } }, { "Sid": "CloudWatchLogsEsApplicationTagsAccess", "Effect": "Allow", "Action": [ "es:AddTags" ], "Resource": "arn:aws:opensearch:*:*:application/*", "Condition": { "StringEquals": { "aws:ResourceTag/OpenSearchIntegration": [ "Dashboards" ], "aws:CalledViaFirst": "logs.amazonaws.com" }, "ForAllValues:StringEquals": { "aws:TagKeys": "OpenSearchIntegration" } } }, { "Sid": "CloudWatchLogsEsDataSourceTagsAccess", "Effect": "Allow", "Action": [ "es:AddTags" ], "Resource": "arn:aws:opensearch:*:*:datasource/*", "Condition": { "StringEquals": { "aws:ResourceTag/CloudWatchOpenSearchIntegration": [ "Dashboards" ], "aws:CalledViaFirst": "logs.amazonaws.com" }, "ForAllValues:StringEquals": { "aws:TagKeys": "CloudWatchOpenSearchIntegration" } } } ] }

統合を作成する

以下のステップを使用して統合を作成します。

CloudWatch Logs を Amazon OpenSearch Service と統合するには
  1. CloudWatch コンソールの https://console.aws.amazon.com/cloudwatch/ を開いてください。

  2. 左側のナビゲーションペインで [ログのインサイト] を選択した後、[OpenSearch で分析] タブを選択します。

  3. [統合を作成する] を選択します。

  4. [統合名] に、統合の名前を入力します。

  5. (オプション) OpenSearch Service Serverless に書き込まれたデータを暗号化するには、KMS キー ARN で使用する AWS KMS キーの ARN を入力します。詳細については、「Amazon OpenSearch Service 開発者ガイド」の「保管中の暗号化」を参照してください。

  6. データ保持の場合、OpenSearch Service データインデックスを保持する時間を入力します。これにより、ダッシュボードでデータを表示できる最大期間も定義されます。データ保持期間を長くすると、検索とインデックス作成に伴う追加コストが発生します。詳細については、「OpenSearch Service Serverless の料金」を参照してください。

    最大保持期間は 30 日です。

    データ保持期間の長さは、OpenSearch Service コレクションライフサイクルポリシーの作成にも使用されます。

  7. OpenSearch コレクションに書き込む IAM ロールの場合は、新しい IAM ロールを作成するか、OpenSearch Service コレクションへの書き込みに使用する既存の IAM ロールを選択します。

    新しいロールの作成が最も簡単な方法です。ロールは必要なアクセス許可を使用して作成されます。

    注記

    ロールを作成すると、アカウント内のすべてのロググループから読み取るアクセス許可が付与されます。

    既存のロールを選択する場合は、統合に必要なアクセス許可 に記載されているアクセス許可が必要です。または、[既存のロールを使用] を選択し、[選択したロールのアクセス許可の検証] セクションで [ロールの作成] を選択します。これにより、統合に必要なアクセス許可 にリストされているアクセス許可をテンプレートとして使用、変更できます。例えば、ロググループのよりきめ細かな制御を指定する場合です。

  8. ダッシュボードを表示できる IAM ロールとユーザーの場合、提供されるログダッシュボードアクセス向けの IAM ロールと IAM ユーザーへのアクセスを許可する方法を選択します。

    • ダッシュボードへのアクセスを一部のユーザーのみに制限するには、[ダッシュボードを表示できる IAM ロールとユーザーの選択] を選択し、テキストボックスでアクセスを許可する IAM ロールと IAM ユーザーを検索して選択します。

    • ダッシュボードへのアクセス権をすべてのユーザーに付与するには、[このアカウントのすべてのロールとユーザーにダッシュボードの表示を許可] を選択します。

      重要

      ロールまたはユーザーを選択するか、すべてのユーザーを選択すると、ダッシュボードデータを保存する OpenSearch Service コレクションへのアクセスに必要なデータアクセスポリシーにのみそれらが追加されます。提供されるログダッシュボードをそれらに対して表示できるようにするには、それらのロールとユーザーにCloudWatchOpenSearchDashboardAccessマネージド IAM ポリシーも付与する必要があります。

  9. [統合を作成] を選択します。

    統合の作成には数分かかります。