我本想使用aws iam get-account-authorization-details --max-items 1快速获取我的账号,但这种方法存在几个问题。有没有一种不会跨越账户来源的方式来完成这个操作?
我本想使用aws iam get-account-authorization-details --max-items 1快速获取我的账号,但这种方法存在几个问题。有没有一种不会跨越账户来源的方式来完成这个操作?
您可以通过 安全令牌服务 子命令 get-caller-identity 获取帐户号码,方法如下:
aws sts get-caller-identity --query Account --output text
根据我的 相关回答中提到的AWS PowerShell CLI,您的账户ID是您创建的资源和自动为您创建的资源的ARN的一部分。有些资源还将您列为OwnerId。
默认安全组是在每个区域的默认VPC中自动为您创建的保留安全组。来自文档:
您无法删除默认安全组。如果尝试删除EC2-Classic默认安全组,则会收到以下错误提示:Client.InvalidGroup.Reserved: The security group 'default' is reserved. 如果尝试删除VPC默认安全组,则会收到以下错误提示:Client.CannotDelete: the specified group: "sg-51530134" name: "default" cannot be deleted by a user.
这使其成为一个可靠的候选项来检索我们的账户ID,只要您在EC2 Classic中或者拥有默认VPC(如果没有,请查看特殊情况)。
例如:
aws ec2 describe-security-groups \
--group-names 'Default' \
--query 'SecurityGroups[0].OwnerId' \
--output text
这里使用--query将输出过滤到来自此请求的第一个结果的“所有者 ID”,然后使用--output将您的帐户 ID 作为纯文本输出:
123456781234
特殊情况:
(感谢 @kenchew) 请注意,如果您在某个区域中删除了默认的 VPC,则此安全组不再存在,您应该使用以下一种替代方案之一:
进一步阅读:
如果您正在运行在一个扮演角色的服务器上,您无法调用 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自助服务角色就可以使用此方法。
aws sts get-caller-identity|jq -r ".Account"。 - BMWaws sts get-caller-identity --output json | jq '.Account' | sed 's/\"//g'- Asim--query 'Account'部分时它可以工作。 - coliveirajq。由于安全原因,一些服务器禁止安装外部软件包。您可以像这样做aws sts get-caller-identity --output json |grep Account |awk -F ': "' '{print$2}' |sed 's/\".*//'但这有点烦人,最好在那时使用--query 'Account' --output text。 - ehime