跳到主要内容
翻译页面

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

如何让 StackQL 通过 AWS 的身份验证

StackQL 使用标准的 AWS 凭据环境变量向 AWS 进行身份验证。在启动 StackQL shell、exec 命令、服务器或 MCP 服务器之前设置这些变量;无需配置文件。

步骤​

  1. 创建或确定一个 IAM 主体(用户或角色),使其具有查询所需的权限。对于只读查询,ReadOnlyAccess 托管策略或范围更窄的同等策略即可满足需要。

  2. 将凭据导出为环境变量:

export AWS_ACCESS_KEY_ID=YOURACCESSKEYID
export AWS_SECRET_ACCESS_KEY=YOURSECRETACCESSKEY

对于临时凭据(通过 sts assume-role 担任的角色,或会自动设置这些变量的 AWS CloudShell 会话),还需导出会话令牌:

export AWS_SESSION_TOKEN=YOURSESSIONTOKEN
  1. 拉取 AWS Provider(仅首次使用时需要):
REGISTRY PULL aws;
  1. 通过查询进行验证:
SELECT instance_id, instance_type
FROM aws.ec2.instances
WHERE region = 'us-east-1';

成功返回结果集即表明身份验证成功。请注意,AWS 查询要求在 WHERE 子句中提供 region 谓词,这是路由参数,而不是凭据设置。

变量的适用范围​

这些环境变量在 StackQL 的每种执行模式下都同样适用:

  • 交互式 shell:stackql shell
  • 批处理:stackql exec "..."
  • 服务器模式:stackql srv(PostgreSQL 线协议)
  • MCP 服务器:stackql mcp,或通过 MCP 客户端配置(例如 claude_desktop_config.json)的 env 块

在 CI 系统中,应从平台的机密存储获取这些变量,而不是将其硬编码。元数据操作(SHOW、DESCRIBE、REGISTRY)无需凭据即可运行;只有数据操作(SELECT、INSERT、UPDATE、DELETE、EXEC)需要经过身份验证的会话。