Answers:
您可以使用以下命令从“ 安全令牌服务”子命令中获取帐号get-caller-identity
:
aws sts get-caller-identity --query Account --output text
aws sts get-caller-identity|jq -r ".Account"
aws sts get-caller-identity --output json | jq '.Account' | sed 's/\"//g'
--query 'Account'
零件时,它会起作用。
jq
参与或安装在系统上。由于安全性,某些服务器禁止安装无关的软件包。您可以执行类似的操作,aws sts get-caller-identity --output json |grep Account |awk -F ': "' '{print$2}' |sed 's/\".*//'
但是有点烦人,您也可以这样做--query 'Account' --output text
。
根据我对AWS PowerShell CLI的相关回答,您的帐户ID是您创建的资源Arn和为您自动创建的资源的一部分。一些资源还将您列为OwnerId。
将在每个区域的默认VPC中自动为您创建默认安全组,作为保留的安全组。从文档中:
您无法删除默认的安全组。如果尝试删除EC2-Classic默认安全组,则会收到以下错误:Client.InvalidGroup.Reserved:安全组“默认”已保留。如果尝试删除VPC默认安全组,则会出现以下错误:Client.CannotDelete:指定的组:“ sg-51530134”名称:“默认”不能被用户删除。
只要您使用的是EC2经典版或具有默认VPC(*如果没有,请参阅边际情况),这使其成为检索我们的帐户ID的可靠候选人。
例:
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