有没有一种简单的方法可以从实例中获取 OpsWorks id?

Is there a simple way to get an OpsWorks id from an instance?

由于许多 OpsWorks API 都采用 OpsWorks ID(不同于 EC2 实例 ID),因此似乎应该有一种获取 ID 的简单方法。有一个 opswork-agent-cli stack_state 命令 returns 包含 ID 的 JSON blob,但这仍然需要解析,我无法确定实例上可以使用哪些工具。使用 shell 命令从 JSON 中解析出 id 相当容易,但它们感觉像是一个丑陋的 hack。是否有任何我遗漏的命令或其他方法让实例报告其 ID?

我想你必须解析它。

您可以使用 jq 来解析 JSON 数据,就像阅读 EC2 instance metadata. jq package is included in AWS Linux AMIs (see available packages 时通常所做的那样)。

对于你的情况,尝试 opswork-agent-cli stack_state | jq '.stack.stack_id' .