从 AWS CLI 工具获取 AWS 帐号的快速方法?

寻找一个快速的方法来拉我的帐户号码,我最初想使用 aws iam get-account-authorization-details --max-items 1,但有几个问题这样做。有没有一种方法可以做到这一点,可能不交叉帐户的来源?

61366 次浏览

从我的 关于 AWS PowerShell CLI 的相关答案,您的帐户 ID 是您创建的资源 Arn 的一部分... 那些是自动为您创建的。有些资源还会将您列为 OwnerId。

默认安全组将在每个区域的默认 VPC 中自动创建为一个保留安全组。来自 文件:

不能删除默认安全组。如果尝试删除 EC2-Classic 默认安全组,将得到以下错误: Client。无效组。保留: 保留安全组“ default”。如果尝试删除 VPC 默认安全组,将得到以下错误: Client。CannotDelete: 用户不能删除指定的组: “ sg-51530134”名称: “ default”。

这使它成为检索我们帐户 ID 的可靠候选者,只要你是 EC2经典或有一个默认的 VPC (* 参见边缘情况下,如果你没有)。

例如:

aws ec2 describe-security-groups \
--group-names 'Default' \
--query 'SecurityGroups[0].OwnerId' \
--output text

这使用 --query将输出过滤到该请求的第一个结果的“ owner ID”,然后使用 --output将帐户 ID 作为明文输出:

123456781234

边缘个案:

注意,如果您已经删除了给定区域中的默认 VPC,那么这个安全组将不再存在,您应该使用以下替代解决方案之一:

进一步阅读:

您可以使用以下命令从 安全令牌服务子命令 get-caller-identity获得帐号:

aws sts get-caller-identity --query Account --output text

如果您正在使用假定角色运行的服务器上运行,则不能调用 aws sts get-caller-identity。另外,对于 describe-security-groups,您不能总是使用 --group-names过滤器(如果没有默认的 VPC,它就不能工作) ,所以只需选择第一个安全组。我发现这是最可靠的,无论您使用什么类型的身份验证或什么类型的 VPC。

aws ec2 describe-security-groups --query 'SecurityGroups[0].OwnerId' --output text

我最喜欢的方法是使用 aws iam get-user [--profile <profile>],因为您只需要 IAM 自助服务角色就可以了。