跳到主要内容
翻译页面

本页面由 AI 辅助从英文翻译而来。如两者存在差异,以英文版本为准。

如何使用 StackQL 查询 AWS EC2 实例

EC2 实例以表 aws.ec2.instances 的形式公开。EC2 DescribeInstances API 返回的任何字段都是可查询的列;由于该 API 是区域级 API,region 是必需的 WHERE 谓词。

前提条件​

基本查询​

列出单个区域中的实例及其类型和地址信息:

SELECT
instance_id,
instance_type,
private_ip_address,
public_ip_address,
launch_time
FROM aws.ec2.instances
WHERE region = 'us-east-1';

先发现 schema​

2 条元数据命令让资源具备自描述能力,无需查阅 AWS 文档:

DESCRIBE aws.ec2.instances;
SHOW METHODS IN aws.ec2.instances;

DESCRIBE 列出可用的列。SHOW METHODS 列出各项操作(describe SELECT 方法、terminate DELETE 方法,以及 start、stop 和 reboot 等 EXEC 生命周期方法)及每项操作的必需参数。这些命令无需凭据即可运行。

多区域聚合​

region IN (...) 谓词会为每个区域并行运行一次 API 调用并聚合结果,这样区域级服务就可以像全局表一样查询:

SELECT region, instance_type, COUNT(*) as num_instances
FROM aws.ec2.instances
WHERE region IN ('us-east-1','us-west-2','eu-west-1','ap-southeast-2')
GROUP BY region, instance_type;

这种模式是账号范围的清单和漂移基线的基础:结果是实时的答案,而不是快照。

按属性过滤​

标准 SQL 谓词适用于任何列。例如,暴露在互联网上的实例:

SELECT instance_id, instance_type, public_ip_address
FROM aws.ec2.instances
WHERE region = 'us-east-1'
AND public_ip_address IS NOT NULL;

state 和 tag_set 等结构化列返回 JSON,可以使用所配置 SQL 后端的 JSON 函数将其展开。