web-dev-qa-db-fra.com

Moyen rapide d'obtenir le numéro de compte AWS à partir des outils AWS CLI?

A la recherche d'un moyen rapide d'extraire mon numéro de compte, j'avais initialement pensé à utiliser aws iam get-account-authorization-details --max-items 1 mais cette façon de procéder pose plusieurs problèmes. Existe-t-il un moyen de ne pas croiser les origines du compte?

80
ehime

Vous pouvez obtenir le numéro de compte à partir de la sous-commande Secure Token Serviceget-caller-identity en utilisant les éléments suivants:

aws sts get-caller-identity --output text --query 'Account'

178
Taras Alenin

D'après mon réponse associée pour l'AWS PowerShell CLI , votre ID de compte fait partie de l'arn des ressources que vous créez ... et de celles qui sont automatiquement créées. Certaines ressources vous répertorieront également en tant que OwnerId.

Le groupe de sécurité par défaut est automatiquement créé pour vous dans le VPC par défaut de chaque région en tant que groupe de sécurité réservé. De la documentation :

Vous ne pouvez pas supprimer un groupe de sécurité par défaut. Si vous essayez de supprimer le groupe de sécurité par défaut EC2-Classic, vous obtiendrez le message suivant: Client.InvalidGroup.Reserved: le groupe de sécurité 'par défaut' est réservé. Si vous essayez de supprimer un groupe de sécurité par défaut VPC, vous obtiendrez le message suivant: Client.CannotDelete: le groupe spécifié: "sg-51530134" nom: "default" ne peut pas être supprimé par un utilisateur.

Cela en fait un candidat fiable pour récupérer notre ID de compte, tant que vous êtes dans EC2 classic ou que vous avez un VPC par défaut (* voir les cas Edge si vous n'en avez pas).

Exemple:

aws ec2 describe-security-groups \
    --group-names 'Default' \
    --query 'SecurityGroups[0].OwnerId' \
    --output text

Ceci utilise --query pour filtrer la sortie en "ID de propriétaire" pour le premier résultat de cette requête, puis utilise --output pour afficher votre identifiant de compte en texte clair:

123456781234

Cas marginaux:

(Merci @kenchew) Notez que si vous avez supprimé votre VPC par défaut dans une région donnée, ce groupe de sécurité n'existe plus et vous devez utiliser l'une de ces solutions alternatives:

Lectures supplémentaires:

31
Anthony Neace

Si vous exécutez sur un serveur qui exécute un rôle supposé, vous ne pouvez pas appeler aws sts get-caller-identity. Aussi, avec describe-security-groups vous ne pouvez pas toujours utiliser le --group-names filtre (cela ne fonctionne pas si vous n’avez pas de VPC par défaut), choisissez donc le premier groupe de sécurité. J'ai trouvé que c'était le plus fiable, quel que soit le type d'authentification utilisé ou le type de VPC utilisé.

aws ec2 describe-security-groups --query 'SecurityGroups[0].OwnerId' --output text
9
Philip Kirkland

Ma méthode préférée est d'utiliser aws iam get-user [--profile <profile>] puisque vous n’avez besoin que du rôle de libre-service IAM pour que cela fonctionne.

1
user2976775