Respostas:
Você pode obter o número da conta no subcomando Secure Token Serviceget-caller-identity
usando o seguinte:
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'
peça.
jq
envolvimento ou a instalação em um sistema. Alguns servidores proíbem instalações de pacotes irrelevantes devido à segurança. Você poderia fazer algo assim, aws sts get-caller-identity --output json |grep Account |awk -F ': "' '{print$2}' |sed 's/\".*//'
mas é um pouco chato e você também pode fazer --query 'Account' --output text
nesse ponto.
De minha resposta relacionada ao AWS PowerShell CLI , o ID da sua conta faz parte do Arn de recursos que você cria ... e aqueles que são criados automaticamente para você. Alguns recursos também irão listá-lo como um OwnerId.
O grupo de segurança padrão é criado automaticamente para você no VPC padrão de cada região como um grupo de segurança reservado. Da documentação :
Você não pode excluir um grupo de segurança padrão. Se você tentar excluir o grupo de segurança padrão EC2-Classic, receberá o seguinte erro: Client.InvalidGroup.Reserved: O grupo de segurança 'default' está reservado. Se você tentar excluir um grupo de segurança padrão VPC, receberá o seguinte erro: Client.CannotDelete: o grupo especificado: "sg-51530134" nome: "padrão" não pode ser excluído por um usuário.
Isso o torna um candidato confiável para recuperar nosso ID de conta, contanto que você esteja no EC2 classic ou tenha um VPC padrão (* consulte os casos extremos, se não tiver).
Exemplo:
aws ec2 describe-security-groups \
--group-names 'Default' \
--query 'SecurityGroups[0].OwnerId' \
--output text
Isso é usado --query
para filtrar a saída para o "ID do proprietário" para o primeiro resultado desta solicitação e, em seguida, usa --output
para produzir o ID da sua conta como texto simples:
123456781234
Casos extremos:
(Obrigado @kenchew) Observe que se você excluiu seu VPC padrão em uma determinada região, este grupo de segurança não existe mais e você deve usar uma destas soluções alternativas:
Leitura adicional:
Se você estiver executando em um servidor que está executando com uma função assumida, você não pode chamar aws sts get-caller-identity
. Além disso, describe-security-groups
nem sempre com você pode usar o --group-names
filtro (ele não funciona se você não tiver um VPC padrão), então apenas escolha o primeiro grupo de segurança. Eu descobri que este é o mais confiável, independentemente do tipo de autenticação que você usa ou que tipo de VPC você tem.
aws ec2 describe-security-groups --query 'SecurityGroups[0].OwnerId' --output text
Meu método favorito é usar, aws iam get-user [--profile <profile>]
pois você só precisa da função de autoatendimento do IAM para que isso funcione.