从cli工具获取AWS账号的快速方法?
寻找一个快速的方法来拉我的帐号,我原本以为使用aws iam get-account-authorization-details --max-items 1
但这样做有几个问题。 有没有办法可以这样做,可能不会交叉帐户起源?
通过“安全令牌服务”使用以下命令。
aws sts get-caller-identity --output text --query 'Account'
从AWS PowerShell CLI的相关答案中 ,您的帐户ID是您创build的资源的一部分…以及为您自动创build的资源。 某些资源也会将您列为OwnerId。
默认安全组是在每个区域的默认VPC中为您自动创build的保留安全组。 从文档 :
您不能删除默认安全组。 如果您尝试删除EC2-Classic默认安全组,则会出现以下错误:Client.InvalidGroup.Reserved:安全组“default”是保留的。 如果您尝试删除VPC默认安全组,则会出现以下错误:Client.CannotDelete:指定的组:“sg-51530134”名称:“default”不能被用户删除。
这使得它成为检索我们帐户ID的可靠候选者,只要您使用的是EC2 classic或具有默认的VPC(*如果您没有,请参阅边缘案例)。
例:
aws ec2 describe-security-groups \ --group-names 'Default' \ --query 'SecurityGroups[0].OwnerId' \ --output text
这将使用--query
将输出过滤为“owner ID”,以获得来自此请求的第一个结果,然后使用--output
以明文forms输出您的帐户ID:
123456781234
边缘情况:
(Thanks @kenchew)请注意,如果您已经删除了给定区域中的默认VPC,则此安全组不再存在,您应该使用以下替代解决scheme之一:
- 查询STS get-caller-identity,per @Taras
- 使用@Phillip返回的第一个安全组
进一步阅读:
- AWS EC2文档:默认安全组
- AWS CLI文档:aws ec2 describe-security-groups
- 控制AWS命令行界面的命令输出
如果您运行在假定angular色的服务器上,则无法调用aws sts get-caller-identity
。 而且,对于describe-security-groups
你不能总是使用--group-names
filter(如果你没有默认的VPC,它不会工作),所以select第一个安全组。 我发现这是最可靠的,无论使用什么types的身份validation或您拥有哪种VPC。
aws ec2 describe-security-groups --query 'SecurityGroups[0].OwnerId' --output text