从 AWS CLI 工具快速获取 AWS 帐号的方法?
Quick way to get AWS Account number from the AWS CLI tools?
寻找一种快速获取我的帐号的方法,我最初想使用 aws iam get-account-authorization-details --max-items 1
,但这样做有几个问题。有没有一种可能不会跨帐户来源的方法?
来自我的 ,您的帐户 ID 是您创建的资源 Arn 的一部分......以及那些自动为您创建的资源。某些资源还会将您列为 OwnerId。
Default Security Group是在每个区域的默认VPC中自动为您创建的,作为预留安全组。来自 documentation:
You can't delete a default security group. If you try to delete the EC2-Classic default security group, you'll get the following error: Client.InvalidGroup.Reserved: The security group 'default' is reserved. If you try to delete a VPC default security group, you'll get the following error: Client.CannotDelete: the specified group: "sg-51530134" name: "default" cannot be deleted by a user.
只要您使用的是 EC2 classic 或具有默认 VPC(*如果您没有,请参阅边缘情况),这使它成为检索我们帐户 ID 的可靠候选者。
示例:
aws ec2 describe-security-groups \
--group-names 'Default' \
--query 'SecurityGroups[0].OwnerId' \
--output text
对于此请求的第一个结果,这使用 --query
将输出过滤到 "owner ID",然后使用 --output
将您的帐户 ID 输出为纯文本:
123456781234
边缘情况:
(感谢@kenchew)请注意,如果您删除了给定区域中的默认 VPC,则该安全组将不再存在,您应该使用以下替代解决方案之一:
进一步阅读:
您可以使用以下方法从 Secure Token Service subcommand 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 自助服务角色即可。
寻找一种快速获取我的帐号的方法,我最初想使用 aws iam get-account-authorization-details --max-items 1
,但这样做有几个问题。有没有一种可能不会跨帐户来源的方法?
来自我的
Default Security Group是在每个区域的默认VPC中自动为您创建的,作为预留安全组。来自 documentation:
You can't delete a default security group. If you try to delete the EC2-Classic default security group, you'll get the following error: Client.InvalidGroup.Reserved: The security group 'default' is reserved. If you try to delete a VPC default security group, you'll get the following error: Client.CannotDelete: the specified group: "sg-51530134" name: "default" cannot be deleted by a user.
只要您使用的是 EC2 classic 或具有默认 VPC(*如果您没有,请参阅边缘情况),这使它成为检索我们帐户 ID 的可靠候选者。
示例:
aws ec2 describe-security-groups \
--group-names 'Default' \
--query 'SecurityGroups[0].OwnerId' \
--output text
对于此请求的第一个结果,这使用 --query
将输出过滤到 "owner ID",然后使用 --output
将您的帐户 ID 输出为纯文本:
123456781234
边缘情况:
(感谢@kenchew)请注意,如果您删除了给定区域中的默认 VPC,则该安全组将不再存在,您应该使用以下替代解决方案之一:
进一步阅读:
您可以使用以下方法从 Secure Token Service subcommand 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 自助服务角色即可。