AWS Builder Center: Learn, Build and Connect with builders in the AWS community
AWS Builder Center is the official home for builders on AWS. Share and read what others are working on, follow people who inspire you, explore training and workshops, and find tools to support what you're building.
如何识别在我的 AWS Organizations 下进行大量 API 调用的 AWS 账户?
我想识别在我的 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 控制面板,请完成以下步骤:
- 为您的组织创建新的 AWS CloudTrail 跟踪或修改现有跟踪,以将跟踪发布到 CloudWatch Logs。
**注意:**必须将 CloudWatch Logs 设置为 Enabled(启用)。 - 打开 CloudWatch 控制台。
**注意:**请使用您用来创建 CloudWatch Logs 的账户。 - 在导航窗格中,选择 Logs,然后选择 Contributor Insights。
- 创建 Contributor Insights 规则,然后选择 Syntax(语法)。
- 要获取每个账户发起的 API 调用次数,请在语法编辑器中输入以下代码:
要获取所有账户的全部 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" ] }
**注意:**请将 DescribeVpcEndpoints 替换为您的 API 调用,将 arn:aws:logs:us-west-2:account:log-group:aws-cloudtrail-logs-73008ace 替换为您的日志组 ARN。{ "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" ] } - 选择 Action(操作),然后选择 Add to dashboard(添加到控制面板)。
- 选择现有控制面板或创建新的控制面板。
- 选择 Save(保存)。
要查找特定时间段内的用量最高者,您还可以运行以下 CloudWatch Logs Insights 查询:
fields @timestamp, @message, @logStream, @log | filter eventName = 'DescribeVpcEndpoints' | sort @timestamp desc | stats count() by bin(1m)
**注意:**请将 DescribeVpcEndpoints 替换为您的 API 调用。
使用 CloudWatch 指标来识别用量最高者
**注意:**确保您的配置符合 Metrics Insights 配额。
最佳做法是创建 CloudWatch 警报,以在您达到 API 调用最大配额的 60% 时提醒您。
要设置 CloudWatch 指标控制面板,请完成以下步骤:
- 设置跨账户可观测性。
- 打开 CloudWatch 控制台。
- 选择 Use metrics(使用指标),然后选择 All metrics(所有指标)选项卡。
- 选择 Source(源),然后输入以下代码:
**注意:**请将 DescribeVpcEndpoints 替换为您的 API 调用,将 us-east-1 替换为您的 AWS 区域,将 225 替换为警报配额。{ "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 } ] } } - 选择 Update(更新)。
- 选择 Action(操作),然后选择 Add to dashboard(添加到控制面板)。
- 选择现有控制面板或创建新的控制面板。最佳做法是使用包含您的 CloudWatch Logs 数据的同一个控制面板。
- 选择 Save(保存)。
相关信息
- 语言
- 中文 (简体)
