スキップしてコンテンツを表示

AWS Organizations で多数の API コールを行っている AWS アカウントを特定する方法を教えてください。

所要時間2分
0

AWS Organizations で多数の API コールを行っている、トップトーカーアカウントを特定したいです。

解決策

多数の API コールを行うアカウントを特定するには、Amazon CloudWatch Logs と CloudWatch メトリクスを両方使用するのがベストプラクティスです。

次の解決策では、Amazon Virtual Private Cloud (Amazon VPC) の DescribeVpcEndpoints API を使用します。

注: Amazon Elastic Compute Cloud (Amazon EC2) は、API リクエストをアカウントレベルでスロットリングします。また、パフォーマンスを向上させるために、Amazon EC2 は組織レベルでも API リクエストをスロットリングします。

CloudWatch Logs を使用してトップトーカーを特定する

トップトーカーを特定し、特定の期間におけるすべてのアカウントの API コールの合計数を集計するには、CloudWatch Logs を使用します。CloudWatch Logs ダッシュボードを作成するには、次の手順を実行します。

  1. 組織用に新しい AWS CloudTrail 証跡を作成するか、既存の証跡を変更し、その証跡を CloudWatch Logs に発行します。
    注: CloudWatch Logs[有効] に設定する必要があります。
  2. CloudWatch コンソールを開きます。
    注: CloudWatch Logs の作成に使用したアカウントを使用してください。
  3. ナビゲーションペインで [ログ] を選択し、次に [Contributor Insights] を選択します。
  4. Contributor Insights のルールを作成し、[構文] を選択します。
  5. 各アカウントが行った API コールの数を取得するには、構文エディタに次のコードを入力します。
    {
      "AggregateOn": "Count",
      "Contribution": {
        "Filters": [
          {
            "Match": "$.eventName",
            "In": [
              "DescribeVpcEndpoints"
            ]
          }
        ],
        "Keys": [
          "$.userIdentity.accountId",
          "$.eventName"
        ]
      },
      "LogFormat": "JSON",
      "Schema": {
        "Name": "CloudWatchLogRule",
        "Version": 1
      },
      "LogGroupARNs": [
        "arn:aws:logs:us-west-2:account:log-group:aws-cloudtrail-logs-73008ace"
      ]
    }
    すべてのアカウントのすべての API コールの集計を取得するには、次のコードを入力します。
    {
      "AggregateOn": "Count",
      "Contribution": {
        "Filters": [
          {
            "Match": "$.eventName",
            "In": [
              "DescribeVpcEndpoints"
            ]
          }
        ],
        "Keys": [
          "$.eventName"
        ]
      },
      "LogFormat": "JSON",
      "Schema": {
        "Name": "CloudWatchLogRule",
        "Version": 1
      },
      "LogGroupARNs": [
        "arn:aws:logs:us-west-2:account:log-group:aws-cloudtrail-logs-73008ace"
      ]
    }
    注: DescribeVpcEndpoints を実際の API コールに、arn:aws:logs:us-west-2:account:log-group:aws-cloudtrail-logs-73008ace をロググループの ARN に置き換えます。
  6. [アクション] を選択し、[ダッシュボードに追加] を選択します。
  7. 既存のダッシュボードを選択するか、新しいダッシュボードを作成します。
  8. [保存] を選択します。

次の CloudWatch Logs Insights クエリを実行しても、特定の期間におけるトップトーカーを特定できます。

fields @timestamp, @message, @logStream, @log
| filter eventName = 'DescribeVpcEndpoints'
| sort @timestamp desc
| stats count() by bin(1m)

注: DescribeVpcEndpoints を実際の API コールに置き換えます。

CloudWatch メトリクスを使用してトップトーカーを特定する

注: 設定が Metrics Insightsのクォータに準拠していることを確認してください。

API コールの最大クォータの 60% に達したときにアラートを発生させる CloudWatch アラームを作成するのがベストプラクティスです。

CloudWatch メトリクスダッシュボードを設定するには、次の手順を実行します。

  1. クロスアカウントオブザーバビリティを設定します。
  2. CloudWatch コンソールを開きます。
  3. [メトリクスを使用] を選択し、次に [すべてのメトリクス] タブを選択します。
  4. [ソース] を選択し、次のコードを入力します。
    {
      "metrics": [
        [
          {
            "expression": "SELECT SUM(CallCount) FROM SCHEMA(\"AWS/Usage\", Class,Resource,Service,Type) WHERE Resource = 'DescribeVpcEndpoints'",
            "label": "Query1",
            "id": "q1",
            "period": 60
          }
        ]
      ],
      "view": "timeSeries",
      "stacked": false,
      "region": "us-east-1",
      "stat": "Average",
      "period": 60,
      "annotations": {
        "horizontal": [
          {
            "label": "Org throttle",
            "value": 225
          }
        ]
      }
    }
    注: DescribeVpcEndpoints を実際の API コールに、us-east-1 をお使いの AWS リージョンに、225 をお使いのアラームのクォータに置き換えます。
  5. [更新] を選択します。
  6. [アクション] を選択し、[ダッシュボードに追加] を選択します。
  7. 既存のダッシュボードを選択するか、新しいダッシュボードを作成します。CloudWatch Logs のデータがあるのと同じダッシュボードを使用することがベストプラクティスです。
  8. [保存] を選択します。

関連情報

Amazon CloudWatch で AWS CloudTrail を分析する

AWS PrivateLink のクォータ

AWS公式更新しました 2年前
コメントはありません

関連するコンテンツ